Control de acceso con la gestión de identidades y accesos

Artifact Analysis usa Gestión de Identidades y Accesos (IAM) para conceder acceso granular a recursos específicos en función de la tarea que vayas a realizar.

En esta página se describen los permisos para controlar el acceso a Artifact Analysis.

Antes de empezar

  1. Consulta información sobre los conceptos de almacenamiento de metadatos.
  2. Consulta cómo conceder, revocar y cambiar el acceso a los recursos.

Roles de gestión de identidades y accesos para proveedores y clientes de metadatos

La gestión de metadatos en Análisis de artefactos implica dos entidades que requieren diferentes niveles de acceso:

  • Un proveedor que crea metadatos almacenados en notas.
  • Un cliente que identifica apariciones de notas.

Proveedores de metadatos

Un proveedor de metadatos en Análisis de artefactos es un escritor de metadatos de recursos. Crea notas que describen algo que puede ocurrirle a un recurso.

Te recomendamos que crees un Google Cloud proyecto dedicado exclusivamente a almacenar notas. En ese proyecto, restringe el acceso a un usuario o una cuenta de servicio con los siguientes roles:

  • Editor de notas de Container Analysis: crea notas a las que tus clientes pueden adjuntar repeticiones.

  • Lector de repeticiones en notas de Container Analysis: para mostrar todas las repeticiones vinculadas a una nota.

Clientes de metadatos

Un cliente de metadatos de Artifact Analysis adjunta información a los recursos de metadatos. Crea ocurrencias, que son instancias de notas y se dirigen a una imagen específica de un proyecto.

Como cliente, para poder adjuntar incidencias a las notas y enumerarlas, debes conceder los siguientes roles a tu usuario o cuenta de servicio:

  • Editor de repeticiones de Container Analysis: concede este rol en el proyecto del cliente para crear repeticiones.

  • Vinculador de notas de Container Analysis: concede este rol en el proyecto proveedor para vincular repeticiones a notas.

  • Lector de repeticiones de Container Analysis: asigna este rol en el proyecto del cliente para mostrar las repeticiones de ese proyecto.

Metadatos de vulnerabilidades

Otra medida de seguridad para los metadatos de vulnerabilidades es que Artifact Analysis permite a los proveedores crear y gestionar vulnerabilidades en nombre de muchos clientes. Los clientes de metadatos no tienen permiso de escritura para las ocurrencias de vulnerabilidades de proveedores externos en sus propios proyectos.

Esto significa, por ejemplo, que Análisis de artefactos puede crear incidencias de vulnerabilidades para las imágenes de tu proyecto, pero no puedes añadir ni eliminar ninguna información sobre vulnerabilidades que detecte Análisis de artefactos.

De esta forma, se aplican las políticas de seguridad, ya que se evita la manipulación de los metadatos de vulnerabilidades en el lado del cliente.

Roles de gestión de identidades y accesos

En la siguiente tabla se indican los roles de gestión de identidades y accesos de Artifact Analysis y los permisos que incluyen:

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