Control de acceso con IAM

Cloud Composer 1 | Cloud Composer 2

En esta página, se describen las opciones de control de acceso disponibles en Cloud Composer y se explica cómo asignar funciones.

Descripción general

Para obtener información sobre cómo otorgar funciones, consulta Administración del acceso a proyectos, carpetas y organizaciones.

También puedes controlar los permisos para la interfaz web de Airflow, además de habilitar o inhabilitar el acceso a ella. Para obtener más información, consulta Control de acceso a la IU de Airflow.

Acerca de Identity and Access Management en Cloud Composer

de Cloud Composer usa Identity and Access Management (IAM) para el control de acceso.

Para controlar el acceso a diferentes funciones de Cloud Composer, asigna funciones y permisos para las cuentas de servicio de IAM y las cuentas de usuario en el proyecto de Google Cloud.

Cloud Composer usa dos tipos de cuentas de servicio de IAM:

Acerca de la cuenta del agente de servicio de Cloud Composer

En tu proyecto, el servicio de Cloud Composer usa una cuenta de servicio especial administrada por Google para administrar los recursos relacionados con Cloud Composer. Esta cuenta se llama agente de servicio de Cloud Composer.

El agente de servicio de Cloud Composer se usa para todos los entornos de tu proyecto.

Acerca de las cuentas de servicio para los entornos de Cloud Composer

Cuando creas un entorno, especificas una cuenta de servicio. El clúster de tu entorno usa esta cuenta de servicio para ejecutar pods con diferentes componentes de entorno, como trabajadores y programadores de Airflow.

De forma predeterminada, los entornos de Cloud Composer se ejecutan mediante la cuenta de servicio predeterminada de Compute Engine. Esta cuenta de servicio administrada por Google tiene más permisos que los necesarios para ejecutar entornos de Cloud Composer; por lo general, la función básica de Editor.

Te recomendamos que configures una cuenta de servicio administrada por el usuario para los entornos de Cloud Composer. Asigna a esta cuenta una función específica para Cloud Composer. Luego, especifica esta cuenta de servicio cuando crees entornos nuevos.

Acerca de las funciones para los usuarios de Cloud Composer

Para activar una operación de entorno, un usuario debe tener los permisos necesarios. Por ejemplo, si deseas crear un entorno nuevo, debes tener el permiso composer.environments.create.

Para Cloud Composer, los permisos individuales se agrupan en funciones. Puedes asignar estas funciones a las principales.

Si tu cuenta de servicio tiene la función Editor del proyecto, puedes ejecutar todas las operaciones del entorno. Sin embargo, esta función tiene permisos amplios. Para los usuarios que trabajan con entornos, recomendamos usar funciones que son específicas de Cloud Composer. De esta manera, puedes reducir el alcance de los permisos y proporcionar diferentes niveles de acceso a diferentes cuentas principales. Por ejemplo, un usuario puede tener permisos para crear, actualizar, borrar y mejorar entornos, mientras que otro usuario solo puede ver los entornos y acceder a la interfaz web de Airflow.

Asigna funciones a la cuenta de agente de servicio de Cloud Composer

Cuando habilitas la API de Cloud Composer en tu proyecto, se crea la cuenta del agente de servicio de Composer en tu proyecto. Cloud Composer usa esta cuenta para realizar operaciones en tu proyecto de Google Cloud.

De forma predeterminada, la cuenta de agente de servicio de Compose tiene la función agente de servicio de la API de Cloud Composer.

Asigna funciones a una cuenta de servicio administrada por el usuario

Para una cuenta de servicio administrada por el usuario que ejecuta entornos de Cloud Composer:

  • Para una configuración de IP pública, asigna la función Composer Worker (composer.worker).
  • Para una configuración de IP privada, sigue estos pasos:
    1. Asigna la función Trabajador de Composer (composer.worker).
    2. Asigna la función Usuario de cuenta de servicio (iam.serviceAccountUser).

asignar funciones a los usuarios;

Según el nivel de acceso que desees proporcionar a los entornos de Cloud Composer, otorga los siguientes permisos a las cuentas principales.

Administra entornos y depósitos de entornos

En el caso de un usuario que puede ver, crear, actualizar, actualizar y borrar entornos, administra objetos (como archivos de DAG) en los buckets de entornos, accede a la interfaz web de Airflow, visualiza y activa DAG desde la IU de DAG:

  1. Asigna la función Administrador de objetos de almacenamiento y entorno (composer.environmentAndStorageObjectAdmin).
  2. Asigna la función Usuario de cuenta de servicio (iam.serviceAccountUser).

    Para limitar los permisos de un usuario, otorga esta función solo en la cuenta de servicio del entorno. Para obtener más información, consulta Cómo otorgar o revocar una sola función.

Administra entornos

Para un usuario que puede ver, crear, actualizar, actualizar y borrar entornos, accede a la interfaz web de Airflow, visualiza y activa los DAG desde la IU de DAG:

  1. Asigna la función Administrador de Composer (composer.admin).
  2. Asigna la función Usuario de cuenta de servicio (iam.serviceAccountUser).

    Para limitar los permisos de un usuario, otorga esta función solo en la cuenta de servicio de tu entorno. Para obtener más información, consulta Cómo otorgar o revocar una sola función.

Visualiza entornos y administra depósitos de entornos

En el caso de un usuario que puede ver entornos, accede a la interfaz web de Airflow, consulta y activa los DAG desde la IU de DAG y administra los objetos en los buckets de entorno (por ejemplo, para subir archivos de DAG nuevos):

  1. Asigna la función Usuario de entorno y Visualizador de objetos de almacenamiento (composer.environmentAndStorageObjectViewer).
  2. Asigna la función Administrador de objetos de almacenamiento (storage.objectAdmin).

Visualización de los entornos y los depósitos del entorno

Para un usuario que puede ver entornos, acceder a la interfaz web de Airflow, ver y activar DAG desde la IU de DAG y ver objetos en buckets de entorno, asigna la función Usuario de entorno y visualizador de objetos de almacenamiento (composer.environmentAndStorageObjectViewer).

Visualización de entornos

Para un usuario que puede ver entornos, ver y activar DAG desde la IU de DAG y acceder a la interfaz web de Airflow, asigna la función de usuario de Compose (composer.user).

Asigna permisos para usar gcloud con entornos

Para usar gcloud con entornos de Cloud Composer, necesitas los siguientes permisos:

  • composer.environments.get
  • container.clusters.get
  • container.clusters.list
  • container.clusters.getCredentials

Si deseas administrar entornos o depósitos de entornos con comandos gcloud composer, también debes tener una función que tenga suficientes permisos para hacerlo.

Si desea ejecutar comandos de la CLI de Airflow, necesita los siguientes permisos adicionales:

  • container.namespaces.list
  • container.pods.exec
  • container.pods.get
  • container.pods.list

Roles

Función Permisos

Extensión de agente de servicio de la API de Cloud Composer v2
(roles/composer.ServiceAgentV2Ext)

La extensión de agente de servicio de la API de Cloud Composer v2 es una función complementaria que se requiere para administrar entornos de Composer v2.

  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy

Administrador de Composer
(roles/composer.admin)

Proporciona control total de los recursos de Cloud Composer.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • composer.*
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list

Administrador de objetos de almacenamiento y entorno
(roles/composer.environmentAndStorageObjectAdmin)

Proporciona control total de los recursos de Cloud Composer y de los objetos en todos los depósitos de proyectos.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • composer.*
  • orgpolicy.policy.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.multipartUploads.*
  • storage.objects.*

Visualizador de objetos de almacenamiento y de usuario del entorno
(roles/composer.environmentAndStorageObjectViewer)

Proporciona los permisos necesarios para enumerar y obtener entornos y operaciones de Cloud Composer. Proporciona acceso de solo lectura a objetos en todos los depósitos de proyectos.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • composer.dags.*
  • composer.environments.get
  • composer.environments.list
  • composer.imageversions.list
  • composer.operations.get
  • composer.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.objects.get
  • storage.objects.list

Agente de VPC compartida de Composer
(roles/composer.sharedVpcAgent)

La función que se debe asignar a la cuenta de servicio de Composer Agent en el proyecto host de la VPC compartida

  • compute.networks.access
  • compute.networks.addPeering
  • compute.networks.get
  • compute.networks.list
  • compute.networks.listPeeringRoutes
  • compute.networks.removePeering
  • compute.networks.updatePeering
  • compute.networks.use
  • compute.networks.useExternalIp
  • compute.projects.get
  • compute.regions.*
  • compute.subnetworks.get
  • compute.subnetworks.list
  • compute.subnetworks.use
  • compute.subnetworks.useExternalIp
  • compute.zones.*

Usuario de Composer
(roles/composer.user)

Proporciona los permisos necesarios para enumerar y obtener entornos y operaciones de Cloud Composer.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • composer.dags.*
  • composer.environments.get
  • composer.environments.list
  • composer.imageversions.list
  • composer.operations.get
  • composer.operations.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list

Trabajador de Composer
(roles/composer.worker)

Proporciona los permisos necesarios para ejecutar una VM de entorno de Cloud Composer. Se otorga para cuentas de servicio.

Recursos de nivel más bajo en los que puedes otorgar esta función:

  • Proyecto
  • artifactregistry.*
  • cloudbuild.builds.create
  • cloudbuild.builds.get
  • cloudbuild.builds.list
  • cloudbuild.builds.update
  • cloudbuild.workerpools.use
  • composer.environments.get
  • container.*
  • containeranalysis.occurrences.create
  • containeranalysis.occurrences.delete
  • containeranalysis.occurrences.get
  • containeranalysis.occurrences.list
  • containeranalysis.occurrences.update
  • logging.logEntries.create
  • logging.logEntries.list
  • logging.privateLogEntries.list
  • logging.views.access
  • monitoring.metricDescriptors.create
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.monitoredResourceDescriptors.*
  • monitoring.timeSeries.*
  • orgpolicy.policy.get
  • pubsub.schemas.attach
  • pubsub.schemas.create
  • pubsub.schemas.delete
  • pubsub.schemas.get
  • pubsub.schemas.list
  • 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
  • remotebuildexecution.blobs.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • source.repos.get
  • source.repos.list
  • storage.buckets.create
  • storage.buckets.get
  • storage.buckets.list
  • storage.multipartUploads.*
  • storage.objects.*

Funciones para los agentes de servicio

roles/composer.serviceAgent Agente de servicios de la API de Cloud Composer

El agente de servicios de la API de Cloud Composer puede administrar entornos.

  • appengine.applications.get
  • appengine.applications.update
  • appengine.instances.*
  • appengine.memcache.addKey
  • appengine.memcache.flush
  • appengine.memcache.get
  • appengine.memcache.update
  • appengine.operations.*
  • appengine.runtimes.actAsAdmin
  • appengine.services.*
  • appengine.versions.create
  • appengine.versions.delete
  • appengine.versions.get
  • appengine.versions.list
  • appengine.versions.update
  • artifactregistry.repositories.create
  • artifactregistry.repositories.delete
  • artifactregistry.repositories.get
  • artifactregistry.repositories.list
  • artifactregistry.repositories.update
  • cloudnotifications.activities.list
  • cloudsql.*
  • compute.acceleratorTypes.*
  • compute.addresses.*
  • compute.autoscalers.*
  • compute.backendBuckets.*
  • compute.backendServices.*
  • compute.diskTypes.*
  • compute.disks.*
  • compute.externalVpnGateways.*
  • compute.firewallPolicies.get
  • compute.firewallPolicies.list
  • compute.firewallPolicies.use
  • compute.firewalls.get
  • compute.firewalls.list
  • compute.forwardingRules.*
  • compute.globalAddresses.*
  • compute.globalForwardingRules.*
  • compute.globalNetworkEndpointGroups.*
  • compute.globalOperations.get
  • compute.globalOperations.list
  • compute.globalPublicDelegatedPrefixes.delete
  • compute.globalPublicDelegatedPrefixes.get
  • compute.globalPublicDelegatedPrefixes.list
  • compute.globalPublicDelegatedPrefixes.update
  • compute.globalPublicDelegatedPrefixes.updatePolicy
  • compute.healthChecks.*
  • compute.httpHealthChecks.*
  • compute.httpsHealthChecks.*
  • compute.images.*
  • compute.instanceGroupManagers.*
  • compute.instanceGroups.*
  • compute.instanceTemplates.*
  • compute.instances.*
  • compute.interconnectAttachments.*
  • compute.interconnectLocations.*
  • compute.interconnects.*
  • compute.licenseCodes.*
  • compute.licenses.*
  • compute.machineImages.*
  • compute.machineTypes.*
  • compute.networkEndpointGroups.*
  • compute.networks.*
  • compute.packetMirrorings.get
  • compute.packetMirrorings.list
  • compute.projects.get
  • compute.projects.setCommonInstanceMetadata
  • compute.publicDelegatedPrefixes.delete
  • compute.publicDelegatedPrefixes.get
  • compute.publicDelegatedPrefixes.list
  • compute.publicDelegatedPrefixes.update
  • compute.publicDelegatedPrefixes.updatePolicy
  • compute.regionBackendServices.*
  • compute.regionFirewallPolicies.get
  • compute.regionFirewallPolicies.list
  • compute.regionFirewallPolicies.use
  • compute.regionHealthCheckServices.*
  • compute.regionHealthChecks.*
  • compute.regionNetworkEndpointGroups.*
  • compute.regionNotificationEndpoints.*
  • compute.regionOperations.get
  • compute.regionOperations.list
  • compute.regionSslCertificates.get
  • compute.regionSslCertificates.list
  • compute.regionTargetHttpProxies.*
  • compute.regionTargetHttpsProxies.*
  • compute.regionUrlMaps.*
  • compute.regions.*
  • compute.reservations.get
  • compute.reservations.list
  • compute.resourcePolicies.*
  • compute.routers.*
  • compute.routes.*
  • compute.securityPolicies.get
  • compute.securityPolicies.list
  • compute.securityPolicies.use
  • compute.serviceAttachments.*
  • compute.snapshots.*
  • compute.sslCertificates.get
  • compute.sslCertificates.list
  • compute.sslPolicies.*
  • compute.subnetworks.*
  • compute.targetGrpcProxies.*
  • compute.targetHttpProxies.*
  • compute.targetHttpsProxies.*
  • compute.targetInstances.*
  • compute.targetPools.*
  • compute.targetSslProxies.*
  • compute.targetTcpProxies.*
  • compute.targetVpnGateways.*
  • compute.urlMaps.*
  • compute.vpnGateways.*
  • compute.vpnTunnels.*
  • compute.zoneOperations.get
  • compute.zoneOperations.list
  • compute.zones.*
  • container.*
  • deploymentmanager.compositeTypes.*
  • deploymentmanager.deployments.cancelPreview
  • deploymentmanager.deployments.create
  • deploymentmanager.deployments.delete
  • deploymentmanager.deployments.get
  • deploymentmanager.deployments.list
  • deploymentmanager.deployments.stop
  • deploymentmanager.deployments.update
  • deploymentmanager.manifests.*
  • deploymentmanager.operations.*
  • deploymentmanager.resources.*
  • deploymentmanager.typeProviders.*
  • deploymentmanager.types.*
  • firebase.projects.get
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.locations.*
  • logging.logEntries.create
  • logging.logMetrics.*
  • logging.logServiceIndexes.list
  • logging.logServices.list
  • logging.logs.list
  • logging.notificationRules.*
  • logging.operations.*
  • logging.sinks.*
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.update
  • monitoring.alertPolicies.get
  • monitoring.alertPolicies.list
  • monitoring.dashboards.get
  • monitoring.dashboards.list
  • monitoring.groups.get
  • monitoring.groups.list
  • monitoring.metricDescriptors.create
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.monitoredResourceDescriptors.*
  • monitoring.notificationChannelDescriptors.*
  • monitoring.notificationChannels.get
  • monitoring.notificationChannels.list
  • monitoring.publicWidgets.get
  • monitoring.publicWidgets.list
  • monitoring.services.get
  • monitoring.services.list
  • monitoring.slos.get
  • monitoring.slos.list
  • monitoring.timeSeries.*
  • monitoring.uptimeCheckConfigs.get
  • monitoring.uptimeCheckConfigs.list
  • networkconnectivity.locations.*
  • networkconnectivity.operations.*
  • networksecurity.*
  • networkservices.*
  • opsconfigmonitoring.resourceMetadata.list
  • orgpolicy.policy.get
  • pubsub.*
  • recommender.cloudsqlIdleInstanceRecommendations.*
  • recommender.cloudsqlInstanceActivityInsights.*
  • recommender.cloudsqlInstanceCpuUsageInsights.*
  • recommender.cloudsqlInstanceDiskUsageTrendInsights.*
  • recommender.cloudsqlInstanceMemoryUsageInsights.*
  • recommender.cloudsqlInstanceOutOfDiskRecommendations.*
  • recommender.cloudsqlOverprovisionedInstanceRecommendations.*
  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.list
  • servicedirectory.namespaces.create
  • servicedirectory.namespaces.delete
  • servicedirectory.services.create
  • servicedirectory.services.delete
  • servicenetworking.operations.get
  • servicenetworking.services.addPeering
  • servicenetworking.services.createPeeredDnsDomain
  • servicenetworking.services.deletePeeredDnsDomain
  • servicenetworking.services.get
  • servicenetworking.services.listPeeredDnsDomains
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • stackdriver.projects.get
  • storage.buckets.*
  • storage.multipartUploads.*
  • storage.objects.*
  • trafficdirector.*

Funciones básicas

Rol Título Descripción Permisos Recurso más bajo
roles/owner Propietario Función básica que permite el control total de los recursos de Cloud Composer. composer.entornos.create
composer.entornos.delete
composer.entornos.get
composer.entornos.list
composer.entornos.update
composer.imageversions.list
composer.operations.delete
composer.operations.get
composer.operations.list
composer.dags.list
composer.dags.get
.composer.dags.get.
Proyecto
roles/editor Editor Función básica que permite el control total de los recursos de Cloud Composer. composer.entornos.create
composer.entornos.delete
composer.entornos.get
composer.entornos.list
composer.entornos.update
composer.imageversions.list
composer.operations.delete
composer.operations.get
composer.operations.list
composer.dags.list
composer.dags.get
.composer.dags.get.
Proyecto
roles/viewer Lector Función básica que permite al usuario enumerar y obtener recursos de Cloud Composer. composer.entornos.get
composer.entornos.list
composer.imageversions.list
composer.operations.get
composer.operations.list
composer.dags.list
composer.dags.get
Proyecto

Permisos para métodos de API

En la siguiente tabla, se enumeran los permisos que debe tener el emisor para llamar a cada método de API en la API de Cloud Composer o realizar tareas con las herramientas de Google Cloud que usan la API (como Google Cloud Console o Google Cloud CLI).

Método Permiso
environments.create composer.environments.create y iam.serviceAccounts.actAs en la cuenta de servicio del entorno.
environments.delete composer.environments.delete
environments.get composer.environments.get
environments.list composer.environments.list
environments.update composer.environments.update
operations.delete composer.operations.delete
operations.get composer.operations.get
operations.list composer.operations.list

Permisos para trabajar con DAG desde Google Cloud Console

Los siguientes permisos abarcan cómo trabajar con DAG de Google Cloud Console a través de la IU de DAG:

Permiso Descripción
composer.dags.list Consulta la lista de DAG en la página Detalles del entorno.
composer.dags.get Obtén información detallada sobre los DAG, las ejecuciones de DAG y las tareas en la página de detalles del DAG.
composer.dags.execute Activa los DAG desde la página de detalles del DAG.

Puedes usar el Control de acceso a la IU de Airflow para controlar aún más los permisos de DAG de las cuentas de usuario. La IU de DAG requiere los permisos de control de acceso de la IU de IAM y Airflow para permitir una acción específica en un DAG. Al mismo tiempo, la IU de Airflow valida el acceso del usuario solo con los permisos de control de acceso a la IU de Airflow y omite los permisos de IAM.

Por ejemplo, si un usuario tiene el permiso composer.dags.execute y la función Viewer de Airflow, no podrá activar DAG desde Google Cloud Console. Como ejemplo opuesto, si un usuario no tiene el permiso composer.dags.list, puede ver la lista de DAG en la IU de Airflow.

Usa una cuenta de servicio de otro proyecto

Si deseas que un entorno de Cloud Composer en un proyecto use una cuenta de servicio administrada por el usuario de un proyecto diferente, debes configurar la cuenta de servicio administrada por el usuario para que funcione en todos los proyectos.

Reemplaza SERVICE_PROJECT_NUMBER por el número de proyecto de Cloud Composer.

  1. Edita la política de permisos del proyecto en el que se encuentra tu cuenta de servicio administrada por el usuario:

    1. Otorga la función Creador de tokens de cuenta de servicio a la cuenta de servicio predeterminada de Compute Engine del proyecto en el que se encuentra tu entorno (SERVICE_PROJECT_NUMBER-compute@developer.gserviceaccount.com).

    2. Otorga la función Creador de tokens de cuenta de servicio al agente de servicio de Cloud Composer del proyecto en el que se encuentra tu entorno (service-SERVICE_PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com).

  2. Edita la política de permisos del proyecto en el que se encuentra tu entorno. Otorga las funciones necesarias a la cuenta de servicio administrada por el usuario, como se describe en Asigna funciones a una cuenta de servicio administrada por el usuario. Por ejemplo, en una configuración de IP pública, tu cuenta de servicio administrada por el usuario requiere la función Trabajador de Composer.

¿Qué sigue?