IAM으로 액세스 제어

아티팩트 분석은 Identity and Access Management (IAM)를 사용하여 수행할 작업에 따라 특정 리소스에 대한 세분화된 액세스 권한을 부여합니다.

이 페이지에서는 아티팩트 분석에 대한 액세스를 제어할 수 있는 권한을 설명합니다.

시작하기 전에

  1. 메타데이터 스토리지 개념 알아보기
  2. 리소스에 대한 액세스 권한을 부여, 취소, 변경하는 방법 알아보기

메타데이터 제공업체 및 고객의 IAM 역할

Artifact Analysis의 메타데이터 관리에는 서로 다른 액세스 수준이 필요한 두 항목이 포함됩니다.

  • 메모에 저장된 메타데이터를 만드는 제공업체입니다.
  • 메모의 어커런스를 확인하는 고객입니다.

메타데이터 제공업체

Artifact Analysis의 메타데이터 제공업체는 리소스 메타데이터 작성자입니다. 리소스에 발생할 수 있는 작업을 설명하는 메모를 만듭니다.

메모 저장만 전담하는 Google Cloud 프로젝트를 만드는 것이 좋습니다. 이 프로젝트에서 다음 역할을 지닌 사용자 또는 서비스 계정으로 액세스를 제한합니다.

  • 컨테이너 분석 메모 편집자 - 메모를 만들기 위해 고객이 어커런스를 연결할 수 있습니다.

  • 메모 뷰어의 컨테이너 분석 어커런스 - 메모에 연결된 모든 어커런스를 나열합니다.

메타데이터 고객

아티팩트 분석의 메타데이터 고객은 메타데이터 리소스에 정보를 연결합니다. 메모의 인스턴스이고 프로젝트 내에서 특정 이미지를 타겟팅하는 어커런스를 만듭니다.

고객이 메모에 어커런스를 연결하고 이를 나열할 수 있도록 사용자 또는 서비스 계정에 다음 역할을 부여합니다.

  • 컨테이너 분석 어커런스 편집자 - 고객 프로젝트에서 이 역할을 부여하여 어커런스를 만듭니다.

  • 컨테이너 분석 메모 첨부자 - 제공업체 프로젝트에서 이 역할을 부여하여 메모에 어커런스를 첨부합니다.

  • 컨테이너 분석 어커런스 뷰어 - 고객 프로젝트에서 이 역할을 부여하여 해당 프로젝트 내의 어커런스를 나열합니다.

취약점 메타데이터

취약점 메타데이터의 추가 보안 조치는 Artifact Analysis를 통해 제공업체가 여러 고객을 대신하여 취약점 어커런스를 만들고 관리할 수 있도록 허용하는 것입니다. 메타데이터 고객은 자체 프로젝트의 서드 파티 제공업체 취약점 어커런스에 대해 쓰기 권한이 없습니다.

예를 들어 Artifact Analysis로 프로젝트의 이미지에 대해 취약점 어커런스를 만들 수 있지만, Artifact Analysis로 발견되는 취약점 정보를 추가하거나 삭제할 수 없습니다.

따라서 고객 측의 취약점 메타데이터 조작을 방지하여 보안 정책을 적용할 수 있습니다.

IAM 역할

다음 표에는 아티팩트 분석 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