Controlo de acesso com a IAM

A Artifact Analysis usa a gestão de identidade e de acesso (IAM) para conceder acesso detalhado a recursos específicos, consoante a tarefa que vai realizar.

Esta página descreve as autorizações para controlar o acesso à análise de artefactos.

Antes de começar

  1. Leia sobre os conceitos de armazenamento de metadados.
  2. Leia como conceder, revogar e alterar o acesso aos recursos.

Funções de IAM para fornecedores e clientes de metadados

A gestão de metadados na análise de artefactos envolve duas entidades que requerem diferentes níveis de acesso:

  • Um fornecedor que cria metadados armazenados em notas.
  • Um cliente que identifica ocorrências de notas.

Fornecedores de metadados

Um fornecedor de metadados na análise de artefactos é um autor de metadados de recursos. Cria notas que descrevem algo que pode acontecer a um recurso.

Recomendamos que crie um Google Cloud projeto dedicado exclusivamente ao armazenamento de notas. Nesse projeto, restrinja o acesso a um utilizador ou a uma conta de serviço com as seguintes funções:

  • Editor de notas de análise do contentor: para criar notas às quais os seus clientes podem anexar ocorrências.

  • Ocorrências de análise de contentores para o visualizador de notas: para listar todas as ocorrências anexadas a uma nota.

Clientes de metadados

Um cliente de metadados na análise de artefactos anexa informações a recursos de metadados. Cria ocorrências, que são instâncias de notas e destinam-se a uma imagem específica num projeto.

Como cliente, para poder anexar ocorrências a notas e listá-las, conceda as seguintes funções ao seu utilizador ou conta de serviço:

  • Editor de ocorrências de análise de contentores: conceda esta função no projeto do cliente para criar ocorrências.

  • Container Analysis Notes Attacher: conceda esta função no projeto do fornecedor para anexar ocorrências a notas.

  • Visualizador de ocorrências de análise de contentores: conceda esta função no projeto do cliente para listar ocorrências nesse projeto.

Metadados de vulnerabilidade

Uma medida de segurança adicional para os metadados de vulnerabilidade é que a análise de artefactos permite que os fornecedores criem e geram ocorrências de vulnerabilidades em nome de muitos clientes. Os clientes de metadados não têm autorização de escrita para ocorrências de vulnerabilidades de fornecedores terceiros nos seus próprios projetos.

Isto significa, por exemplo, que a Artifact Analysis pode criar ocorrências de vulnerabilidades para imagens no seu projeto, mas não pode adicionar nem remover informações de vulnerabilidades que a Artifact Analysis deteta.

Isto ajuda a aplicar políticas de segurança, impedindo a manipulação de metadados de vulnerabilidade do lado do cliente.

Funções de IAM

A tabela seguinte indica as funções de IAM da Artifact Analysis e as autorizações que incluem:

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