ウェブ インターフェースにおける Airflow のロールベースのアクセス制御の使用

Cloud Composer の Airflow ウェブ UI への全般的なアクセスは、IAM によって制御されます。ユーザーがウェブ UI にアクセスするには、まず Cloud Identity-Aware Proxy(IAP)で認証を行い、適切な IAM 権限を付与されている必要があります。

ただし、一度ユーザーが Airflow ウェブ UI にアクセスした後は、IAM は Airflow ウェブ UI で追加の詳細な権限制御を行うことはありません。この機能を使用すると、Airflow ウェブ UI 内で詳細な Airflow ネイティブのロールベース アクセス制御(RBAC)を有効にできます。

RBAC UI は Airflow の機能であり、IAM とは異なる独自のユーザー、ロール、権限を持っています。

RBAC UI の有効化

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 1.10.* と Op および Airflow 2 を使用する環境では、デフォルトの登録のロールは Admin となります。

Airflow RBAC UI の基本ロールの構成を作成する場合、次の手順をおすすめします。

Airflow 1

  1. 環境管理者は、Admin ロールで自動的に登録される 新しく作成された環境の Airflow RBAC UI にアクセスします。
  2. 新しいユーザーに必要なロールに、次の Airflow 構成オプションをオーバーライドします。たとえば、User とします。

    セクション キー
    webserver rbac_user_registration_role User または他の管理者以外のロール
  3. 管理者は、他のユーザーに Admin ロールを割り当てるなど、新しいユーザーのアクセス制御を構成できます。

Airflow 2

  1. 環境管理者は、新しく作成された環境の Airflow RBAC UI にアクセスします。

  2. 管理者アカウントに Admin ロールを付与します。Airflow 2 を使用する環境での新しいアカウントのデフォルトのロールは Op です。Admin ロールを割り当てるには、gcloud を使用して次の Airflow CLI コマンドを実行します。

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

    以下のように置き換えます。

    • ENVIRONMENT_NAME を環境の名前にする。
    • LOCATION は、環境が配置される Compute Engine のリージョンに置き換えます。
    • USER_EMAIL は、ユーザー アカウントのメールに置き換えます。
  3. 管理者は、他のユーザーに Admin ロールを割り当てるなど、新しいユーザーのアクセス制御を構成できます。

ユーザーを削除する

RBAC UI からユーザーを削除しても、そのユーザーが次に Airflow UI にアクセスしたときに自動的に登録されるため、ユーザーのアクセス権が取り消されることはありません。Airflow UI 全体へのアクセス権を取り消すには、プロジェクトの Cloud IAM で、アクセス ポリシーから 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 に access_control DAG パラメータを設定できます。

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

次に、管理者、DAG デベロッパー、または自動プロセスで sync_perm Airflow コマンドを実行して、新しいアクセス制御設定を適用する必要があります。

RBAC UI でロールに DAG を割り当てる

また、管理者は目的の DAG レベルの権限を Airflow UI の適切なロールに割り当てることもできます。