Controle de acesso com o IAM

Cloud Composer 1 | Cloud Composer 2

Esta página descreve as opções de controle de acesso disponíveis no Cloud Composer e explica como atribuir papéis.

Visão geral

Para saber mais sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível controlar permissões para a interface da Web do Airflow além de ativar ou desativar o acesso a ela. Para saber mais, consulte Controle de acesso baseado em papéis do Airflow.

Sobre o Identity and Access Management no Cloud Composer

O Cloud Composer usa o Identity and Access Management (IAM) para controle de acesso.

Para controlar o acesso a diferentes recursos do Cloud Composer, atribua papéis e permissões às contas de serviço do IAM e às contas de usuário no projeto do Google Cloud.

O Cloud Composer usa dois tipos de contas de serviço do IAM:

Sobre a conta do agente de serviço do Cloud Composer

Sobre a conta do agente de serviço do Cloud Composer Essa conta é chamada de Agente de serviço do Cloud Composer.

O agente de serviço do Cloud Composer é usado em todos os ambientes no projeto.

Sobre as contas de serviço dos ambientes do Cloud Composer

Ao criar um ambiente, você especifica uma conta de serviço. O cluster do ambiente usa essa conta de serviço para executar pods com diferentes componentes do ambiente, como workers e programadores do Airflow.

Por padrão, os ambientes do Cloud Composer são executados com a conta de serviço padrão do Compute Engine. Essa conta de serviço gerenciada pelo Google tem mais permissões do que o necessário para executar ambientes do Cloud Composer, geralmente o papel básico de Editor.

É recomendável configurar uma conta de serviço gerenciada pelo usuário para ambientes do Cloud Composer. Atribua a ela um papel específico do Cloud Composer. Em seguida, especifique essa conta de serviço ao criar novos ambientes.

Sobre os papéis para usuários do Cloud Composer

Para acionar uma operação de ambiente, um usuário precisa ter permissões suficientes. Por exemplo, se você quiser criar um novo ambiente, será necessário ter a permissão composer.environments.create.

No Cloud Composer, as permissões individuais são agrupadas em papéis. É possível atribuí-los aos principais.

Se a conta de serviço tiver o papel Editor do projeto, será possível executar todas as operações do ambiente. No entanto, esse papel tem permissões amplas. Para usuários que trabalham com ambientes, é recomendável usar papéis específicos do Cloud Composer. Dessa forma, é possível restringir o escopo das permissões e fornecer diferentes níveis de acesso para principais diferentes. Por exemplo, um usuário pode ter permissões para criar, atualizar, fazer upgrade e excluir ambientes, enquanto outro usuário só pode ver ambientes e acessar a interface da Web do Airflow.

Atribuir papéis a uma conta de serviço gerenciada pelo usuário

Para uma conta de serviço gerenciada pelo usuário que executa ambientes do Cloud Composer:

  • Para uma configuração de IP público, atribua o papel de Worker do Composer (composer.worker).
  • Para uma configuração de IP particular:
    1. Atribua o papel Worker do Composer (composer.worker).
    2. Atribua o papel Usuário da conta de serviço (iam.serviceAccountUser).

Atribuir funções aos usuários

Dependendo do nível de acesso que você quer dar aos ambientes do Cloud Composer, conceda as seguintes permissões aos principais.

Gerenciar ambientes e buckets de ambiente

Para um usuário que pode ver, criar, atualizar, fazer upgrade e excluir ambientes, gerenciar objetos (como arquivos DAG) nos buckets do ambiente e acessar a interface da Web do Airflow:

  1. Atribua o papel Administrador de objetos do armazenamento e do ambiente (composer.environmentAndStorageObjectAdmin).
  2. Atribua o papel Usuário da conta de serviço (iam.serviceAccountUser).

Gerenciar ambientes

Para um usuário que pode ver, criar, atualizar, fazer upgrade, excluir ambientes e acessar a interface da Web do Airflow:

  1. Atribua o papel Administrador do Composer (composer.admin).
  2. Atribua o papel Usuário da conta de serviço (iam.serviceAccountUser).

Ver ambientes e gerenciar buckets de ambientes

Para que um usuário pode ver ambientes, acessar a interface da Web do Airflow e gerenciar objetos nos buckets do ambiente (por exemplo, para fazer upload de novos arquivos DAG):

  1. Atribua o papel Usuário de ambiente e leitor de objeto de armazenamento (composer.environmentAndStorageObjectViewer).
  2. Atribua o papel Administrador de objeto de armazenamento (storage.objectAdmin).

Ver ambientes e buckets de ambiente

Para um usuário que pode ver ambientes, acessar a interface da Web do Airflow e visualizar objetos em buckets do ambiente, atribua o papel Usuário do ambiente e leitor de objetos do armazenamento (composer.environmentAndStorageObjectViewer).

Ver ambientes

Para um usuário que pode ver ambientes e acessar a interface da Web do Airflow, atribua o papel Usuário do Composer (composer.user).

Atribuir permissões para usar gcloud em ambientes

As permissões a seguir são necessárias para usar a ferramenta de linha de comando gcloud com os ambientes do Cloud Composer, por exemplo, para executar comandos da CLI do Airflow.

Se você quiser gerenciar ambientes ou buckets de ambiente com comandos gcloud composer, também precisará ter um papel com permissões suficientes para isso.

Para usar o gcloud com os ambientes do Cloud Composer, você precisa das seguintes permissões:

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

Papéis

Papel Permissões

Extensão do agente de serviço da API Cloud Composer v2
(roles/composer.ServiceAgentV2Ext)

A extensão do agente de serviço da API Cloud Composer v2 é um papel complementar necessário para gerenciar os ambientes da Composer v2.

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

Administrador do Composer
(roles/composer.admin)

Concede controle total dos recursos do Cloud Composer.

Recursos de nível mais baixo em que é possível conceder esse papel:

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

Administrador de objetos do armazenamento e do ambiente
(roles/composer.environmentAndStorageObjectAdmin)

Concede controle total dos recursos do Cloud Composer e dos objetos em todos os buckets do projeto.

Recursos de nível mais baixo em que é possível conceder esse papel:

  • Projeto
  • composer.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.list
  • storage.objects.*

Usuário do ambiente e leitor de objetos do armazenamento
(roles/composer.environmentAndStorageObjectViewer)

Concede as permissões necessárias para listar e receber ambientes e operações do Cloud Composer. Concede acesso somente leitura a objetos em todos os buckets do projeto.

Recursos de nível mais baixo em que é possível conceder esse papel:

  • Projeto
  • 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 compartilhada do Cloud Composer
(roles/composer.sharedVpcAgent)

Papel a ser atribuído à conta de serviço do agente do Cloud Composer no projeto host da VPC compartilhada

  • 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.*

Usuário do Cloud Composer
(roles/composer.user)

Concede as permissões necessárias para listar e receber ambientes e operações do Cloud Composer.

Recursos de nível mais baixo em que é possível conceder esse papel:

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

Worker do Composer
(roles/composer.worker)

Concede as permissões necessárias para executar uma VM de ambiente do Cloud Composer. Destinado a contas de serviço.

Recursos de nível mais baixo em que é possível conceder esse papel:

  • Projeto
  • 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
  • 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.*

Papéis básicos

Papel Nome Descrição Permissões Menor recurso
roles/owner Proprietário Papel básico que permite o controle total dos recursos do 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
Projeto
roles/editor Editor Papel básico que permite o controle total dos recursos do 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
Projeto
roles/viewer Leitor Papel básico que permite ao usuário listar e acessar recursos do Cloud Composer. composer.environments.get
composer.environments.list
composer.imageversions.list
composer.operations.get
composer.operations.list
Projeto

Permissões

Na tabela a seguir, listamos as permissões que o autor da chamada precisa ter para chamar cada método na API Cloud Composer ou para executar tarefas por meio das ferramentas do Google Cloud que usam a API, como o Console do Google Cloud ou o SDK do Cloud.

Método Permissão
environments.create composer.environments.create e iam.serviceAccounts.actAs na conta de serviço do ambiente.
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

Como usar uma conta de serviço de outro projeto

Se você quiser que um ambiente do Cloud Composer em um projeto use uma conta de serviço gerenciada pelo usuário de um projeto diferente:

  1. Configure a conta de serviço gerenciada pelo usuário para funcionar em vários projetos.
  2. Como parte desse processo, você precisa conceder o papel Criador de token da conta de serviço às seguintes contas de serviço gerenciadas pelo Google na sua conta de serviço gerenciada pelo usuário:

    1. Conta de serviço padrão do Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com)
    2. Agente de serviço do Cloud Composer (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com)

A seguir