Google CloudのIAM設定のロールにある「参照者」って何だ?
「閲覧者」と何が違うんだろう。
本記事では、「参照者」ロール(roles/browser)にフォーカスを当てて、このロールを付与すると何ができて何ができないのか、どんなシーンで使うのかなど、詳しく解説します。公式ドキュメントを読んでもピンと来ない方のために、なるべく具体的に説明しています。
「参照者」ロールとは
「参照者」ロール(roles/browser)の説明を一言で説明すると、下記のようになります。しかしこれではピンと来ないかもしれませんので、次項で具体的にできること・できないことを解説します。
フォルダ、組織、許可ポリシーなど、プロジェクトの階層を参照するための読み取りアクセス権。このロールには、プロジェクトのリソースを表示する権限は含まれていません。
Google Cloud 公式ドキュメント 「ロールについて」 ブラウザ(roles/browser)の説明より引用
ピンと来ないついでに、このロールには次の権限が含まれています。
- resourcemanager.folders.get
- resourcemanager.folders.list
- resourcemanager.organizations.get
- resourcemanager.projects.getIamPolicy
- resourcemanager.projects.get
- resourcemanager.projects.list
「参照者」ロールのできること・できないこと
ロールの付与対象として、プロジェクト・組織・フォルダがあります。それぞれに「参照者」ロールを付与した場合に、できることやできないことを以下に解説します。
プロジェクトに付与した場合
「参照者」ロールをプロジェクトに付与した場合、そのプロジェクトの名前やIAMポリシーのみが参照できます。
下の画面は、「参照者」ロールのみを付与したアカウントでCloud Consoleにアクセスした場合の例です。
ダッシュボード画面では、上の赤枠部分のようにプロジェクト名やプロジェクト番号、プロジェクトIDが表示されています。一方でApp EngineやCompute Engine、お支払い(利用料)などの項目は「表示する権限がありません」と表示されています。
IAMポリシーの参照も可能です。下のように「IAMと管理」>「IAM」の画面を開くと、どのユーザー(プリンシパル)がどの権限を持っているかが確認できます。ただし権限の追加や変更はできません。
プロジェクト内の各リソースにはアクセスできません。例えば Cloud Storageのバケットを表示しようとすると、下のように権限不足のため拒否されます(どんな名前のバケットがあるのかも分かりません)。Compute EngineやBigQueryなどの他のリソースでも同様です。
組織に付与した場合
Google Cloudを組織で管理している場合、その組織に対して「参照者」ロールを付与すると、組織内に存在するフォルダ・プロジェクトの名前や階層構造が表示できるようになります。
下図は階層構造の例です。この図の「Folders」や「Projects」の中に何があるのかが表示できます。もちろん表示だけで、変更はできません。
また、組織の名前が参照できます。それって当然じゃないの、と思うかもしれませんが、Google Cloudでは組織に対する権限を持っていないと「組織なし」(No organization)と表示されます。
このとき組織に対して「参照者」ロールを付与すると、例えば「example.com」のような組織名が表示できるようになります。
組織内の各プロジェクトに対しては、前項「プロジェクトに付与した場合」同様のことができます。組織内のプロジェクト名やIAMポリシーは表示できますが、各リソースにはアクセスできません。上の図で言えば「Resources」の中は参照できないイメージです。
フォルダに付与した場合
「参照者」ロールを特定のフォルダに付与した場合、そのフォルダ配下のサブフォルダ・プロジェクトの名前や階層構造が表示できるようになります。組織に付与した場合は組織内の階層がすべて表示できるのに対して、フォルダに付与した場合はそのフォルダから下の階層のみ表示できます。もちろん表示だけで、変更することはできません。また、組織名は表示できません。
また、付与したフォルダ名が表示できるようになります。フォルダに対する権限がないと、フォルダの存在を知ることができません。「参照者」ロールをフォルダに付与することで、そのフォルダ名が表示されるようになります。
フォルダ配下の各プロジェクトに対しては、前項「プロジェクトに付与した場合」同様のことができます。フォルダ配下のプロジェクト名やIAMポリシーは表示できますが、各リソースにはアクセスできません。
「参照者」ロールと「閲覧者」ロールの違い
「閲覧者」(roles/viewer)という名前が似たロールがありますが、これは別物です。
「閲覧者」ロールは、プロジェクト内のほぼすべてのリソースやデータに対して、参照のみ可能です(追加・変更は不可)。例えば、Compute EngineのVMインスタンスの一覧を表示したり、Cloud Storage内のデータを参照したりすることができます。一方で、組織名の表示や、フォルダやプロジェクトの階層構造の表示はできません。
「参照者」と「閲覧者」の違いを大まかにまとめると、下表のようになります。
操作 | 「参照者」ロール | 「閲覧者」ロール |
---|---|---|
組織名の表示 ※組織に対してロールを付与した場合 | 〇可能 | ×不可 |
階層構造の表示 (フォルダ名・プロジェクト名) ※組織やフォルダに対してロールを付与した場合 | 〇可能 | ×不可 |
プロジェクトの名前・番号・IDの表示 | 〇可能 | 〇可能 |
プロジェクトのIAMポリシーの表示 | 〇可能 | 〇可能 |
プロジェクトの各リソース・データの読み取り | ×不可 | 〇可能 |
プロジェクトの各リソース・データの追加・変更 | ×不可 | ×不可 |
「参照者」ロールのユースケース
前述したようにGoogle Cloudでは組織に対する権限がないと「組織なし」と表示されますし、フォルダに対する権限がないとフォルダの存在が分かりません。非管理者ユーザーであっても、それらをある程度把握する必要があるインフラ(SRE)エンジニアや監査の役割をもったユーザーなどにとっては、不都合なケースがあると思います。
そのようなケースで、組織(またはフォルダ)に対して「参照者」ロールを付与することで、各プロジェクトへのアクセスは制限しつつ、組織名や階層構造を表示させることができます。各リソースやデータにアクセスする必要があるプロジェクトに対しては、プロジェクト個別に必要なロールを付与します。
注意すべき点として、組織内に例えば「mynumber-prod」という名前のプロジェクトがある場合、「参照者」ロールを(組織に対して)付与したユーザーは「マイナンバー関連の本番環境っぽいプロジェクトがある」ということを知ることができます。このことが不都合になるユーザーに対しては、「参照者」ロールを付与しない方が良いでしょう。
「参照者」は基本ロールではない
Cloud Consoleでロールを選択する際、下のように「基本」カテゴリに「参照者」が含まれています(2023年6月時点)。このことから「参照者」は基本ロールの一種のようにも見えます。
基本ロールは、プロジェクト内のほぼ全てのリソースに対する権限を持つロールの総称です。設定は楽ですが、過剰な権限を与えやすく、むやみに設定するのは避けるべきとされています。
改めて公式ドキュメントを確認したところ、基本ロールは「オーナー」「編集者」「閲覧者」の3つとされています。したがって「参照者」は基本ロールではなく、「事前定義ロール」の扱いとなるようです。
おわりに
今回の記事は以上です。
当サイトでは、ITインフラ関連の知識やノウハウをメインに紹介しています。下の関連記事にも役立つ情報があるかもしれませんので、ぜひご覧下さい。
また、知識やノウハウを効率的に学ぶ方法として、Udemy の「ながらセミナー」もおすすめです。三日坊主にならず、普段の生活の中でスキルアップする方法です。これについては下の記事で紹介していますので、良ければご覧下さい。
最後まで読んでいただき、ありがとうございました。
フィードバック
あなたが抱えている疑問や悩みは解決できたでしょうか?当ブログではそれを最重視しています。今後もあなたの役に立つ情報を提供するために、ぜひ教えて下さい。
コメント