AWS Identity and Access Management (IAM) のロールベースのアクセス許可を使用して、Amazon Managed Workflows for Apache Airflow (Amazon MWAA) で有向非巡回グラフ (DAG) へのアクセスを取得したいと考えています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
Web サーバーへのアクセスを許可するカスタム IAM ポリシーを作成する
IAM ユーザーまたはロールにウェブサーバーへのアクセスを許可するカスタム IAM ポリシーを作成するには、デフォルトの Apache Airflow Public ロールを使用します。
次の JSON ポリシードキュメントを使用して IAM ポリシーを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "airflow:CreateWebLoginToken",
"Resource": [
"arn:aws:airflow:example-region:example-account-id:role/example-environment/Public"
]
}
]
}
注: お使いのものでそれぞれ、example-region を AWS リージョンに、example-account-id をアカウント ID に、example-environment を環境名に置き換えます。
次に、IAM ユーザーまたはロールにポリシーを追加します。IAM ロールまたはユーザーは、Apache Airflow に少なくとも 1 回ログインしている必要があります。
カスタム Airflow RBAC ロールを作成する
次の手順を実行します。
- 管理者ロールを使用して Apache Airflow UI にアクセスします。
- [セキュリティ] で [ロールを一覧表示] を選択すると、デフォルトの Apache Airflow ロールが表示されます。
- ロールを選択し、[ロールをコピー] を選択します。
- [Users] テーブルでロールを探し、[レコードを編集] を選択します。
- [編集] ページで、次の変更を行います。
ロール名を有効な値に更新します。
[アクセス許可] で、[DAG の読み取りを許可] および [DAG の編集を許可] を削除します。
アクセスを許可する DAG に、読み取りおよび書き込みアクセス許可を追加します。
[保存] を選択します。
注: API を使用して新しいロールベースのアクセス制御 (RBAC) Airflow ロールを作成することもできます。詳細については、GitHub のウェブサイトで amazon-mwaa-examples を参照してください。
Airflow ロールを割り当てる
次の手順を実行します。
- Amazon MWAA コンソールを開きます。
- IAM ロールを使用して get-environment コマンドを実行します。
aws mwaa get-environment --name example-environment | jq '.Environment.WebserverUrl'
注: example-environment は、お使いの環境名に置き換えてください。コマンドの出力にある、ウェブサーバーの URL を書き留めておきます。
- 新しいブラウザウィンドウを開き、ウェブサーバの URL を入力します。
https://example-webserver-url/home
注: example-webserver-URL は、実際のウェブサーバーの URL に置き換えます。
- Forbidden エラーが表示されることを確認します。
注: 新しいロールを、必要なアクセス許可のない Airflow Public RBAC ロールとして割り当てたため、このエラーは想定動作です。
- 管理者ロールを使用して、お使いの環境の Apache Airflow UI にアクセスします。
- [セキュリティ] で [ユーザーのリスト] を選択します。
- [ユーザー] テーブルで Apache Airflow ユーザーまたはロールを見つけたら、[レコードを編集] を選択します。ユーザーのファーストネームは、user/customUser 形式の IAM ユーザー名と一致する必要があります。
- [ユーザーを編集] ページの [ロール] セクションで、ロールを追加します。
- [保存] を選択します。
IAM Public ロールが、customUser に Apache Airflow UI にアクセスして DAG を閲覧するためのアクセス許可を付与します。