Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Nesta página, descrevemos diferentes mecanismos de controle de acesso para a interface do Airflow e a interface de DAG. É possível usar esses mecanismos, além do controle de acesso fornecido pelo IAM, para separar usuários na interface do Airflow e da DAG do seu ambiente.
Visão geral do controle de acesso da interface do Airflow no Cloud Composer
O acesso à interface do Airflow e à interface do DAG e a visibilidade de dados e operações nessas interfaces são controlados em dois níveis no Cloud Composer:
O acesso à interface do Airflow e da DAG no Cloud Composer é controlado pelo IAM.
Se uma conta não tiver uma função que possa acessar ambientes do Cloud Composer no seu projeto, a interface do Airflow e a interface do DAG não estarão disponíveis.
O IAM não oferece nenhum controle de permissão refinado adicional na interface do Airflow ou da DAG.
O modelo de controle de acesso do Apache Airflow permite reduzir a visibilidade na IU do Airflow e na IU da DAG com base na função do usuário.
O controle de acesso do Apache Airflow é um recurso do Airflow, com um modelo próprio 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. Todos os usuários do Airflow com uma função específica recebem as permissões desse papel. Por exemplo,
os usuários do Airflow que têm uma função com a permissão can delete on Connections
podem excluir conexões na página "Conexões" da interface do Airflow.
Também é possível atribuir permissões no nível do DAG para DAGs individuais. Por exemplo, para que apenas usuários com um papel específico do Airflow possam acessar 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 bucket do ambiente.
Antes de começar
A interface do Airflow com controle de acesso está disponível para as versões 1.13.4 ou mais recentes do Cloud Composer e para o Airflow 1.10.10 ou versões mais recentes. O ambiente também precisa executar o Python 3.
O Registro de papéis por pasta está disponível no Cloud Composer 1.18.12 e em versões mais recentes no Airflow 2 e no Cloud Composer 1.13.4 e em versões mais recentes no Airflow 1.
Ativar o controle de acesso da interface do Airflow
Airflow 2
A interface do Airflow com controle de acesso está sempre ativada no Airflow 2.
Airflow 1
Para ativar a interface do Airflow com o Controle de acesso, substitua a seguinte opção de configuração do Airflow:
Seção | Chave | Valor |
---|---|---|
webserver |
rbac |
True |
É possível fazer isso para um ambiente existente ou ao criar um novo.
Com essa configuração, seu ambiente executa a interface do Airflow com o controle de acesso em vez da interface clássica do Airflow.
Gerenciar papéis e configurações de controle de acesso do Airflow
Os usuários com a função de administrador (ou equivalente) podem conferir e modificar as configurações de controle de acesso na interface do Airflow.
Na interface do Airflow, é possível configurar as configurações de controle de acesso no menu Security. Para mais informações sobre o modelo de controle de acesso do Airflow, as permissões disponíveis e os papéis padrão, consulte a documentação do controle de acesso da interface do Airflow.
O Airflow 1 trata a função de usuário como um modelo para todas as funções personalizadas. O Airflow
copia continuamente as permissões da função "Usuário" para todas as funções personalizadas, exceto
as permissões da all_dags
.
O Airflow mantém a própria lista de usuários. Os usuários com a função de administrador (ou equivalente) podem conferir a lista de usuários que abriram a IU do Airflow de um ambiente e foram registrados no Airflow. Essa lista também inclui usuários pré-registrados manualmente por um administrador, conforme descrito na próxima seção.
Registrar usuários na interface do Airflow
Novos usuários são registrados automaticamente quando abrem a interface do Airflow de um ambiente do Cloud Composer pela primeira vez.
No registro, os usuários recebem o papel especificado na
opção de configuração [webserver]rbac_user_registration_role
do Airflow. Para controlar a função dos usuários recém-registrados, substitua essa opção de configuração do Airflow por um valor diferente.
Se não for especificado, o papel de registro padrão será Op
em ambientes com o Airflow 2.
Em ambientes com o Airflow 1.10.*, o papel de registro padrão é Admin
.
As etapas a seguir são recomendadas para criar uma configuração básica de papéis para a interface do Airflow:
Airflow 2
Os administradores do ambiente abrem a interface do Airflow para o ambiente recém-criado.
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 com a CLI gcloud: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.
Airflow 1
Os administradores do ambiente abrem a interface do Airflow para o ambiente recém-criado, em que são registrados automaticamente com o papel
Admin
.Modifique a seguinte opção de configuração do Airflow para o papel necessário para novos usuários. Por exemplo, para
User
.Seção Chave Valor webserver
rbac_user_registration_role
User
ou outra função que não seja de administradorAgora os administradores podem configurar o controle de acesso da interface do Airflow para novos usuários, incluindo a concessão do papel
Admin
a outros usuários.
Pré-registrar usuários
Os usuários são registrados automaticamente com IDs numéricos de contas de usuário do Google (não endereços de e-mail) como nomes de usuário. Também é possível fazer o pré-registro manual de um usuário e atribuir um papel a ele adicionando um registro de usuário com o campo de nome de usuário definido como o endereço de e-mail principal do usuário. Quando um usuário com um endereço de e-mail que corresponde a 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 identificado no endereço de e-mail no momento do primeiro login. A relação entre identidades do Google (endereços de e-mail) e contas de usuário (IDs de usuário) não é fixa. Não é possível fazer o pré-registro de Grupos do Google.
Para pré-registrar usuários, use a interface do Airflow ou execute um comando da CLI do Airflow pela CLI do Google Cloud.
Para pré-registrar um usuário com uma função personalizada pela Google Cloud CLI, 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 ambienteLOCATION
: a região em que o ambiente está localizadoROLE
: uma função 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
A exclusão de um usuário do Airflow não revoga o acesso a esse usuário, porque ele
é registrado automaticamente na próxima vez que acessar a interface do Airflow. Para
revogar o acesso a toda a interface do Airflow, remova a permissão composer.environments.get
da política de permissão do projeto.
Também é possível mudar a função do usuário para "Público", o que mantém o registro do usuário, mas remove todas as permissões da IU do Airflow.
Configurar permissões no nível do DAG automaticamente
O recurso de registro de papéis por pasta cria automaticamente uma função personalizada do Airflow para cada subpasta diretamente na pasta /dags
e concede a essa função acesso ao nível do DAG a todas as DAGs que têm o arquivo de origem armazenado 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 maneira automatizada de configurar papéis e as permissões deles no nível do DAG. Por isso, ele pode causar conflitos com outros mecanismos do Airflow que concedem permissões no nível do DAG:
- Atribuir manualmente permissões do DAG a papéis.
- Atribuir DAGs a papéis usando a propriedade
access_control
em um DAG.
Para evitar esses conflitos, ativar o registro de funções por pasta também muda o comportamento desses mecanismos.
No Airflow 1, a possibilidade de usar esses mecanismos é desativada quando o Registro de papéis por pasta está ativado. Todo o gerenciamento de permissões no nível do DAG acontece apenas pelo registro de papéis por pasta.
No Airflow 2:
- É possível conceder acesso a papéis ao DAG pela propriedade
access_control
definida no código-fonte do DAG. - Conceder permissões de DAG manualmente (pela interface do Airflow ou pela CLI gcloud) pode causar conflitos. Por exemplo, se você conceder manualmente permissões no nível do DAG a uma função por pasta, essas permissões poderão ser removidas ou substituídas quando o processador do DAG sincronizar um DAG. Recomendamos que você não conceda permissões do DAG manualmente.
- Os papéis têm uma união de permissões de acesso ao DAG registradas por registro de papéis por
pasta e definidas na propriedade
access_control
do DAG.
Os DAGs localizados diretamente na pasta /dags
de nível superior não são atribuídos automaticamente a
nenhuma função por pasta. Eles não podem ser acessados com nenhuma função por pasta. Outros
papéis, como administrador, operador, usuário ou qualquer papel personalizado que tenha permissões concedidas, podem
acessar as permissões pela interface do Airflow e do DAG.
Se você fizer o upload de DAGs para subpastas com nomes que correspondem a funções integradas do Airflow e funções criadas pelo Cloud Composer, as permissões para DAGs nessas subpastas ainda serão atribuídas a essas funções. Por exemplo, fazer upload de um
DAG para a pasta /dags/Admin
concede permissões a esse DAG para o papel de
administrador. As funções integradas do Airflow incluem administrador, operador, usuário, leitor e público.
O Cloud Composer cria NoDags e UserNoDags depois que o recurso de registro de papéis por pasta é ativado.
O Airflow executa o registro de papéis por pasta quando processa DAGs
no programador do Airflow. Se houver mais de cem DAGs no seu
ambiente, talvez ocorra um
aumento no tempo de análise do DAG.
Nesse caso, recomendamos aumentar o parâmetro [scheduler]max_threads
para um ambiente do Airflow 1 ou [scheduler]parsing_processes
para o
Airflow 2.
Atribuir automaticamente DAGs a papéis por pasta
Para atribuir automaticamente DAGs a papéis por pasta:
Modifique a seguinte opção de configuração do Airflow:
Seção Chave Valor webserver
rbac_autoregister_per_folder_roles
True
Mude a função de registro do novo usuário para uma sem acesso a DAGs. Dessa forma, os novos usuários não têm acesso a nenhum DAG até que um administrador designe uma função com permissões para DAGs específicos nas contas.
UserNoDags e NoDags são papéis criados pelo Cloud Composer somente quando o recurso de registro de papéis por pasta está ativado. Elas são equivalentes à função de usuário, mas sem acesso a DAGs. A função UserNoDags é criada no Airflow 2, e a função NoDags é criada no Airflow 1.
No Airflow 2, substitua a seguinte opção de configuração do Airflow:
Seção Chave Valor webserver
rbac_user_registration_role
UserNoDags
No Airflow 1, substitua a seguinte opção de configuração do Airflow:
Seção Chave Valor webserver
rbac_user_registration_role
NoDags
Verifique se os usuários estão registrados no Airflow.
Atribua funções aos usuários usando uma destas abordagens:
- Permita que o Airflow crie automaticamente funções com base nas subpastas de DAGs e atribua usuários a essas funções.
- Crie funções vazias para as subpastas de DAGs com nomes de função correspondentes ao nome de uma subpasta e atribua usuários a essas funções. Por exemplo,
para a pasta
/dags/CustomFolder
, crie uma função chamadaCustomFolder
.
Faça o upload de DAGs para subpastas com nomes que correspondem às funções atribuídas aos usuários. Essas subpastas precisam estar localizadas na pasta
/dags
no bucket do ambiente. O Airflow adiciona permissões a DAGs em uma subpasta, para que apenas usuários com a função correspondente possam acessá-las pela IU do Airflow e da DAG.
Configurar permissões no nível do DAG manualmente
É possível configurar permissões no nível do DAG para funções personalizadas e especificar quais DAGs ficam visíveis para grupos de usuários específicos.
Para configurar permissões no nível do DAG na interface do Airflow:
- O administrador cria funções vazias para agrupar DAGs.
- O administrador atribui os usuários às funções apropriadas.
- O administrador ou os usuários atribuem DAGs a funções.
- Na interface do Airflow, os usuários só podem ver os DAGs atribuídos ao grupo.
Os DAGs podem ser atribuídos a papéis por propriedades do DAG ou pela interface do Airflow.
Como atribuir DAGs a papéis na interface do Airflow
Um administrador pode atribuir as permissões no nível do DAG necessárias a papéis apropriados na interface do Airflow.
Essa operação não é compatível com a interface da DAG.
Como atribuir DAGs a papéis nas propriedades do DAG
É possível definir o
parâmetro DAG access_control
em um DAG, especificando
os papéis de agrupamento do DAG a que ele é atribuído.
Airflow 2
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Airflow 1
dag = DAG(
access_control={
'DagGroup': {'can_dag_edit', 'can_dag_read'},
},
...
)
Mapear registros de auditoria na interface do Airflow para usuários
Os registros de auditoria na interface do Airflow são mapeados para IDs numéricos de contas de usuário do Google. Por exemplo, se um usuário pausar um DAG, uma entrada será adicionada aos registros.
Airflow 2
No Airflow 2, é possível conferir os registros de auditoria na página Browse > Audit Logs da interface do Airflow.

Airflow 1
No Airflow 1, é possível conferir os registros de auditoria na página Browse > Logs.

Uma entrada típica lista um ID numérico no campo Proprietário:
accounts.google.com:NUMERIC_ID
. É possível mapear IDs numéricos para e-mails de usuários na página
Security > List Users. Esta página está disponível para
usuários com a função Admin
.
A relação entre identidades do Google (endereços de e-mail) e contas de usuário (IDs de usuário) não é fixa.
A seguir
- Substituir as opções de configuração do Airflow
- Visão geral da segurança
- Controle de acesso do Cloud Composer