AppSheetのアプリはCloud Identity Freeから使えるのか?
ふと疑問に思い、テストしてみたくなったのが「Google Workspaceのアカウントではなく、Cloud Identity FreeアカウントからAppSheetのアプリは使えるのか?」というテスト。このテストをするにあたっては他にも検証を要するものがありました。
結論から言えば「普通にアプリを使うことが可能」ということ。以下に検証内容と結果についてまとめてみました。
目次
検証項目
概要
Google Workspace Business Standardの環境下で、作成者である自分自身はGWSのライセンスを割り当てています。一方で例えば外部の委託の人に参加してほしいけれど、フルのGWSライセンス割り当てるのはコスト的にちょっと・・・というシーンは多々あると思います。
いっぽうで、Cloud Identity Freeには制限があり、「共有ドライブのスプシに対しては閲覧権限しか与えることが出来ない」という点。さて、この時、いくつかの検証項目が発生します。これらについてテストを行いました。
テスト項目
このケースの場合、Cloud Identity Freeにある制限もあるため以下の項目のテストが必要です。
- そもそも共有ドライブにあるシートに対してAppSheetアプリを通じて書き込みが出来るのか?
- 共有ドライブに対してCloud Identityアカウントは追加が必要なのか?
- 共有ドライブに権限が無い状態だとどうなってしまうのか?
- AppSheetの共有にCIFアカウントをUse App権限で追加出来るのか?
前述の通り、CIFのライセンスでは共有ドライブのシートに対して書き込みは出来ません。閲覧のみとなります。通常であれば書き込みは出来ません。また、その場合、共有ドライブのメンバーとしてCIFライセンスのユーザを追加して置かなければシートにアクセスすることすら出来ません。
この状態での検証です。
検証してみた結果
AppSheetにCIFユーザを追加
AppSheetの共有にCIFユーザのIDであるメアドを入れて、Use Appにて権限を追加は問題なく出来ました。しかし、Cloud Identity Freeはメールボックスは持っていないので、当然招待メールは送れません。
追加が出来るので、実際にCIFのアカウントでログインしてBrowser LinkのURLにアクセスしてみるとアプリを問題なく開くことは出来ました。
図:CIFユーザにUse Appで共有追加
共有ドライブ上のシートからアプリ作成
共有ドライブ上にAppSheetのデータ保存先となるスプレッドシートを用意して、共有ドライブのメンバーとしてCIFのアカウントを追加しています。この場合、スプレッドシートそのものに対しては、CIFアカウントのユーザは「閲覧権限」のみとなります。
この状態で、Google Workspaceアカウントからはスプシ上からアプリを作成は可能か?といったら問題なく作成可能です。CIFユーザは当然閲覧権限しかないので作成は出来ません。
図:シート自体は閲覧のみとなる
アプリ上から書き込みは出来るのか?
さて、今回のテーマの一番の肝である「AppSheetのアプリ上からCIFライセンスのユーザは書き込みが出来るのか?」なのですが、実際にCIFユーザでアプリを開いて、Addにてレコードを追加してみました。
結論は「全く問題なく書き込みが可能」でした。共有ドライブの権限に関わらず読み書きができるということは、別の人の権限で動いてることになります。
※もともとCIFってGAS上でメールは送信できちゃうんです。メールボックス持っていないのに。ですが、AppSheetからの連携の場合は後述のようにアプリをデプロイした人の権限でGASが発火するようになっているみたい。
図:書き込みも問題なく可能
共有ドライブから権限を削除してしまった場合
さて、前述の状態でAppSheetのアプリ上から読み書きが可能ということはわかりました。しかしそうなると、スプシに対して一体誰が書き込みをしてるのか?となりますが、これは「AppSheetのアプリをデプロイした人が書き込んでるのか?」ことになります。スプシの履歴にもきっちり残っています。
となると、そもそも共有ドライブのメンバーとしてCIFのユーザを追加しなくてもアプリを介して読み書き出来るのでは?ということになります。実際に共有ドライブからCIFユーザを削除して自分のみとし、再度書き込みをしてみました。
結論としては「問題なく読み書き可能」となりました。
故に共有ドライブのメンバー権限云々は全く関係なく、AppSheetだけ見た場合にはそのアプリの利用や読み書きについては、AppSheet上での共有追加は必要でも、シートそのものを共有する必要性は一切ない(GASのウェブアプリ同様にデプロイした人間の権限で代理で動作してる)とうことになります。
業務委託の人にはCIFでライセンスを与えて、様々な処理についてはAppSheetでアプリを用意しそちらで作業をしてもらう。といったことが可能になるため、フルでGoogle Workspaceライセンスを付与する必要がなくなるということがより実現可能になります。
GAS連携はどうなってしまうのか?
さて、最終的に気になるのがAppSheetのAutomation機能を利用して、更新時などにGASを発火させて連携させる手法を使った場合、対象のスタンドアローンコンテナに対するアクセス権限や、そもそもその場合動作する権限は誰の権限で動くのか?などを調べてみました。
スタンドアローンコンテナも同じ共有ドライブ上に配置し連携させています。その場合のGASのコードは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function mailman() { //メール本文を構築する var body = "お疲れ様です\n" + "今日は、パッションフルーツ専用培養土を開発しました。\n\n" //メールを送信する MailApp.sendEmail({ to: "ここに送信先メールアドレス", subject: '新開発:パッション専用培養土について', name:"肥料開発部", body:body, }); } |
- CIFユーザに対して共有ドライブにアクセス権限を与えていません。
- GASの作成はAppSheetの作成者と同じで1度認証はしています。但し、CIFユーザはスタンドアローンコンテナそのものにアクセス出来ません。
さて、検証した結果ですが「GAS連携もバッチリ動くし、メールの送信者はAppSheetの作者のアカウントから送信される」ということがわかりました。故に返信されたくなければ、noReplyなどで指定しておくと良いでしょう。つまり、ウェブアプリとしてデプロイしてるわけじゃなくても、GASの実行についてもAppSheetの作成者の権限で代理しているということになります。
アプリ作成者が特権管理者の場合、Directory APIなどの管理者権限を要するAPIでも代理で発動させることが可能ということになります。これまでのGASの実行権限と異なるので注意が必要ですね。
※ウェブアプリケーションの場合は作成者の権限でデプロイさせればAppSheetからのアクセスで読み書きは代理で可能です。ウェブアプリのURLに対してリクエストを投げるような構築をAppSheet側で行う必要があります。
図:普通にGAS連携させるだけ
実行者を変更したい
さて、そうなると逆にデプロイした人の権限ではなく、アクセスしてきてるユーザの権限で動かしたいという要望が出てきます。そのような設定があるのか?といったら、こちらのドキュメントに記載がありますが、各テーブル単位でアクセスしてきてるユーザで実行することが出来るようになります。但しその場合、スプレッドシートであるならばスプシ本体にアクセス権限がないと実行できませんので要注意。
- AppSheetのアプリの開発ページを開く
- 左サイドバーからSecurityをクリックする
- 次に、Security Filterをクリックする
- アプリに連結してるテーブル一覧が出てくるので、各テーブルをクリックする
- Access Modeというのがあり、デフォルトはas app creatorとなっており、これがデプロイした人の権限で動かす場合。
- これをas app userに変更し、右上のSAVEをクリックして保存する
これでアプリの対象のテーブルについてはユーザの権限で動作するようになります。これを他のテーブルでも行います。
図:ユーザの権限で動くようにする場所
アプリの作成について
そうなると気になるのが、AppSheetでアプリ作成は出来るのか?という点。GWSライセンスを持ってる自分自身はCoreライセンスとして利用することが可能なので、組織内で共有したり作成が普通に行えます。
一方でCIFライセンスユーザがAppSheetのアプリについては
- アプリを作成すること自体は可能
- ただしライセンス形態はCoreライセンスではなく、ノーマルのGoogleアカウント同様のFreeプランとなる
- よって、ドメイン内の他のユーザとは扱いが異なる
ということになります。つまりテナントの制御下には無い状態に等しいので、CIFユーザに対してはテナント側でアプリ作成については組織部門で分けそちらに所属させて、アプリの機能としてオフにしておくと良いでしょう。この場合、CIFユーザがAppsheet.comにログインすると以下のようなメッセージがでてアクセス拒否されます。(但し、Browser Linkからのアプリの利用も同様に拒否されてしまいます)
1 |
{"title":"An error occured: Jeenee.DataTypes.ServiceDisabledException","status":403,"detail":"ServiceDisabledViaWorkspace","traceId":""} |
図:フリープランの扱いになる
図:組織部門でオフにすることは可能