Airflow Configuration
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 CORSaccess_control_allow_methods
: Indica os métodos permitidos para CORSaccess_control_allow_origins
: Indica as origens permitidas para CORSauth_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 APIairflow.api.auth.backend.default
: Todos podem acessá-la sem autenticaçãoairflow.api.auth.backend.kerberos_auth
: Para configurar autenticação kerberosairflow.api.auth.backend.basic_auth
: Para autenticação básicaairflow.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 Atlasusername
: 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 cacertssl_cert
: Caminho para o certificadossl_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 stringsDAG
eairflow
.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 catls_cert
: Caminho para o certificadotls_key
: Caminho para a chave tls
[kerberos]
ccache
: Caminho para o arquivo ccacheforwardable
: 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 ativarbackend_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 SMTPsmtp_user
: Usuário SMTP
[webserver]
cookie_samesite
: Por padrão é Lax, então já é o valor mais fraco possívelcookie_secure
: Define a flag segura no cookie da sessãoexpose_config
: Por padrão é Falso, se verdadeiro, a configuração pode ser lida do console webexpose_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 SSLweb_server_ssl_key
: Caminho para a Chave SSLx_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
O que significa que a autenticação é verificada contra o banco de dados. No entanto, outras configurações são possíveis, como
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:
Last updated