ロールと権限

このページでは、IAM 権限のコレクションである Identity and Access Management(IAM)のロールについて説明します。

ロールには、Google Cloud リソースに対して特定の操作を実行できるようにする一連の権限が含まれています。ユーザー、グループ、サービス アカウントなど、プリンシパルで権限を使用できるようにするには、プリンシパルにロールを付与します。

始める前に

ロールのタイプ

IAM には、次の 3 種類のロールがあります。

  • 基本ロール: IAM の導入前に存在していたオーナー、編集者、閲覧者のロールが含まれます。
  • 事前定義ロール: 特定のサービスへのアクセスを細かく制御します。また、Google Cloud により管理されます。
  • カスタムロール: ユーザー指定の権限のリストに応じたきめ細かなアクセス権が提供されます。

権限が基本、事前定義、カスタムのいずれかのロールに含まれているかどうかを判断するには、次のいずれかの方法を使用します。

  • Google Cloud コンソールでロールを表示します。

    [ロール] に移動

  • gcloud iam roles describe コマンドを実行します。

  • 適切な REST API メソッドを使用してロールを取得します。

    • 事前定義ロールの場合は roles.get() を使用します。
    • プロジェクト レベルのカスタムロールの場合は、projects.roles.get() を使用します。
    • 組織レベルのカスタムロールの場合は、organizations.roles.get() を使用します。
  • 基本ロールと事前定義ロールのみ: 権限のリファレンスを検索して、ロールによって権限が付与されるかどうかを確認します。

  • 事前定義ロールの場合のみ: 事前定義ロールの説明を参照して、ロールに含まれる権限を確認します。

ロールのコンポーネント

各ロールには次のコンポーネントがあります。

  • タイトル: 人が読める形式のロール名。ロールのタイトルは、Google Cloud コンソールでロールを識別するために使用されます。
  • 名前: 次のいずれかの形式のロールの識別子。

    • 事前定義ロール: roles/SERVICE.IDENTIFIER
    • プロジェクト レベルのカスタムロール: projects/PROJECT_ID/roles/IDENTIFIER
    • 組織レベルのカスタムロール: organizations/ORG_ID/roles/IDENTIFIER

    ロール名は、許可ポリシーでロールを識別するために使用されます。

  • ID: ロールの一意の識別子。基本ロールと事前定義ロールの場合、ID はロール名と同じです。カスタムロールの場合、ID はロール名の roles/ より後の部分です。

  • 説明: 人が読める形式のロールの説明。

  • ステージ: リリースのライフサイクルにおけるロールのステージ(ALPHABETAGA など)。リリース ステージの詳細については、テストとデプロイをご覧ください。

  • 権限: ロールに含まれる権限。権限は、Google Cloud リソースに特定の操作を行うことをプリンシパルに許可します。プリンシパルにロールを付与すると、そのプリンシパルはロール内のすべての権限を取得します。

    権限の形式は次のとおりです。

    SERVICE.RESOURCE.VERB
    

    たとえば、compute.instances.list 権限を持つユーザーは自分が所有する Compute Engine インスタンスを一覧表示でき、compute.instances.stop 権限を持つユーザーは VM を停止できます。

    通常、権限は REST メソッドと 1 対 1 で対応しています。つまり、Google Cloud の各サービスには、各 REST メソッドに対して関連付けられている権限があります。メソッドを呼び出すには、呼び出し元に関連する権限が必要です。たとえば、Pub/Sub API の projects.topics.publish メソッドを呼び出すには、pubsub.topics.publish 権限が必要です。

  • ETag: ロールのバージョンの識別子。同時更新時の相互上書きを防ぎます。基本ロールと事前定義ロールには常に ETag AA== が含まれます。カスタムロールの ETag は、ロールを変更するたびに変わります。

基本ロール

基本ロールは、IAM の導入前に存在していた高い権限を持つロールです。元々は基本ロール(primitive roles)と呼ばれていました。基本ロールを使用すると、プリンシパルに Google Cloud リソースに対して広範なアクセス権を付与できます。

プリンシパルに基本ロールを付与すると、そのプリンシパルには基本ロールのすべての権限が付与されます。また、基本ロールを持つプリンシパルにサービスから付与される権限(例: Cloud Storage のコンビニエンス値BigQuery 特殊グループ メンバーシップ)も取得します。

次の表は、すべての Google Cloud サービスに対して基本ロールでユーザーに付与される権限をまとめたものです。

基本ロール 権限
閲覧者roles/viewer

既存のリソースやデータを表示する(ただし変更はしない)など、状態に影響しない読み取り専用アクションに必要な権限。

閲覧者ロールの権限の一覧については、Google Cloud コンソールのロールの詳細をご覧ください。

閲覧者ロールに移動

編集者roles/editor

すべての閲覧者権限と、状態を変更するアクション(既存のリソースの変更など)に必要な権限。

編集者ロールでは、Google Cloud サービスほとんどのリソースを作成および削除できます。ただし、編集者ロールには、すべてのサービスに対してすべてのアクションを実行する権限はありません。必要な権限がロールに含まれているかどうかを確認する方法については、このページのロールのタイプをご覧ください。

編集者ロールの権限の一覧については、Google Cloud コンソールでロールの詳細をご覧ください。

編集者ロールに移動

オーナーroles/owner

すべての編集者権限に加えて、次のようなアクションを実行するために必要な権限。

  • App Engine アプリケーションの作成など、センシティブなタスクを完了する
  • プロジェクトとプロジェクト内のすべてのリソースの権限とロールを管理する
  • プロジェクトの課金を設定する

オーナーロールの権限の一覧については、Google Cloud コンソールのロールの詳細をご覧ください。

オーナーロールに移動

Google Cloud コンソール、API、gcloud CLI を使用して、基本ロールを付与できます。ただし、プロジェクトのオーナーロールを組織外のユーザーに付与するには、gcloud CLI ではなく Google Cloud コンソールを使用する必要があります。プロジェクトが組織の一部でない場合は、Google Cloud コンソールを使用してオーナーのロールを付与する必要があります。

詳しい手順については、アクセス権の付与、変更、取り消しをご覧ください。

事前定義ロール

基本ロールに加えて、IAM の事前定義ロールを使用すると、特定の Google Cloud リソースに対してきめ細やかなアクセス権を付与できます。これらのロールは Google によって作成され、管理されます。Google は、Google Cloud によって新しい機能やサービスが追加された場合など、必要に応じて権限を自動的に更新します。

リソース階層の任意のレベルで、同じユーザーに複数のロールを付与できます。たとえば、同じユーザーにプロジェクトの Compute ネットワーク管理者ロールとログ閲覧者のロールが付与され、そのプロジェクト内の Pub/Sub トピックに Pub/Sub パブリッシャー ロールが付与されている場合があります。ロールに含まれる権限を一覧表示する方法については、ロール メタデータの取得をご覧ください。

最適な事前定義ロールを選択する方法については、事前定義ロールの選択をご覧ください。

事前定義ロールのリストについては、ロールのリファレンスをご覧ください。

カスタムロール

IAM では、IAM カスタムロールを作成することもできます。カスタムロールは、組織内のプリンシパルに必要な権限のみを持つようにするため、最小権限の原則を実施する際に有用です。

カスタムロールはユーザー定義であり、特定のニーズに合わせて 1 つ以上のサポートされている権限をバンドルできます。カスタムロールを作成する場合は、ロールを作成する組織またはプロジェクトを選択する必要があります。組織やプロジェクト内のリソースだけでなく、組織やプロジェクトに対してもカスタムロールを付与できます。

カスタムロールは、ロールを作成したプロジェクトまたは組織にのみ付与できます。他のプロジェクトや組織、または他のプロジェクトや組織内のリソースに対しては、カスタムロールを付与できません。

カスタムロールを作成するには、サポートされる 1 つ以上の IAM 権限を組み合わせます。

サポートされている権限

カスタムロールには、すべてではありませんが、多くの IAM 権限を含めることができます。各権限には、カスタムロールで使用する次のいずれかのサポートレベルがあります。

サポートレベル 説明
SUPPORTED この権限は、カスタムロールで完全にサポートされます。
TESTING Google では、カスタムロールとの互換性を確認する権限をテストしています。カスタムロールに権限を含めることはできますが、予期しない動作が発生することがあります。本番環境での使用は推奨されていません。
NOT_SUPPORTED この権限は、カスタムロールではサポートされません。

組織レベルのカスタムロールには、カスタムロールでサポートされる任意の IAM 権限を含めることができます。プロジェクト レベルのカスタムロールには、サポートされている任意の権限を含めることができます。ただし、組織レベルまたはフォルダレベルのみで使用できる権限は除きます。

プロジェクト レベルのロールにフォルダ固有の権限と組織固有の権限を設定できない理由は、プロジェクト レベルで付与された権限は何もしないためです。これは、Google Cloud のリソースが階層的に編成されているためです。権限はリソース階層から継承されるため、リソースとそのリソースの子孫すべてに対して有効になります。ただし、組織とフォルダは常に Google Cloud リソース階層のプロジェクトより上位になります。そのため、フォルダや組織にアクセスするために、プロジェクト レベルで付与された権限を使用できなくなります。フォルダ固有の権限と組織固有の権限(resourcemanager.folders.list など)は、プロジェクト レベルのカスタムロールでは無効になります。

カスタムロールが必要な場合

ほとんどの場合、カスタムロールの代わりに事前定義ロールを使用できます。事前定義ロールは Google によって管理され、Google Cloud に新しい権限、機能、またはサービスが追加されると自動的に更新されます。一方、カスタムロールは Google によって管理されません。Google Cloud が新しい権限、機能、サービスを追加しても、カスタムロールは自動的に更新されません。

ただし、次のような場合はカスタムロールの作成をおすすめします。

また、次の制限にも注意してください。

  • カスタムロールには、最大 3,000 個の権限を含めることができます。また、カスタムロールのタイトル、説明、権限名の最大合計サイズは 64 KB です。
  • 作成できるカスタムロールの数には制限があります。

    • 組織レベルで最大 300 の組織レベルのカスタムロールを作成できます。
    • 組織内のプロジェクトごとに最大 300 個のプロジェクト レベルのカスタムロールを作成できます。

権限の依存関係

一部の権限は、一緒に指定すると有効になります。たとえば、許可ポリシーを更新するには、変更して書き込みを行う前に、ポリシーを読み取る必要があります。そのため、許可ポリシーを更新する場合は setIamPolicy 権限に加えて、そのサービスとリソースタイプに対する getIamPolicy 権限が必要になります。

カスタムロールを有効にするには、同様の権限を持つ事前定義ロールに基づいてカスタムロールを作成します。事前定義ロールは特定のタスクを考慮して設計されており、そのタスクの実行に必要な権限がすべて含まれています。これらのロールを確認することで、まとめて付与されている権限を確認できます。この情報を使用すると、効果的なカスタムロールを設計できます。

事前定義ロールに基づいてカスタムロールを作成する方法については、カスタムロールの作成と管理をご覧ください。

カスタムロールのライフサイクル

以降のセクションでは、カスタムロールのライフサイクルの各フェーズで考慮すべきポイントについて説明します。この情報は、カスタムロールの作成と管理に役立ちます。

作成

カスタムロールを作成する場合は、ロールの識別に役立つ ID、タイトル、説明を選択します。

  • ロール ID: ロール ID は、ロールの一意の識別子です。長さは 64 バイト以下にしてください。大文字と小文字の英数字、アンダースコア、ピリオドを使用できます。組織またはプロジェクトでロール ID を再利用することはできません。

    ロール ID は変更できないため、慎重に選択してください。ロールを削除することはできますが、44 日間の削除プロセスが完了するまでは、同じ組織またはプロジェクトで同じ ID を使用して新しいカスタムロールを作成することはできません。削除プロセスの詳細については、カスタムロールの削除をご覧ください。

  • ロールのタイトル: ロールのタイトルは Google Cloud コンソールのロールリストに表示されます。タイトルを一意にする必要はありませんが、一意でわかりやすいタイトルを使用してロールを区別することをおすすめします。また、ロールの作成レベル(組織またはプロジェクト)を示すことも検討してください。

    ロールのタイトルの長さは 100 バイト以下にしてください。タイトルには英大文字、英小文字、数字、記号を使用できます。ロールのタイトルはいつでも変更できます。

  • ロールの説明: ロールの説明は、ロールに関する追加情報を指定できるオプション フィールドです。たとえば、ロールの本来の目的、ロールが作成または変更された日付、カスタムロールの基になっている事前定義ロールなどを指定できます。説明は 300 バイト以下にしてください。英字(大文字と小文字)、数字、記号を使用できます。

カスタムロールを作成する場合は、権限の依存関係にも注意してください。

事前定義ロールに基づいてカスタムロールを作成する方法については、カスタムロールの作成と管理をご覧ください。

リリース

カスタムロールには、ロールのメタデータの一部としてリリース ステージが含まれます。カスタムロールの最も一般的なリリース ステージは、ALPHABETAGA です。これらのリリース ステージは情報提供を目的としています。これにより、各ロールを広く使用できるかどうかをトラッキングできます。別の一般的なリリース ステージとして DISABLED があります。このリリース ステージでは、カスタムロールを無効にすることができます。

リリース ステージを使用して、ロールに関する次の情報を提供することをおすすめします。

  • EAP または ALPHA: ロールはまだ開発またはテスト中です。あるいは、まだ公開されていない Google Cloud サービスまたは機能の権限が含まれています。これは、広く利用することはできません。
  • BETA: ロールのテストが限定的に行われています。あるいは、一般提供されていない Google Cloud サービスまたは機能の権限が含まれています。
  • GA: このロールは広くテストされています。権限はすべて一般提供されている Google Cloud サービスまたは機能に使用できます。
  • DEPRECATED: ロールが使用されなくなりました。

ロールのリリース ステージを変更する方法については、既存のカスタムロールの編集をご覧ください。

メンテナンス

カスタムロールを維持する責任はユーザーにあります。これには、ユーザーの責任の変更に応じてロールを更新することや、追加の権限が必要な新しい機能にユーザーがアクセスできるようにロールを更新することなどが含まれます。

カスタムロールを事前定義ロールに基づいて作成している場合は、事前定義ロールを定期的に確認して権限を変更することをおすすめします。これらの変更を追跡することで、カスタムロールをいつ、どのように更新するかを決定できます。たとえば、新しいプレビュー機能を使用する権限で事前定義ロールが更新されたことに気付き、カスタムロールにもそれらの権限を追加する場合があります。

モニタリングする事前定義ロールを簡単に識別できるように、カスタムロールの説明フィールドに、カスタムロールの基になっている事前定義ロールを含めることをおすすめします。Google Cloud コンソールを使用すると、事前定義ロールに基づいてカスタムロールを作成するときに、Google Cloud コンソールにより自動的にこの操作が行われます。

カスタムロールの権限と説明を更新する方法については、既存のカスタムロールの編集をご覧ください。

最近変更されたロールと権限について確認するには、権限変更ログをご覧ください。

無効化

組織内のプリンシパルでカスタムロールの使用を中止したい場合は、ロールを無効にできます。ロールを無効にするには、リリース ステージを DISABLED に変更します。

無効にしたロールは IAM ポリシーにも表示されます。このロールはプリンシパルに付与できますが、効果はありません。

カスタムロールを無効にする方法については、カスタムロールを無効にするをご覧ください。

次のステップ