Como usar o controle de acesso da IU do Airflow

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Cloud Composer 1 | Cloud Composer 2

Nesta página, descrevemos o controle de acesso da IU do Airflow, também chamado de controle de acesso baseado em papéis do Airflow, ou RBAC do Airflow, no Cloud Composer. Esse recurso fornece um mecanismo extra para separar usuários na IU do Airflow e da IU de DAG do seu ambiente.

Visão geral do controle de acesso da IU do Airflow no Cloud Composer

O Cloud Composer é compatível com a versão da comunidade de Controle de acesso da IU do Airflow. Essa função permite reduzir a visibilidade do DAG na IU do Airflow e na IU do DAG com base no papel do usuário.

O acesso à IU do Airflow e à IU do DAG e a visibilidade dos dados e das operações nessas IUs são controlados em dois níveis no Cloud Composer:

  1. O acesso à IU do Airflow e à IU do DAG no Cloud Composer é controlada pelo IAM.

    Primeiro, os usuários precisam fazer a autenticação no Identity-Aware Proxy com as permissões de IAM adequadas. Depois, eles podem acessar a IU do Airflow.

    Quando os usuários têm acesso à IU do Airflow, o IAM não fornece nenhum controle de permissões refinado adicional na IU do Airflow ou da DAG.

  2. O modelo de controle de acesso do Apache Airflow fornece uma camada extra que controla a visibilidade e o acesso em páginas e DAGs individuais na IU do Airflow e da DAG.

Antes de começar

  • O registro de papéis por pasta está disponível no Cloud Composer 1.18.12 e em versões posteriores no Airflow 2 e no Cloud Composer 1.13.4 e versões mais recentes no Airflow 1.

Ativar a IU do Airflow com o controle de acesso

Airflow 2

A IU do Airflow com controle de acesso está sempre ativada no Airflow 2.

Airflow 1

Para ativar a IU do Airflow com o controle de acesso, modifique 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 IU do Airflow com o controle de acesso em vez da IU clássica do Airflow.

Gerenciar funções do Airflow e configurações de controle de acesso

Os usuários com o papel de administrador (ou equivalente) podem ver e modificar as configurações de controle de acesso na IU do Airflow.

Na IU do Airflow, defina as configurações de controle de acesso no menu Segurança. 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 de controle de acesso da IU do Airflow.

O Airflow 1 trata o papel do usuário como um modelo para todos os papéis personalizados. O Airflow copia continuamente permissões do papel de usuário para todos os papéis personalizados, exceto para all_dags.

O Airflow mantém sua própria lista de usuários. Os usuários com o papel de administrador (ou equivalente) podem visualizar 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 seção a seguir.

Registrar usuários na IU do Airflow

Novos usuários são registrados automaticamente quando abrem a IU 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. É possível controlar o papel de usuários recém-registrados modificando essa opção de configuração do Airflow com 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 papel para a IU do Airflow:

Airflow 2

  1. Os administradores de ambiente abrem a IU do Airflow para o ambiente recém-criado.

  2. 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 papel Admin, execute o seguinte comando da CLI do Airflow com gcloud:

      gcloud composer environments run ENVIRONMENT_NAME \
        --location LOCATION \
        users add-role -- -e USER_EMAIL -r Admin
    

    Substitua:

    • ENVIRONMENT_NAME pelo nome do ambiente
    • LOCATION pela região em que o ambiente está localizado;
    • USER_EMAIL pelo e-mail de uma conta de usuário.
  3. 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

  1. Os administradores do ambiente abrem a IU do Airflow para o ambiente recém-criado, em que são registrados automaticamente com o papel Admin.

  2. 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 administrador
  3. Os administradores agora podem configurar o controle de acesso da IU do Airflow para novos usuários, incluindo a concessão do papel Admin a outros usuários.

Remover usuários

Excluir um usuário do Airflow não revoga o acesso dele, porque é registrado de novo automaticamente na próxima vez que acessa a IU do Airflow. Para revogar o acesso a toda a IU do Airflow, remova a permissão composer.environments.get da política de permissão do projeto.

Também é possível alterar o papel 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 um papel personalizado do Airflow para cada subpasta diretamente na pasta /dags e concede a ele acesso no nível do DAG a todos os DAGs que tenham o arquivo de origem armazenado nessa respectiva subpasta. Isso simplifica o gerenciamento dos papéis personalizados do Airflow e o acesso aos DAGs.

Como funciona o registro de papéis por pasta

O registro de papéis por pasta é uma maneira automatizada de configurar papéis e as permissões no nível do DAG. Dessa forma, ele pode causar conflitos com outros mecanismos do Airflow que concedem permissões no nível do DAG:

Para evitar esse tipo de conflito, ativar o registro de papéis por pasta também muda o comportamento desses mecanismos.

No Airflow 1, não é possível usar esses mecanismos quando o registro de papéis por pasta está ativado. Todo o gerenciamento de permissões no nível do DAG acontece apenas por meio do registro de papéis por pasta.

No Airflow 2:

  • Você pode conceder acesso ao DAG a papéis com a propriedade access_control definida no código-fonte do DAG.
  • A concessão manual de permissões do DAG (pela IU do Airflow ou pela CLI gcloud) pode causar conflitos. Por exemplo, se você conceder manualmente permissões no nível do DAG a um papel por pasta, essas permissões poderão ser removidas ou substituídas quando o processador DAG sincronizar um DAG. Recomendamos não conceder permissões do DAG manualmente.
  • Os papéis têm uma combinação de permissões de acesso do DAG registradas pelo registro de papéis por pasta e definidas na propriedade access_control do DAG.

Os DAGs localizados diretamente na pasta de nível superior /dags não são atribuídos automaticamente a qualquer papel por pasta. Eles não são acessíveis com nenhum papel por pasta. Outros papéis, como Administrador, Op, Usuário ou qualquer papel personalizado que tenha permissões concedidas, podem acessá-los pela IU do Airflow e da IU de DAG.

Se você tiver DAGs em subpastas com nomes que correspondam aos papéis integrados do Airflow (administrador, Op, Usuário, Leitor, Público) ou aos papéis NoDags e UserNoDags, as permissões para DAGs nessas subpastas ainda serão atribuídas a esses papéis. Por exemplo, o upload de um DAG para a pasta /dags/Admin concede permissões a ele para o papel de Administrador.

O Airflow executa o registro de papéis por pasta quando processa DAGs no programador do Airflow. Caso haja mais de cem DAGs no ambiente, talvez você veja um aumento no tempo de análise do DAG. Se esse for o caso, recomendamos aumentar o parâmetro [scheduler]max_threads para um ambiente do Airflow 1 ou [scheduler]parsing_processes para o Airflow 2.

Atribuir DAGs automaticamente a papéis por pasta

Para atribuir DAGs automaticamente a papéis por pasta:

  1. Modifique a seguinte opção de configuração do Airflow:

    Seção Chave Valor
    webserver rbac_autoregister_per_folder_roles True
  2. Altere o papel de registro de novo usuário para um papel sem acesso a DAGs. Dessa maneira, os novos usuários não terão acesso a nenhum DAG até que um administrador atribua um papel que tenha permissões para DAGs específicos às contas.

    UserNoDags e NoDags são papéis criados pelo Cloud Composer. Eles são equivalentes ao papel de usuário, mas sem acesso a DAGs. O papel UserNoDags é criado no Airflow 2, e o papel NoDags é criado no Airflow 1.

    No Airflow 2, substitua a seguinte opção de configuração:

    Seção Chave Valor
    webserver rbac_user_registration_role UserNoDags

    No Airflow 1, modifique a seguinte opção de configuração:

    Seção Chave Valor
    webserver rbac_user_registration_role NoDags
  3. Verifique se os usuários estão registrados no Airflow.

  4. Atribua papéis aos usuários usando uma das seguintes abordagens:

    • Deixe que o Airflow crie papéis automaticamente com base nas subpastas de DAGs e atribua usuários a eles.
    • Crie previamente papéis vazios para as subpastas do DAGs, com nomes de papéis que correspondam ao nome de uma subpasta, e atribua usuários a esses papéis. Por exemplo, para a pasta /dags/CustomFolder, crie um papel chamado CustomFolder.
  5. Fazer upload de DAGs em subpastas com nomes que correspondam aos papéis atribuídos aos usuários Essas subpastas precisam estar dentro da pasta /dags no bucket do ambiente. O Airflow adiciona permissões a DAGs nessa subpasta, para que apenas usuários com o papel correspondente possam acessá-los por meio da IU do Airflow e da IU de DAG.

Configurar permissões no nível do DAG manualmente

É possível configurar permissões no nível do DAG para papéis personalizados a fim de especificar quais DAGs são visíveis para grupos de usuários específicos.

Para configurar permissões no nível do DAG na IU do Airflow, siga estas etapas:

  1. O administrador cria papéis vazios para agrupar DAGs.
  2. O administrador atribui aos usuários os papéis apropriados.
  3. O administrador ou os usuários atribuem DAGs a papéis.
  4. Na IU do Airflow, os usuários só podem ver os DAGs atribuídos ao grupo.

Os DAGs podem ser atribuídos a papéis por meio de propriedades do DAG ou da IU do Airflow.

Como atribuir DAGs a papéis na IU do Airflow

Um administrador pode atribuir as permissões necessárias no nível do DAG a papéis adequados na IU do Airflow.

Esta operação não é compatível com a IU do DAG.

Como atribuir DAGs a papéis nas propriedades do DAG

É possível definir o parâmetro do DAG access_control em um DAG, especificando os papéis de agrupamento do DAG a que o DAG é atribuído.

Nas versões do Airflow 2 anteriores à 2.1.0, o administrador, o desenvolvedor do DAG ou um processo automatizado precisa executar o comando Airflow para aplicar as novas configurações de controle de acesso sync-perm.

No Airflow 2.1.0 e versões mais recentes, não é mais necessário executar esse comando porque o programador aplica permissões no nível do DAG ao analisar um DAG.

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 IU do Airflow para os usuários

Os registros de auditoria na IU do Airflow são mapeados para IDs numéricos de contas de usuários do Google. Por exemplo, se um usuário pausar um DAG, uma entrada será adicionada aos registros.

Airflow 2

No Airflow 2, é possível visualizar os registros de auditoria na página Procurar > Registros de auditoria na IU do Airflow.

Uma entrada na página "Registros de auditoria" no Airflow 2
Figura 1. Uma entrada na página "Registros de auditoria" no Airflow 2

Airflow 1

No Airflow 1, você pode ver os registros de auditoria na página Procurar > Registros.

Uma entrada na página "Registros" no Airflow 1
Figura 1. Uma entrada na página "Registros" no Airflow 1

Uma entrada típica lista um ID numérico no campo Proprietário: accounts.google.com:NUMERIC_ID. Você pode mapear IDs numéricos para e-mails de usuários na página 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 é fixa.

A seguir