Antes de começar, precisaremos de grupos e regras de acesso, para gerar isso:
- Você precisará de uma conta e senha no Active Diretory para que o Airflow use essas credenciais para ler as informações dos usuários;
- Sugerimos criar uma conta de serviço para isso, colocar em um grupo “no logon” (definir esse grupo como primário) e retirar do grupo Domain Users. Assim evitando que essa conta possa ser usada para logar em um computador;
- Leia a tabela mais abaixo e:
- Para cada parte em cinza:
- Você precisará adaptar ao seu ambiente;
- Você precisará obter o distinguished name do seu ambiente, caso não saiba leia nosso post sobre Como obter o Distinguished Name (DN) no Active Directory;
- Para cada item que estiver em amarelo:
- Você precisa ter essas tags criadas no Airflow (as permissões/ACLs são baseadas nessas tags);
- Acesse o Airflow e crie os grupos de acesso (ACL) de acordo com o arquivo de configuração que será feito (para cada item em amarelo, na tabela abaixo, execute esses procedimentos):
- Acesse o Airflow como administrador;
- Vá (no menu superior) em Security, e clique em List Roles;
- Copie a role User (marque a role, clique em Actions, escolha Copy Rule e confirme a cópia);
- Edite a role User copy (a que copiamos);
- Clique na aba superior Detail;
- Em Name, altere o nome (para o mesmo nome que está na tabela, em amarelo);
- Remova as opções/permissões:
- Can read on DAGs;
- Can edit on DAGs e;
- Can delete on DAGs;
- Adicione as opções/permissões:
- Can read on DAGs NOME_DA_TAG e;
- Can edit on DAGs NOME_DA_TAG;
- Clique em Save.
- Para cada item que estiver em azul:
- Crie o grupo no AD;
- Obtenha o Distinguished name, caso não saiba leia nosso post sobre Como obter o Distinguished Name (DN) no Active Directory;
- Coloque os membros de cada grupo.
O módulo de conexão varia de acordo com a versão do Airflow, para evitar informação errada, vamos renomear o arquivo de configuração atual e criar um novo:
mv /opt/airflow/webserver_config.py /opt/airflow/webserver_config.old
touch /opt/airflow/webserver_config.py
chmod 775 webserver_config.py
chown airflow.airflow webserver_config.py
Agora vamos copiar o método de conexão para o novo arquivo, para isso execute os comandos:
echo "import os" > /opt/airflow/webserver_config.py
cat /opt/airflow/webserver_config.old | grep "import AUTH_LDAP" >> /opt/airflow/webserver_config.py
Agora vamos efetivamente configurar:
vim /opt/airflow/webserver_config.py
Pressione a tela INSERT, para entrar em modo de edição, descomente a linha que está comentada (retirando o símbolo # e o espaço no começo), em seguida adicione o seguinte conteúdo:
AUTH_TYPE = AUTH_LDAP AUTH_LDAP_SERVER = “ldap://seu_servidor_dc.seu_dominio.com.br:389″ AUTH_LDAP_USE_TLS = False # searches AUTH_LDAP_SEARCH = “dc=seu_dominio,dc=com,dc=br” AUTH_LDAP_UID_FIELD = “sAMAccountName” # For a typical OpenLDAP setup (where LDAP searches require a special account): AUTH_LDAP_BIND_USER = “CN=Nome da conta de servico,OU=Nome_da_OU,DC=seu_dominio,DC=com,DC=br” AUTH_LDAP_BIND_PASSWORD = “senha_da_conta_acima“ # registration configs AUTH_USER_REGISTRATION = True AUTH_USER_REGISTRATION_ROLE = “Public” AUTH_LDAP_FIRSTNAME_FIELD = “givenName” AUTH_LDAP_LASTNAME_FIELD = “sn” AUTH_LDAP_EMAIL_FIELD = “mail” # a mapping from LDAP DN to a list of FAB roles AUTH_ROLES_MAPPING = { “CN=Airflow Nome da Equipe1,OU=Nome_da_OU,DC=seu_dominio,DC=com,DC=br“: [“Equipe1“], “CN=Airflow Nome da Equipe2,OU=Nome_da_OU,DC=seu_dominio,DC=com,DC=br“: [“Equipe2“], “CN=Airflow Admin,OU=Nome_da_OU,DC=seu_dominio,DC=com,DC=br“: [“Admin”], } # the LDAP user attribute which has their role DNs AUTH_LDAP_GROUP_FIELD = “memberOf” # if we should replace ALL the user’s roles each login, or only on registration AUTH_ROLES_SYNC_AT_LOGIN = True # force users to re-auth after 30min of inactivity (to keep roles in sync) PERMANENT_SESSION_LIFETIME = 1800 |
Pressione a tela ESC, para sair em modo de edição, digite :wq! e pressione ENTER para salvar e sair.
systemctl restart airflow-scheduler
systemctl restart airflow-webserver
Fontes/Referências
NVLAN – Como obter o Distinguished Name (DN) no Active Directory
https://youtube.com/watch?v=s6TygwvYdN0
Mais Informações
Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.
Se você tem interesse em algum assunto específico, tem alguma dúvida que precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.