웹 인터페이스에서 Airflow 역할 기반 액세스 제어 사용

Cloud Composer 1 | Cloud Composer 2

Cloud Composer의 Airflow UI에 대한 액세스는 Identity and Access Management를 통해 제어됩니다. 사용자는 먼저 IAP(Cloud Identity-Aware Proxy)를 인증하고 웹 UI에 액세스하기 전에 적절한 IAM 권한을 가지고 있어야 합니다.

하지만 사용자가 Airflow UI에 액세스하면 IAM은 Airflow UI에 더 세분화된 권한 제어를 제공하지 않습니다. 이 기능을 사용하면 Airflow UI에 세분화된 Airflow 기반 역할 기반 액세스 제어(RBAC)를 사용 설정할 수 있습니다.

RBAC UI는 고유한 자체 사용자, 역할, 권한 모델을 가진 Airflow의 기능으로 IAM과는 다릅니다.

RBAC UI 사용 설정

Airflow 2

Airflow RBAC UI는 Airflow 2에서 항상 사용 설정됩니다.

Airflow 1

RBAC UI를 사용하려면 다음 Airflow 구성 옵션을 재정의합니다.

섹션
webserver rbac True

기존 환경에서 재정의할 수 있으며 새 환경을 만들 때도 재정의가 가능합니다.

이 구성을 사용하면 환경에서 기본 Airflow UI 대신 RBAC Airflow UI를 실행합니다.

RBAC UI 사용

RBAC UI에서 보안 메뉴의 링크를 사용하여 액세스 제어 설정을 구성할 수 있습니다. RBAC 모델, 사용 가능한 권한, 기본 역할에 대한 상세 설명은 Airflow RBAC UI 문서를 참조하세요.

Airflow는 사용자 역할을 모든 커스텀 역할의 템플릿으로 취급합니다. 즉, Airflow가 all_dags의 권한을 제외하고 사용자 역할에서 모든 커스텀 역할로 권한을 계속 복사합니다.

Airflow RBAC는 자체 사용자 목록을 유지합니다. 즉, 관리자 역할(또는 이에 상응하는 역할)이 있는 사용자는 Airflow UI의 이 인스턴스를 열고 Airflow RBAC에 등록된 사용자 목록을 볼 수 있습니다.

RBAC UI에 사용자 등록

새로운 사용자는 지정된 Cloud Composer 환경과 연결된 Airflow RBAC UI를 처음 열 때 자동으로 등록됩니다.

등록 시 사용자에게 [webserver]rbac_user_registration_role Airflow 구성 옵션에 지정된 역할이 부여됩니다. 이 구성 옵션을 다른 값으로 재정의하여 새로 등록된 사용자의 역할을 제어할 수 있습니다.

지정하지 않은 경우 기본 등록 역할은 Airflow 2를 사용하는 환경의 Op입니다.

Airflow 1.10.*를 사용하는 환경에서는 기본 등록 역할이 Admin입니다.

Airflow RBAC UI의 기본 역할 구성을 만들려면 다음 단계를 따르는 것이 좋습니다.

Airflow 2

  1. 환경 관리자는 새로 생성된 환경의 Airflow RBAC UI로 이동합니다.

  2. 관리자 계정에 Admin 역할을 부여합니다. Airflow 2를 사용하는 환경에서 새 계정의 기본 역할은 Op입니다. Admin 역할을 할당하려면 gcloud를 사용해서 다음 Airflow CLI 명령어를 실행합니다.

      gcloud composer environments run ENVIRONMENT_NAME \
        --location LOCATION \
        users add-role -- -e USER_EMAIL -r Admin
    

    다음과 같이 바꿉니다.

    • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
    • LOCATION을 환경이 위치한 리전으로 바꿉니다.
    • USER_EMAIL: 사용자 계정의 이메일입니다.
  3. 관리자는 이제 다른 사용자에게 Admin 역할을 부여하는 등 신규 사용자에 대한 액세스 제어를 구성할 수 있습니다.

Airflow 1

  1. 환경 관리자는 새로 생성된 환경의 Airflow RBAC UI를 방문하여 Admin 역할에 자동으로 등록됩니다.
  2. 다음 Airflow 구성 옵션을 새 사용자에게 필요한 역할로 재정의하세요. 예를 들어 User로 재정의합니다.

    섹션
    webserver rbac_user_registration_role User 또는 기타 비관리자 역할
  3. 관리자는 이제 다른 사용자에게 Admin 역할을 부여하는 등 신규 사용자에 대한 액세스 제어를 구성할 수 있습니다.

사용자 삭제

RBAC에서 사용자를 삭제해도 해당 사용자의 액세스 권한은 취소되지 않습니다. 사용자가 다음에 Airflow UI에 방문하면 자동으로 등록되기 때문입니다. 전체 Airflow UI에 대한 액세스 권한을 취소하려면 프로젝트의 허용 정책에서 composer.environments.get 권한을 삭제하세요. RBAC UI에서 사용자 역할을 공개로 변경하여 사용자의 등록을 유지하지만 Airflow UI에 대한 모든 권한을 삭제할 수도 있습니다.

DAG 수준 권한 구성

커스텀 역할에 대한 DAG 수준 권한을 구성하여 사용자 그룹에 표시할 DAG를 지정할 수 있습니다.

Airflow RBAC UI에서 DAG 분리를 구성하려면 다음 단계를 따르세요.

  1. 관리자가 DAG 그룹화용 빈 역할을 만듭니다.
  2. 관리자가 사용자에게 적절한 역할을 할당합니다.
  3. 관리자 또는 사용자가 역할에 DAG를 할당합니다.
  4. 해당 사용자가 속한 그룹에 권한이 주어진 사용자만 UI의 DAG를 볼 수 있습니다.

DAG 속성을 통해 또는 RBAC UI에서 역할에 DAG를 할당할 수 있습니다.

DAG 속성에서 역할에 DAG 할당

DAG 개발자는 업로드하는 DAG에 DAG를 할당할 DAG 그룹 역할을 지정하여 access_control DAG 매개변수를 설정할 수 있습니다.

dag = DAG(
  access_control={
    'DagGroup': {'can_dag_edit', 'can_dag_read'},
  },
  ...
  )

그런 다음 관리자, DAG 개발자 또는 자동화된 프로세스가 sync_perm Airflow 명령어를 실행하여 새로운 액세스 제어 설정을 적용해야 합니다.

RBAC UI에서 역할에 DAG 할당

관리자는 Airflow UI에서 적합한 역할에 원하는 DAG 수준 권한을 할당할 수도 있습니다.

사용자에게 Airflow UI의 감사 로그 매핑

Airflow UI의 감사 로그는 Google 사용자 계정의 숫자 ID에 매핑됩니다. 예를 들어 사용자가 DAG를 일시 중지하면 항목이 로그에 추가됩니다.

Airflow 2

Airflow 2에서는 Airflow UI의 찾아보기 > 감사 로그 페이지에서 감사 로그를 볼 수 있습니다.

Airflow 2의 감사 로그 페이지 항목
그림 1. Airflow 2의 감사 로그 페이지 항목

Airflow 1

Airflow 1에서는 찾아보기 > 로그 페이지에서 감사 로그를 볼 수 있습니다.

Airflow 1의 로그 페이지 항목
그림 1. Airflow 1의 로그 페이지 항목

일반 항목에는 소유자 필드의 숫자 ID가 나열됩니다. accounts.google.com:NUMERIC_ID. 보안 > 사용자 나열 페이지에서 사용자 이메일에 숫자 ID를 매핑할 수 있습니다. 이 페이지는 Admin 역할이 있는 사용자에게 제공됩니다.

Google ID(이메일 주소)와 사용자 계정(사용자 ID)의 관계는 수정되지 않습니다.

다음 단계