IAM によるアクセス制御

Artifact Analysis は、Identity and Access Management(IAM)を使用して、実行するタスクに応じて特定のリソースへのきめ細かいアクセス権を付与します。

このページでは、アーティファクト分析へのアクセスを制御する権限について説明します。

始める前に

  1. メタデータ ストレージのコンセプトを読む。
  2. リソースに対するアクセス権の付与、取り消し、変更の方法を読む。

メタデータ プロバイダとメタデータ顧客用の IAM 役割

Artifact Analysis のメタデータ管理には、異なるレベルのアクセスを必要とする 2 つのエンティティが関与します。

  • メモに保存されるメタデータを作成するプロバイダ
  • メモのオカレンスを識別する顧客

メタデータ プロバイダ

Artifact Analysis のメタデータ プロバイダは、リソース メタデータのライターです。メモが作成されます。これは、リソースに対して発生する可能性のあることを説明するものです。

メモの保存専用の Google Cloud プロジェクトを作成することをおすすめします。そのプロジェクトで、次のロールを持つユーザーまたはサービス アカウントへのアクセスを制限します。

  • Container Analysis メモの編集者 - 顧客がオカレンスに添付できるメモを作成します。

  • Container Analysis メモ閲覧者向けオカレンス - メモに添付されたすべてのオカレンスを一覧表示します。

メタデータ顧客

Artifact Analysis のメタデータ顧客は、メタデータ リソースに情報を追加します。オカレンスを作成します。これは、メモのインスタンスであり、プロジェクト内の特定のイメージをターゲットにするものです。

顧客がオカレンスをメモに追加して一覧表示できるようにするには、ユーザーまたはサービス アカウントに次の役割を付与します。

  • Container Analysis オカレンス編集者 - 顧客プロジェクトでこの役割を付与してオカレンスを作成します。

  • Container Analysis メモの添付者 - メモにオカレンスを添付するには、プロバイダ プロジェクトでこの役割を付与します。

  • Container Analysis オカレンスの閲覧者 - 顧客プロジェクトでこの役割を付与して、プロジェクト内のオカレンスを一覧表示します。

脆弱性のメタデータ

脆弱性メタデータに対する追加のセキュリティ対策として、Artifact Analysis により多数の顧客の代わりに脆弱性オカレンスをプロバイダが作成、管理できるようにすることがあります。メタデータ顧客には、自身のプロジェクトでのサードパーティ プロバイダの脆弱性オカレンスに対する書き込み権限がありません。

たとえば、Artifact Analysis はプロジェクトでイメージの脆弱性オカレンスを作成できますが、Artifact Analysis によって検出された脆弱性情報を追加または削除することはできません。

これにより、顧客側の脆弱性メタデータの操作を防止することによって、セキュリティ ポリシーを適用できるようになります。

IAM ロール

次の表に、Artifact Analysis の IAM ロールと、ロールに含まれる権限を示します。

Role Permissions

(roles/containeranalysis.ServiceAgent)

Gives Container Analysis API the access it needs to function

artifactregistry.attachments.get

artifactregistry.attachments.list

artifactregistry.dockerimages.*

  • artifactregistry.dockerimages.get
  • artifactregistry.dockerimages.list

artifactregistry.files.download

artifactregistry.files.get

artifactregistry.files.list

artifactregistry.locations.*

  • artifactregistry.locations.get
  • artifactregistry.locations.list

artifactregistry.mavenartifacts.*

  • artifactregistry.mavenartifacts.get
  • artifactregistry.mavenartifacts.list

artifactregistry.npmpackages.*

  • artifactregistry.npmpackages.get
  • artifactregistry.npmpackages.list

artifactregistry.packages.get

artifactregistry.packages.list

artifactregistry.projectsettings.get

artifactregistry.pythonpackages.*

  • artifactregistry.pythonpackages.get
  • artifactregistry.pythonpackages.list

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.get

artifactregistry.repositories.list

artifactregistry.repositories.listEffectiveTags

artifactregistry.repositories.listTagBindings

artifactregistry.repositories.readViaVirtualRepository

artifactregistry.rules.get

artifactregistry.rules.list

artifactregistry.tags.get

artifactregistry.tags.list

artifactregistry.versions.get

artifactregistry.versions.list

containeranalysis.notes.list

containeranalysis.occurrences.create

containeranalysis.occurrences.delete

containeranalysis.occurrences.get

containeranalysis.occurrences.list

containeranalysis.occurrences.update

pubsub.messageTransforms.validate

pubsub.schemas.attach

pubsub.schemas.commit

pubsub.schemas.create

pubsub.schemas.delete

pubsub.schemas.get

pubsub.schemas.list

pubsub.schemas.listRevisions

pubsub.schemas.rollback

pubsub.schemas.validate

pubsub.snapshots.create

pubsub.snapshots.delete

pubsub.snapshots.get

pubsub.snapshots.list

pubsub.snapshots.seek

pubsub.snapshots.update

pubsub.subscriptions.consume

pubsub.subscriptions.create

pubsub.subscriptions.delete

pubsub.subscriptions.get

pubsub.subscriptions.list

pubsub.subscriptions.update

pubsub.topics.attachSubscription

pubsub.topics.create

pubsub.topics.delete

pubsub.topics.detachSubscription

pubsub.topics.get

pubsub.topics.list

pubsub.topics.publish

pubsub.topics.update

pubsub.topics.updateTag

resourcemanager.projects.get

resourcemanager.projects.list

serviceusage.quotas.get

serviceusage.services.get

serviceusage.services.list

storage.objects.get

storage.objects.list

(roles/containeranalysis.admin)

Access to all Container Analysis resources.

containeranalysis.notes.attachOccurrence

containeranalysis.notes.create

containeranalysis.notes.delete

containeranalysis.notes.get

containeranalysis.notes.getIamPolicy

containeranalysis.notes.list

containeranalysis.notes.setIamPolicy

containeranalysis.notes.update

containeranalysis.occurrences.*

  • containeranalysis.occurrences.create
  • containeranalysis.occurrences.delete
  • containeranalysis.occurrences.get
  • containeranalysis.occurrences.getIamPolicy
  • containeranalysis.occurrences.list
  • containeranalysis.occurrences.setIamPolicy
  • containeranalysis.occurrences.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/containeranalysis.notes.attacher)

Can attach Container Analysis Occurrences to Notes.

containeranalysis.notes.attachOccurrence

containeranalysis.notes.get

(roles/containeranalysis.notes.editor)

Can edit Container Analysis Notes.

containeranalysis.notes.attachOccurrence

containeranalysis.notes.create

containeranalysis.notes.delete

containeranalysis.notes.get

containeranalysis.notes.list

containeranalysis.notes.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/containeranalysis.notes.occurrences.viewer)

Can view all Container Analysis Occurrences attached to a Note.

containeranalysis.notes.get

containeranalysis.notes.listOccurrences

(roles/containeranalysis.notes.viewer)

Can view Container Analysis Notes.

containeranalysis.notes.get

containeranalysis.notes.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/containeranalysis.occurrences.editor)

Can edit Container Analysis Occurrences.

containeranalysis.occurrences.create

containeranalysis.occurrences.delete

containeranalysis.occurrences.get

containeranalysis.occurrences.list

containeranalysis.occurrences.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/containeranalysis.occurrences.viewer)

Can view Container Analysis Occurrences.

containeranalysis.occurrences.get

containeranalysis.occurrences.list

resourcemanager.projects.get

resourcemanager.projects.list