Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Esta página descreve diferentes mecanismos de controle de acesso para a interface do Airflow e interface do DAG. É possível usar esses mecanismos, além do controle de acesso, fornecidas pelo IAM, para separar os usuários no a interface do Airflow e do DAG do seu ambiente.
Visão geral do controle de acesso da interface do Airflow no Cloud Composer
Acesso à interface do Airflow e do DAG e à a visibilidade dos dados e das operações nessas interfaces é controlada em dois níveis O Cloud Composer:
O acesso às interfaces do Airflow e do DAG no Cloud Composer é controladas pelo IAM.
Se uma conta não tem um papel que pode conferir os ambientes do Cloud Composer na sua a interface do Airflow e do DAG não estarão disponíveis.
O IAM não fornece recursos de na interface do Airflow ou do DAG.
O modelo de controle de acesso do Apache Airflow permite reduzir a visibilidade na interface do Airflow e na interface do DAG com base no função do usuário.
O controle de acesso do Apache Airflow é um recurso do Airflow, com próprio modelo de usuários, papéis e permissões, que é diferente do IAM.
O controle de acesso do Apache Airflow usa permissões baseadas em recursos. Todo o Airflow
Os usuários com um papel específico do Airflow recebem as permissões dele. Por exemplo:
Usuários do Airflow que têm um papel com a permissão can delete on Connections
pode excluir conexões na página "Conexões" na interface do Airflow.
Também é possível atribuir Permissões no nível do DAG para DAGs individuais. Para exemplo, para que apenas usuários com um papel específico do Airflow possam visualizar um determinado DAG na interface do Airflow. No Cloud Composer, é possível atribuir automaticamente permissões no nível do DAG, com base na subpasta em que o arquivo DAG está localizado no do Google Cloud.
Se você quiser configurar o acesso para identidades externas por meio federação de identidade da força de trabalho, primeiro conceder acesso ao seu ambiente no IAM, conforme descrito Conceder papéis do IAM a identidades externas nesta seção. Em seguida, use o controle de acesso da interface do Airflow como de costume. Os usuários do Airflow para identidades externas usam o identificador principal do endereço de e-mail e ter valores diferentes preenchidos em outras campos de registro do que as contas do Google.
Antes de começar
- O Registro de papéis por pasta está disponível em Cloud Composer 2.0.16 e versões mais recentes.
Gerenciar papéis e configurações de controle de acesso do Airflow
Usuários com a função de administrador (ou equivalente) podem conferir e modificar o controle de acesso na interface do Airflow.
Na interface do Airflow, é possível definir as configurações de controle de acesso o menu Segurança. Para mais informações sobre o serviço permissões disponíveis e papéis padrão, consulte a Documentação do controle de acesso à IU do Airflow.
O Airflow mantém a própria lista de usuários. Usuários com o papel "Administrador" papel (ou equivalente) pode ver a lista de usuários que abriram a interface do Airflow de um ambiente e foram registrados no Airflow. Essa lista também inclui os usuários pré-registrados manualmente por um administrador, conforme descrito na seção a seguir.
Registrar usuários na interface do Airflow
Novos usuários são registrados automaticamente quando abrem a interface do Airflow de um do Cloud Composer pela primeira vez.
No registro, os usuários recebem o papel especificado no
Opção de configuração [webserver]rbac_user_registration_role
do Airflow. Você pode
controlar a função de usuários recém-registrados, substituindo esse
Opção de configuração do Airflow com um valor diferente.
Se não for especificada, a função de registro padrão será Op
em ambientes com
Airflow 2.
As etapas a seguir são recomendadas para criar uma configuração papel básico para na interface do Airflow:
Os administradores do ambiente abrem a interface do Airflow para o contêiner de nuvem.
Conceda às contas de administrador o papel
Admin
. O papel padrão para novas contas em ambientes com o Airflow 2 é:Op
de dados. Para atribuir o papelAdmin
, execute o seguinte Comando da CLI do Airflow comgcloud
:gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users add-role -- -e USER_EMAIL -r Admin
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;USER_EMAIL
pelo e-mail de uma conta de usuário.
Agora os administradores podem configurar o controle de acesso para novos usuários, incluindo a concessão do papel
Admin
para outros usuários.
Pré-registro de usuários
Os usuários são registrados automaticamente com IDs numéricos das contas de usuário do Google (não endereços de e-mail) como nomes de usuário. Você também pode fazer o pré-registro manual de um usuário e atribuir um papel a eles adicionando um registro de usuário com o conjunto de campos de nome de usuário ao endereço de e-mail principal do usuário. Quando um usuário com um endereço de e-mail correspondência de um registro de usuário pré-registrado faz login na interface do Airflow pela primeira vez o nome de usuário é substituído pelo ID do usuário atual (no momento do primeiro login) identificados pelo endereço de e-mail. A relação entre Identidades do Google (endereços de e-mail) e contas de usuário (IDs de usuário) não for corrigido. Os grupos do Google não podem ser pré-registrados.
Para pré-registrar usuários, use a interface do Airflow ou execute um comando da CLI do Airflow pela Google Cloud CLI.
Para fazer o pré-registro de um usuário com um papel personalizado pela Google Cloud CLI, faça o seguinte: Execute o seguinte comando da CLI do Airflow:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
users create -- \
-r ROLE \
-e USER_EMAIL \
-u USER_EMAIL \
-f FIRST_NAME \
-l LAST_NAME \
--use-random-password # The password value is required, but is not used
Substitua:
ENVIRONMENT_NAME
: o nome do ambiente.LOCATION
: a região em que o ambiente está localizado.ROLE
: um papel do Airflow para o usuário, por exemplo,Op
.USER_EMAIL
: o endereço de e-mail do usuárioFIRST_NAME
eLAST_NAME
: nome e sobrenome do usuário
Exemplo:
gcloud composer environments run example-environment \
--location us-central1 \
users create -- \
-r Op \
-e "example-user@example.com" \
-u "example-user@example.com" \
-f "Name" \
-l "Surname" \
--use-random-password
Remover usuários
Excluir um usuário do Airflow não revoga o acesso dele, porque ele
serão registrados de novo automaticamente na próxima vez que acessarem a interface do Airflow. Para
revogar o acesso a toda a interface do Airflow, remova o composer.environments.get
permissão da política de permissão para seu projeto.
Também é possível alterar a função do usuário para Pública, o que mantém os do usuário, mas remove todas as permissões para a interface do Airflow.
Configurar permissões no nível do DAG automaticamente
O recurso Registro de funções por pasta cria automaticamente um
papel personalizado do Airflow para cada subpasta
diretamente na pasta /dags
e concede esse papel acesso no nível do DAG a todos os
DAGs com arquivos de origem armazenados na respectiva subpasta. Isso
simplifica o gerenciamento de papéis personalizados do Airflow e o acesso deles aos DAGs.
Como funciona o registro de funções por pasta
O Registro de papéis por pasta é uma forma automatizada de configurar e as permissões no nível do DAG. Assim, pode causar conflitos com Outros mecanismos do Airflow que concedem permissões no nível do DAG:
- Como atribuir manualmente permissões do DAG aos papéis.
- Como atribuir DAGs a papéis usando a propriedade
access_control
em um DAG.
Para evitar esses conflitos, a ativação do Registro de funções por pasta também muda o comportamento desses mecanismos.
No Airflow 2:
- É possível conceder acesso ao DAG aos papéis por meio da propriedade
access_control
definidos no código-fonte do DAG. - Conceder manualmente permissões do DAG (por meio da interface do Airflow ou CLI gcloud) podem causar conflitos. Por exemplo, se você conceder manualmente permissões no nível do DAG a um papel por pasta, esses permissões podem ser removidas ou substituídas quando o processador de DAG sincroniza um DAG. Recomendamos não conceder permissões do DAG manualmente.
- Os papéis têm uma união de permissões de acesso ao DAG registradas por pasta
Registro de funções e definidos na propriedade
access_control
de ao DAG.
Os DAGs localizados diretamente na pasta /dags
de nível superior não são atribuídos automaticamente a
qualquer papel por pasta. Eles não podem ser acessados com nenhum papel por pasta. Outra opção
como Administrador, Op, Usuário ou qualquer papel personalizado com permissão
acessá-los pela interface do Airflow e do DAG.
Se você fizer upload de DAGs para subpastas com nomes que correspondem aos papéis integrados do Airflow
e os papéis criados pelo Cloud Composer, além das permissões para DAGs no
essas subpastas ainda serão atribuídas a esses papéis. Por exemplo, fazer o upload de um
O DAG para a pasta /dags/Admin
concede permissões a esse DAG ao administrador
de rede. Os papéis integrados do Airflow incluem Administrador, Op, Usuário, Leitor e Público.
O Cloud Composer cria NoDags e UserNoDags após a classe
O recurso Registro de funções está ativado.
O Airflow executa o registro de papéis por pasta ao processar DAGs
no programador do Airflow. Se houver mais de cem DAGs em seu
você verá uma
de aumento no tempo de análise do DAG.
Se esse for o caso, recomendamos
usam mais memória e CPU para programadores. Você
também pode aumentar o valor do [scheduler]parsing_processes
do Airflow
de configuração do Terraform.
Atribuir automaticamente DAGs a papéis por pasta
Para atribuir automaticamente DAGs a papéis por pasta:
Substitua a seguinte opção de configuração do Airflow:
Seção Chave Valor webserver
rbac_autoregister_per_folder_roles
True
Altere o novo papel de registro de usuário para um papel sem acesso a nenhum DAG. Dessa forma, os novos usuários não terão acesso aos DAGs até que um administrador atribui às contas um papel com permissões para DAGs específicos.
UserNoDags é um papel criado pelo Cloud Composer apenas quando O recurso Registro de papéis por pasta está ativado. É um equivalente à Papel de usuário, mas sem acesso a nenhum DAG.
Substitua a seguinte opção de configuração do Airflow:
Seção Chave Valor webserver
rbac_user_registration_role
UserNoDags
Verifique se os usuários estão registrados no Airflow.
Atribua papéis aos usuários usando uma das abordagens:
- permitir que o Airflow crie papéis automaticamente com base nas subpastas de DAGs atribua usuários a esses papéis.
- Criar papéis vazios para as subpastas de DAGs, com nomes de papéis correspondentes
o nome de uma subpasta e, em seguida, atribuir usuários a esses papéis. Por exemplo:
Na pasta
/dags/CustomFolder
, crie um papel com o nomeCustomFolder
.
Faça upload de DAGs em subpastas com nomes que correspondem aos papéis atribuídos aos usuários. Essas subpastas precisam estar localizadas na pasta
/dags
no bucket do seu ambiente de execução. O Airflow adiciona permissões aos DAGs em um para que apenas os usuários com o papel correspondente possam acessá-las usando a interface do Airflow e do DAG.
Configurar manualmente permissões no nível do DAG
É possível configurar Permissões no nível do DAG para papéis personalizados especificar quais DAGs são visíveis para determinados grupos de usuários.
Para configurar permissões no nível do DAG na interface do Airflow:
- O administrador cria papéis vazios para agrupar DAGs.
- O administrador atribui os usuários aos papéis apropriados.
- O administrador ou os usuários atribuem papéis aos DAGs.
- Na interface do Airflow, os usuários só podem ver os DAGs atribuídos ao grupo deles.
Os DAGs podem ser atribuídos aos papéis por meio de propriedades do DAG ou da interface do Airflow.
Como atribuir DAGs a papéis na interface do Airflow
Um administrador pode atribuir as permissões necessárias no nível do DAG aos na interface do Airflow.
Esta operação não é compatível com a interface do DAG.
Como atribuir DAGs a papéis nas propriedades do DAG
É possível definir
Parâmetro DAG access_control
em um DAG, especificando
os papéis de agrupamento de DAGs atribuídos a ele.
Nas versões do Airflow 2 anteriores à 2.1.0, o administrador, o desenvolvedor do DAG ou
processo automatizado precisa executar o comando do Airflow sync-perm
para
aplicar as novas configurações de controle de acesso.
No Airflow 2.1.0 e em versões posteriores, a execução desse comando não é mais necessária, porque o programador aplica permissões no nível do DAG ao analisar DAG.
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Mapear registros de auditoria na interface do Airflow para os usuários
Os registros de auditoria na interface do Airflow são mapeados para IDs numéricos das contas de usuário do Google. Para Por exemplo, se um usuário pausar um DAG, uma entrada será adicionada aos registros.
Para acessar os registros de auditoria, acesse a página Procurar > Registros de auditoria a interface do Airflow.
Uma entrada típica lista um ID numérico no campo Owner:
accounts.google.com:NUMERIC_ID
É possível mapear IDs numéricos para e-mails de usuários no
Segurança > Listar usuários. Esta página está disponível para
usuários com o papel Admin
.
Observe que a relação entre Identidades do Google (endereços de e-mail) e contas de usuário (IDs de usuário) não for corrigido.
A seguir
- Substituir as opções de configuração do Airflow
- Visão geral da segurança
- Controle de acesso do Cloud Composer