IAM を使用したアクセス制御

このドキュメントでは、Secret Manager で使用可能なアクセス制御オプションについて説明します。

IAM ロールを割り当てる

Secret Manager は、Identity and Access Management(IAM)を使用してアクセス制御を行います。シークレットを作成、管理、一覧表示、アクセスするには、プロジェクト レベルと個々のリソースレベルで適切な IAM 権限が付与されている必要があります。1 つ以上の事前定義されたロールを付与するか、カスタムロールを作成して付与できます。シークレット バージョンには IAM ロールを付与できません。

ロールを追加するには:

  1. Google Cloud コンソールで [IAM] ページに移動します。

    IAM に移動

  2. ページの上部にあるプロジェクト セレクタのリストをクリックします。

  3. 表示された [選択元] ダイアログで、Secret Manager を有効にする組織を選択します。

  4. [IAM] ページで、ユーザー名の横にある [編集] をクリックします。

  5. 表示される [権限の編集] パネルで、必要なロールを追加します。

    1. [別のロールを追加] をクリックします。[Secret Manager のシークレット アクセサー] など、追加するロールを選択します。

    2. さらにロールを追加するには、前の手順を繰り返します。[保存] をクリックします。

Identity and Access Management(IAM)のロールでは、Secret Manager API の使用方法が規定されています。次の表に、Secret Manager で使用できる各 IAM ロールと、そのロールに付与された機能を示します。

Role Permissions

(roles/secretmanager.admin)

Full access to administer Secret Manager resources.

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.*

  • secretmanager.locations.get
  • secretmanager.locations.list
  • secretmanager.secrets.create
  • secretmanager.secrets.delete
  • secretmanager.secrets.get
  • secretmanager.secrets.getIamPolicy
  • secretmanager.secrets.list
  • secretmanager.secrets.setIamPolicy
  • secretmanager.secrets.update
  • secretmanager.versions.access
  • secretmanager.versions.add
  • secretmanager.versions.destroy
  • secretmanager.versions.disable
  • secretmanager.versions.enable
  • secretmanager.versions.get
  • secretmanager.versions.list

(roles/secretmanager.secretAccessor)

Allows accessing the payload of secrets.

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.versions.access

(roles/secretmanager.secretVersionAdder)

Allows adding versions to existing secrets.

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.versions.add

(roles/secretmanager.secretVersionManager)

Allows creating and managing versions of existing secrets.

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.versions.add

secretmanager.versions.destroy

secretmanager.versions.disable

secretmanager.versions.enable

secretmanager.versions.get

secretmanager.versions.list

(roles/secretmanager.viewer)

Allows viewing metadata of all Secret Manager resources

Lowest-level resources where you can grant this role:

  • Secret

resourcemanager.projects.get

resourcemanager.projects.list

secretmanager.locations.*

  • secretmanager.locations.get
  • secretmanager.locations.list

secretmanager.secrets.get

secretmanager.secrets.getIamPolicy

secretmanager.secrets.list

secretmanager.versions.get

secretmanager.versions.list

最小権限の原則

最小権限の原則に従うとは、特定のタスクを実行するために必要な最小限のリソースへのアクセス権を付与するということです。たとえば、プリンシパルがある 1 つのシークレットにアクセスする必要がある場合、そのプリンシパルに他のシークレットやプロジェクトや組織内のすべてのシークレットへのアクセス権を付与しないでください。プリンシパルがシークレットの読み取りのみを必要とする場合、そのプリンシパルにシークレットを変更する権限を付与しないでください。

IAM を使用して、Google Cloud のシークレット、プロジェクト、フォルダ、または組織のレベルで IAM のロールと権限を付与できます。常にリソース階層の最下位レベルの権限を適用します。

次の表は、Secret Manager のシークレット アクセサーのロール(roles/secretmanager.secretAccessor)が付与されているリソース階層のレベルに基づいた、サービス アカウントの有効な機能を示しています。

リソース階層 能力
シークレット そのシークレットへのアクセスに限定
プロジェクト プロジェクト内の全シークレットへのアクセス
フォルダ フォルダ内の全プロジェクトの全シークレットへのアクセス
組織 組織内の全プロジェクトの全シークレットへのアクセス

プリンシパルがある 1 つのシークレットの値のみにアクセスする必要がある場合、そのプリンシパルにはすべてのシークレットへのアクセス権を付与しないでください。たとえば、サービス アカウントに Secret Manager の Secret Accessor ロール(roles/secretmanager.secretAccessor)を単一のシークレットに付与できます。

プリンシパルがある 1 つのシークレットのみを管理する必要がある場合、そのプリンシパルにはすべてのシークレットを管理する権限を付与しないでください。たとえば、サービス アカウントに、ある 1 つのシークレットに対するSecret Manager 管理者のロール(roles/secretmanager.admin)を付与できます。

IAM の条件

IAM の条件を使用すると、一部の Google Cloud リソース(Secret Manager リソースなど)に対して、条件付きの属性ベースのアクセス制御を定義して適用できます。

Secret Manager では、次の属性に基づいて条件付きアクセスを適用できます。

  • 日時属性: Secret Manager リソースに対する有効期限のあるアクセス権、スケジュール済みアクセス権、または期間限定のアクセス権を設定するために使用します。たとえば、指定した日付までユーザーがシークレットにアクセスできるようにすることも可能です。
  • リソース属性: リソース名、リソースタイプ、リソース サービス属性に基づいて条件付きアクセスを構成するために使用します。Secret Manager では、シークレットとシークレット バージョンの属性を使用して条件付きアクセスを構成できます。たとえば、特定の接頭辞で始まるシークレットのみのシークレット バージョの管理や、特定のシークレット バージョンに限定したアクセスをユーザーに対して許可することができます。

IAM の条件について詳しくは、条件の概要をご覧ください。

次のステップ