Airflow Configuration

Suporte ao HackTricks

Arquivo de Configuração

Apache Airflow gera um arquivo de configuração em todas as máquinas do airflow chamado airflow.cfg na pasta home do usuário airflow. Este arquivo de configuração contém informações de configuração e pode conter informações interessantes e sensíveis.

Existem duas maneiras de acessar este arquivo: Comprometendo alguma máquina do airflow ou acessando o console web.

Observe que os valores dentro do arquivo de configuração podem não ser os utilizados, pois você pode sobrescrevê-los definindo variáveis de ambiente como AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'.

Se você tiver acesso ao arquivo de configuração no servidor web, pode verificar a configuração real em execução na mesma página em que a configuração é exibida. Se você tiver acesso a alguma máquina dentro do ambiente airflow, verifique o ambiente.

Alguns valores interessantes para verificar ao ler o arquivo de configuração:

[api]

  • access_control_allow_headers: Isso indica os cabeçalhos permitidos para CORS

  • access_control_allow_methods: Isso indica os métodos permitidos para CORS

  • access_control_allow_origins: Isso indica as origens permitidas para CORS

  • auth_backend: De acordo com a documentação algumas opções podem ser configuradas para definir quem pode acessar a API:

  • airflow.api.auth.backend.deny_all: Por padrão, ninguém pode acessar a API

  • airflow.api.auth.backend.default: Todos podem acessá-la sem autenticação

  • airflow.api.auth.backend.kerberos_auth: Para configurar autenticação kerberos

  • airflow.api.auth.backend.basic_auth: Para autenticação básica

  • airflow.composer.api.backend.composer_auth: Usa autenticação de compositores (GCP) (de aqui).

  • composer_auth_user_registration_role: Isso indica a função que o usuário compositor terá dentro do airflow (Op por padrão).

  • Você também pode criar seu próprio método de autenticação com python.

  • google_key_path: Caminho para a chave da conta de serviço GCP

[atlas]

  • password: Senha do Atlas

  • username: Nome de usuário do Atlas

[celery]

  • flower_basic_auth : Credenciais (user1:password1,user2:password2)

  • result_backend: URL do Postgres que pode conter credenciais.

  • ssl_cacert: Caminho para o cacert

  • ssl_cert: Caminho para o cert

  • ssl_key: Caminho para a chave

[core]

  • dag_discovery_safe_mode: Habilitado por padrão. Ao descobrir DAGs, ignore quaisquer arquivos que não contenham as strings DAG e airflow.

  • fernet_key: Chave para armazenar variáveis criptografadas (simétrica)

  • hide_sensitive_var_conn_fields: Habilitado por padrão, oculta informações sensíveis de conexões.

  • security: Qual módulo de segurança usar (por exemplo, kerberos)

[dask]

  • tls_ca: Caminho para ca

  • tls_cert: Caminho para o cert

  • tls_key: Caminho para a chave tls

[kerberos]

  • ccache: Caminho para o arquivo ccache

  • forwardable: Habilitado por padrão

[logging]

  • google_key_path: Caminho para as credenciais JSON do GCP.

[secrets]

  • backend: Nome completo da classe do backend de segredos a ser habilitado

  • backend_kwargs: O parâmetro backend_kwargs é carregado em um dicionário e passado para init da classe do backend de segredos.

[smtp]

  • smtp_password: Senha SMTP

  • smtp_user: Usuário SMTP

[webserver]

  • cookie_samesite: Por padrão é Lax, então já é o valor mais fraco possível

  • cookie_secure: Define a flag de segurança no cookie de sessão

  • expose_config: Por padrão é Falso, se verdadeiro, a configuração pode ser lida do console web

  • expose_stacktrace: Por padrão é Verdadeiro, mostrará tracebacks python (potencialmente útil para um atacante)

  • secret_key: Esta é a chave usada pelo flask para assinar os cookies (se você tiver isso, pode impersonar qualquer usuário no Airflow)

  • web_server_ssl_cert: Caminho para o certificado SSL

  • web_server_ssl_key: Caminho para a Chave SSL

  • x_frame_enabled: O padrão é Verdadeiro, então por padrão o clickjacking não é possível

Autenticação Web

Por padrão, a autenticação web é especificada no arquivo webserver_config.py e é configurada como

AUTH_TYPE = AUTH_DB

O que significa que a autenticação é verificada contra o banco de dados. No entanto, outras configurações são possíveis, como

AUTH_TYPE = AUTH_OAUTH

Para deixar a autenticação para serviços de terceiros.

No entanto, também há uma opção para permitir acesso a usuários anônimos, definindo o seguinte parâmetro para o papel desejado:

AUTH_ROLE_PUBLIC = 'Admin'
Suporte ao HackTricks

Last updated