Control de acceso

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 Administra el acceso a proyectos, carpetas y organizaciones.

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

Acerca de la administración de identidades y accesos en Cloud Composer

Cloud Composer usa la administración de identidades y accesos (IAM) para el control de acceso.

Puedes controlar el acceso a diferentes características de Cloud Composer mediante la asignación de 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 servicios de Cloud Composer

En el 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 del entorno usa esta cuenta de servicio para ejecutar pods con componentes del entorno diferentes, como programadores y trabajadores 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 configurar 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.

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

Si tu cuenta de servicio tiene la función de editor de proyectos, 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 específicas de Cloud Composer. De esta manera, puedes limitar el alcance de los permisos y proporcionar diferentes niveles de acceso a diferentes principales. Por ejemplo, un usuario puede tener permisos para crear, actualizar, actualizar y borrar entornos, mientras que otro usuario solo puede ver entornos y acceder a la interfaz web de Airflow.

Asigna funciones a la cuenta del agente de servicios de Cloud Composer

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

Cloud Composer 2 usa GKE Autopilot, que requiere Workload Identity. Para admitir Workload Identity, la cuenta de servicio de tu entorno debe tener vinculaciones a la cuenta de servicio de Kubernetes que ejecuta el clúster de tu entorno. Estas vinculaciones son necesarias para que los pods del clúster del entorno puedan acceder a los recursos del proyecto de Google Cloud. Por ejemplo, para leer archivos de definición de DAG del bucket del entorno.

A fin de crear vinculaciones entre la cuenta de servicio de tu entorno y la cuenta de servicio de Kubernetes del clúster de tu entorno, la cuenta de agente de servicio de Composer debe tener los permisos suficientes para hacerlo. Esto requiere permisos iam.serviceAccounts.getIamPolicy y iam.serviceAccounts.setIamPolicy, que proporciona la función de Extensión del agente de servicios de la API de Cloud Composer v2. Esta función no se otorga de forma automática. Debes otorgarlo de forma manual una vez por proyecto.

Para obtener instrucciones sobre cómo agregar esta función, consulta Crea entornos.

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 Trabajador de Composer (composer.worker).
  • Para una configuración IP privada:
    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 para los entornos de Cloud Composer, otorga los siguientes permisos a los principales.

Administrar entornos y depósitos de entorno

Para un usuario que pueda ver, crear, actualizar, actualizar y borrar entornos, administrar objetos (como archivos DAG) en los depósitos de entorno y acceder a la interfaz web de Airflow, haz lo siguiente:

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

Administra entornos

Si deseas un usuario que pueda ver, crear, actualizar, actualizar y borrar entornos, y acceder a la interfaz web de Airflow, sigue estos pasos:

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

Ver entornos y administrar depósitos de entorno

Para un usuario que pueda ver entornos, acceder a la interfaz web de Airflow y administrar objetos en los depósitos de entornos (por ejemplo, para subir nuevos archivos DAG):

  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).

Ver los entornos y los depósitos de entorno

Para un usuario que pueda visualizar entornos, acceder a la interfaz web de Airflow y ver objetos en depósitos de entornos, asigna el Usuario de entorno y Visualizador de objetos de almacenamiento (composer.environmentAndStorageObjectViewer. ).

Ver entornos

Para un usuario que pueda ver entornos y acceder a la interfaz web de Airflow, asigna la función Composer User (composer.user).

Asigna permisos para usar gcloud con entornos

Se requieren los siguientes permisos para usar la herramienta de línea de comandos de gcloud con entornos de Cloud Composer, por ejemplo, a fin de ejecutar comandos de la CLI de Airflow.

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

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

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

Funciones

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.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • 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.environments.get
  • composer.environments.list
  • composer.imageversions.*
  • 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.environments.get
  • composer.environments.list
  • composer.imageversions.*
  • 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
  • container.*
  • containeranalysis.occurrences.create
  • containeranalysis.occurrences.delete
  • containeranalysis.occurrences.get
  • containeranalysis.occurrences.list
  • containeranalysis.occurrences.update
  • logging.logEntries.create
  • monitoring.metricDescriptors.create
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.monitoredResourceDescriptors.*
  • monitoring.timeSeries.*
  • 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.objects.*

Funciones básicas

Función 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.environments.create
composer.environments.delete
composer.environments.get
composer.environments.list
composer. environments.update
composer.imageversions.list
composer.operations.delete
composer.operations.get
composer.operations list
iam.serviceAccounts.actAs
Proyecto
roles/editor Editor Función básica que permite el control total de los recursos de Cloud Composer. composer.environments.create
composer.environments.delete
composer.environments.get
composer.environments.list
composer. environments.update
composer.imageversions.list
composer.operations.delete
composer.operations.get
composer.operations list
iam.serviceAccounts.actAs
Proyecto
roles/viewer Lector Función básica que permite al usuario enumerar y obtener recursos de Cloud Composer. composer.environments.get
composer.environments.list
composer.imageversions.list
composer.operations.get
composer.operations.list
Proyecto

Permisos

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

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

Usa una cuenta de servicio de otro proyecto

Si quieres que un entorno de Cloud Composer en un proyecto use una cuenta de servicio administrada por el usuario de un proyecto diferente:

  1. Configura la cuenta de servicio administrada por el usuario para que funcione en todos los proyectos.
  2. Como parte de este proceso, debes otorgar la función de creador de tokens de cuenta de servicio a las siguientes cuentas de servicio administradas por Google en tu cuenta de servicio administrada por el usuario:

    1. Cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com)
    2. Agente de servicio de Cloud Composer (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com)

¿Qué sigue?