Airflow Configuration

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Arquivo de Configuração

Apache Airflow gera um arquivo de configuração em todas as máquinas airflow chamado airflow.cfg no diretório 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 airflow ou acessando o console web.

Note 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ê tem acesso ao arquivo de configuração no servidor web, você pode verificar a configuração real em execução na mesma página em que a configuração é exibida. Se você tem 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: Indica os headers permitidos para CORS

  • access_control_allow_methods: Indica os métodos permitidos para CORS

  • access_control_allow_origins: Indica as origens permitidas para CORS

  • auth_backend: De acordo com a documentação algumas opções podem ser configuradas para 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 do composer (GCP) (de aqui).

  • composer_auth_user_registration_role: Indica o papel que o usuário composer 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: 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 certificado

  • ssl_key: Caminho para a chave

[core]

  • dag_discovery_safe_mode: Ativado por padrão. Ao descobrir DAGs, ignora 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: Ativado por padrão, oculta informações sensíveis das conexões.

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

[dask]

  • tls_ca: Caminho para o ca

  • tls_cert: Caminho para o certificado

  • tls_key: Caminho para a chave tls

[kerberos]

  • ccache: Caminho para o arquivo ccache

  • forwardable: Ativado por padrão

[logging]

  • google_key_path: Caminho para as credenciais JSON do GCP.

[secrets]

  • backend: Nome completo da classe do backend de segredos para ativar

  • 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 segura no cookie da 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á rastreamentos de pilha python (potencialmente útil para um atacante)

  • secret_key: Esta é a chave usada pelo flask para assinar os cookies (se você tiver isso, pode se passar por 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 está 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 delegar a autenticação a serviços terceiros.

No entanto, também existe a opção de permitir acesso a usuários anônimos, configurando o seguinte parâmetro para a função desejada:

AUTH_ROLE_PUBLIC = 'Admin'
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización