Como usar o controle de acesso baseado em papéis do Airflow na interface da Web

O acesso geral à IU da Web do Airflow no Cloud Composer é controlado pelo IAM. Primeiro, os usuários precisam se autenticar no Cloud Identity-Aware Proxy (IAP) e ter permissões do IAM adequadas antes de acessar a IU da Web.

No entanto, quando os usuários acessam a IU da Web do Airflow, o IAM não fornece outro controle de permissão detalhado na IU da Web do Airflow. Com esse recurso, é possível ativar o controle de acesso baseado em papéis (RBAC, na sigla em inglês) nativo do Airflow na IU da Web do Airflow.

A IU do RBAC é um recurso do Airflow, com um modelo de usuários, papéis, permissões diferente do IAM.

Como ativar a IU do RBAC

Para ativar a IU do RBAC, substitua a seguinte propriedade de configuração do Airflow:

Seção Chave Valor
webserver rbac True

Faça isso em um ambiente atual ou na criação de um novo. Com essa configuração, seu ambiente executa a IU do Airflow RBAC em vez da IU clássica do Airflow.

Como usar a IU do RBAC

Na IU do RBAC, é possível definir as configurações de controle de acesso usando os links no menu "Segurança". Consulte a documentação da IU do RBAC do Airflow para mais informações sobre o modelo do RBAC, permissões disponíveis e papéis padrão.

O Airflow trata o papel de usuário como o modelo de todos os papéis personalizados. Isso significa que o Airflow copiará continuamente as permissões do papel de usuário para todos os papéis personalizados, exceto as do all_dags.

O RBAC do Airflow mantém a própria lista de usuários, o que significa que os usuários com o papel de administrador (ou equivalente) podem visualizar a lista de usuários que abriram essa instância da IU do Airflow e foram registrados para o RBAC do Airflow.

Como registrar usuários na IU RBAC

Novos usuários são registrados automaticamente quando abrem a IU do RBAC do Airflow associada a um determinado ambiente do Cloud Composer pela primeira vez.

No momento do registro, os usuários recebem o papel especificado na modificação da configuração do Airflow [webserver]rbac_user_registration_role. Para controlar a função dos usuários registrados recentemente, atualize o ambiente e altere essa configuração.

Se não for especificado, o papel de registro padrão é Admin em ambientes com o Airflow 1.10.* e Op em ambientes com o Airflow 2.

As etapas abaixo são recomendadas para criar uma configuração de papel básico para a IU do RBAC do Airflow:

Airflow 1

  1. Os administradores do ambiente acessam a IU do RBAC do Airflow para o ambiente recém-criado, em que são registrados automaticamente com o papel Admin.
  2. Substitua a opção de configuração do Airflow a seguir para o papel necessário para novos usuários. Por exemplo, para User.

    Seção Chave Valor
    webserver rbac_user_registration_role User ou outro papel que não é de administrador
  3. Agora, os administradores podem configurar o controle de acesso para novos usuários, incluindo a concessão do papel Admin a outros usuários.

Airflow 2

  1. Os administradores do ambiente acessam a IU RBAC do Airflow do 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. Para atribuir o papel Admin, execute o seguinte comando da CLI do Airflow com gcloud:

      gcloud beta 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 do Compute Engine 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 a outros usuários.

Como remover usuários

Excluir um usuário do RBAC não revogará o acesso desse usuário, porque ele será registrado automaticamente na próxima vez que acessar 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 acesso do Cloud IAM para seu projeto. Também é possível alterar a função do usuário na IU RBAC para pública, o que manterá o registro do usuário, mas removerá todas as permissões da IU do Airflow.

Como configurar permissões no nível do DAG

É possível configurar permissões no nível do DAG para funções personalizadas de modo a especificar quais DAGs ficam visíveis em quais grupos de usuários.

Para configurar a separação de DAG na IU do RBAC do Airflow, siga estas etapas:

  1. O administrador cria papéis vazios para agrupar DAGs
  2. O administrador atribui usuários aos papéis apropriados
  3. O administrador ou os usuários atribuem DAGs às funções
  4. Os usuários só podem ver os DAGs na IU com permissões atribuídas a um grupo

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

Como atribuir DAGs a papéis em propriedades do DAG

O desenvolvedor do DAG pode definir o parâmetro DAG access_control nos DAGs que enviam, especificando os papéis de agrupamento do DAG a que o DAG será atribuído:

dag = DAG(
  access_control={
    'DagGroup': {'can_dag_edit', 'can_dag_read'},
  },
  ...
  )

Em seguida, o administrador, o desenvolvedor do DAG ou um processo automatizado precisa executar o sync_perm comando do Airflow para aplicar as novas configurações de controle de acesso.

Como atribuir DAGs a papéis na IU do RBAC

Um administrador também pode atribuir as permissões no nível do DAG às funções apropriadas na IU do Airflow.