Airflow Configuration

Reading time: 4 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

Configuration File

Apache Airflow는 모든 airflow 머신에서 **airflow.cfg**라는 config file을 생성합니다. 이 config file은 구성 정보를 포함하고 있으며 흥미롭고 민감한 정보를 포함할 수 있습니다.

이 파일에 접근하는 방법은 두 가지입니다: 일부 airflow 머신을 손상시키거나 웹 콘솔에 접근하는 것입니다.

config file의 값사용되는 값이 아닐 수 있습니다, 환경 변수를 설정하여 덮어쓸 수 있습니다, 예: AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'.

웹 서버의 config file에 접근할 수 있다면, config가 표시되는 동일한 페이지에서 실제 실행 구성을 확인할 수 있습니다.
airflow 환경 내의 일부 머신에 접근할 수 있다면, 환경을 확인하십시오.

config file을 읽을 때 확인할 흥미로운 값들:

[api]

  • access_control_allow_headers: 이는 CORS에 대한 허용된 헤더를 나타냅니다.
  • access_control_allow_methods: 이는 CORS에 대한 허용된 메서드를 나타냅니다.
  • access_control_allow_origins: 이는 CORS에 대한 허용된 출처를 나타냅니다.
  • auth_backend: 문서에 따르면 API에 접근할 수 있는 사람을 구성하기 위한 몇 가지 옵션이 있습니다:
  • airflow.api.auth.backend.deny_all: 기본적으로 아무도 API에 접근할 수 없습니다.
  • airflow.api.auth.backend.default: 모두가 인증 없이 접근할 수 있습니다.
  • airflow.api.auth.backend.kerberos_auth: kerberos 인증을 구성합니다.
  • airflow.api.auth.backend.basic_auth: 기본 인증을 위한 것입니다.
  • airflow.composer.api.backend.composer_auth: 작곡가 인증(GCP)을 사용합니다 ( 여기서 ).
  • composer_auth_user_registration_role: 이는 airflow 내에서 작곡가 사용자가 가질 역할을 나타냅니다 (Op가 기본값입니다).
  • 또한 자신만의 인증 방법을 파이썬으로 만들 수 있습니다.
  • google_key_path: GCP 서비스 계정 키에 대한 경로입니다.

[atlas]

  • password: 아틀라스 비밀번호
  • username: 아틀라스 사용자 이름

[celery]

  • flower_basic_auth : 자격 증명 (user1:password1,user2:password2)
  • result_backend: 자격 증명을 포함할 수 있는 Postgres URL입니다.
  • ssl_cacert: cacert에 대한 경로
  • ssl_cert: 인증서에 대한 경로
  • ssl_key: 키에 대한 경로

[core]

  • dag_discovery_safe_mode: 기본적으로 활성화되어 있습니다. DAG를 발견할 때 DAGairflow 문자열이 포함되지 않은 파일은 무시합니다.
  • fernet_key: 암호화된 변수를 저장하기 위한 키(대칭)
  • hide_sensitive_var_conn_fields: 기본적으로 활성화되어 있으며, 연결의 민감한 정보를 숨깁니다.
  • security: 사용할 보안 모듈 (예: kerberos)

[dask]

  • tls_ca: ca에 대한 경로
  • tls_cert: 인증서에 대한 경로
  • tls_key: tls 키에 대한 경로

[kerberos]

  • ccache: ccache 파일에 대한 경로
  • forwardable: 기본적으로 활성화되어 있습니다.

[logging]

  • google_key_path: GCP JSON 자격 증명에 대한 경로입니다.

[secrets]

  • backend: 활성화할 비밀 백엔드의 전체 클래스 이름
  • backend_kwargs: backend_kwargs 매개변수는 사전으로 로드되어 비밀 백엔드 클래스의 init에 전달됩니다.

[smtp]

  • smtp_password: SMTP 비밀번호
  • smtp_user: SMTP 사용자

[webserver]

  • cookie_samesite: 기본적으로 Lax이며, 따라서 이미 가능한 가장 약한 값입니다.
  • cookie_secure: 세션 쿠키에 보안 플래그를 설정합니다.
  • expose_config: 기본값은 False이며, true일 경우 config를 웹 콘솔에서 읽을 수 있습니다.
  • expose_stacktrace: 기본값은 True이며, 파이썬 추적을 표시합니다 (공격자에게 유용할 수 있습니다).
  • secret_key: 이는 쿠키에 서명하기 위해 flask가 사용하는 입니다 (이 키가 있으면 Airflow에서 모든 사용자를 가장할 수 있습니다).
  • web_server_ssl_cert: SSL 인증서에 대한 경로입니다.
  • web_server_ssl_key: SSL 에 대한 경로입니다.
  • x_frame_enabled: 기본값은 True이며, 따라서 기본적으로 클릭재킹이 불가능합니다.

Web Authentication

기본적으로 웹 인증webserver_config.py 파일에 지정되어 있으며 구성됩니다.

bash
AUTH_TYPE = AUTH_DB

즉, 인증이 데이터베이스에 대해 확인됩니다. 그러나 다른 구성도 가능합니다.

bash
AUTH_TYPE = AUTH_OAUTH

제3자 서비스에 인증을 맡기기 위해서.

그러나 익명 사용자 접근을 허용하는 옵션도 있으며, 다음 매개변수를 원하는 역할로 설정할 수 있습니다:

bash
AUTH_ROLE_PUBLIC = 'Admin'

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기