翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon MWAA 実行ロール
実行ロールは、ユーザーに代わって他の AWS サービスのリソースを呼び出すアクセス許可を Amazon Managed Workflows for Apache Airflow に付与するアクセス許可ポリシーを持つ AWS Identity and Access Management (IAM) ロールです。これには、Amazon S3 バケット、 AWS所有キー、CloudWatch Logs などのリソースが含まれます。Amazon MWAA 環境には、環境ごとに 1 つの実行ロールが必要です。このトピックでは、Amazon MWAA が環境で使用される他の AWS リソースにアクセスできるように、環境の実行ロールを使用および設定する方法について説明します。
目次
実行ロールの概要
Amazon MWAA が環境で使用される他の AWS サービスを使用するためのアクセス許可は、実行ロールから取得されます。Amazon MWAA 実行ロールには、 環境で使用される以下の AWS サービスに対するアクセス許可が必要です。
-
Amazon CloudWatch (CloudWatch) — Apache Airflow メトリクスとログを送信します。
-
Amazon Simple Storage Service (Amazon S3) — 環境の DAG コードとサポートファイル (
requirements.txt
など) を解析します。 -
Amazon Simple Queue Service (Amazon SQS) — Amazon MWAA が所有する Amazon SQS キューに、環境の Apache Airflow タスクをキューイングします。
-
AWS Key Management Service (AWS KMS) – 環境のデータ暗号化用 ( AWS所有キーまたはカスタマーマネージドキーを使用)。
注記
Amazon MWAA が AWS 所有の KMS キーを使用してデータを暗号化することを選択した場合は、Amazon SQS を介してアカウントの外部に保存されている任意の KMS キーへのアクセスを許可する Amazon MWAA 実行ロールにアタッチされたポリシーでアクセス許可を定義する必要があります。環境の実行ロールが任意の KMS キーにアクセスするには、次の 2 つの条件が必要です。
-
サードパーティーアカウントの KMS キーは、リソースポリシーを通じてこのクロスアカウントアクセスを許可する必要があります。
-
DAG コードは、サードパーティアカウントの
airflow-celery-
で始まる Amazon SQS キューにアクセスする必要があり、暗号化に同じ KMS キーを使用します。
リソースへのクロスアカウントアクセスに関連するリスクを軽減するために、DAG に配置されたコードを見直して、ワークフローがアカウント外の任意の Amazon SQS キューにアクセスしていないことを確認することを推奨します。さらに、独自のアカウントに保存されているカスタマー管理の KMS キーを使用して、Amazon MWAA の暗号化を管理できます。これにより、環境の実行ロールがお使いのアカウントの KMS キーのみにアクセスするように制限されます。
暗号化オプションを選択した後は、既存の環境では選択内容を変更できないことに注意してください。
-
実行ロールには、次の IAM アクションに対する権限も必要です。
-
airflow:PublishMetrics
— Amazon MWAA が環境の状態を監視できるようにするため。
権限はデフォルトで付与されます。
Amazon MWAA コンソールのデフォルトオプションを使用して実行ロールと AWS所有のキーを作成し、このページのステップを使用して実行ロールにアクセス許可ポリシーを追加できます。
-
コンソールで [新規ロールの作成] オプションを選択すると、Amazon MWAA は環境に必要な最小限のアクセス権限を実行ロールにアタッチします。
-
Amazon MWAA が最大限のアクセス権限を割り当てる場合もあります。たとえば、環境を作成するときに Amazon MWAA コンソールのオプションを選択して実行ロールを作成することを推奨します。Amazon MWAA は、実行ロールの正規表現パターンを
"arn:aws:logs:
として使用して、すべての CloudWatch Logs グループのアクセス権限ポリシーを自動的に追加します。us-east-1
:111122223333
:log-group:airflow-your-environment-name-*
"
他の AWS サービスを使用するためのアクセス許可を追加する方法
Amazon MWAA は、環境の作成後に既存の実行ロールにアクセス権限ポリシーを追加または編集することはできません。環境に必要な追加のアクセス権限ポリシーを使用して実行ロールを更新する必要があります。例えば、DAG が へのアクセスを必要とする場合 AWS Glue、Amazon MWAA は環境に必要なこれらのアクセス許可を自動的に検出したり、実行ロールにアクセス許可を追加したりすることはできません。
実行ロールにアクセス許可は、次の 2 つのページから追加できます。
-
実行ロールの JSON ポリシーをインラインで変更します。このページにあるサンプル JSON ポリシードキュメントを使用して、IAM コンソールの実行ロールの JSON ポリシーを追加したり、置き換えたりできます。
-
AWS サービスの JSON ポリシーを作成し、実行ロールにアタッチします。このページのステップを使用して、 AWS サービスの新しい JSON ポリシードキュメントを IAM コンソールの実行ロールに関連付けることができます。
実行ロールが既に環境に関連付けられていると仮定すると、Amazon MWAA は追加されたアクセス権限ポリシーをすぐに使い始めることができます。つまり、実行ロールから必要なアクセス許可を削除すると、DAGs失敗する可能性があります。
新しい実行ロールを関連付ける方法
お使いの環境の実行ロールはいつでも変更できます。新しい実行ロールがまだお使いの環境に関連付けられていない場合は、このページの手順を使用して新しい実行ロールポリシーを作成し、そのロールを環境に関連付けます。
新規ロールの作成
デフォルトでは、Amazon MWAA はユーザーに代わってデータ暗号化用の AWS所有のキーと実行ロールを作成します。環境を作成するときに Amazon MWAA コンソールでデフォルトオプションを選択できます。次の図は、 環境の実行ロールを作成するデフォルトのオプションを示しています。

重要
新しい実行ロールを作成するときは、削除された実行ロールの名前を再利用しないでください。一意の名前は、競合を防ぎ、適切なリソース管理を確保するのに役立ちます。
実行ロールポリシーへのアクセスと更新
Amazon MWAA コンソールで環境の実行ロールにアクセスし、IAM コンソールでロールの JSON ポリシーを更新できます。
実行ロールポリシーを更新するには
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
[権限] ペインで実行ロールを選択し、IAM の権限ページを開きます。
-
実行ロールの名前を選択し、権限ポリシーを開きます。
-
[ポリシーの編集] を選択します。
-
[JSON] タブを選択します。
-
JSON ポリシーを更新します。
-
[ポリシーの確認] を選択します。
-
[Save changes] (変更の保存) をクリックします。
JSON ポリシーをアタッチして他の AWS サービスを使用する
AWS サービスの JSON ポリシーを作成し、実行ロールにアタッチできます。たとえば、次の JSON ポリシーをアタッチして、 AWS Secrets Managerのすべてのリソースへの読み取り専用アクセスレベルを付与することができます。
実行ロールにポリシーを添付するには
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
[権限] ペインで実行ロールを選択します。
-
[ポリシーのアタッチ] を選択します。
-
[Create policy] を選択します。
-
[JSON] を選択します。
-
JSON ポリシーを貼り付けます。
-
[次の手順: タグ]、[次の手順: 確認] の順に選択します。
-
わかりやすい名前 (
SecretsManagerReadPolicy
など) とポリシーの説明を入力します。 -
[Create policy] (ポリシーの作成) を選択します。
アカウントレベルのパブリックアクセスブロックで Amazon S3 バケットへのアクセスを許可する
PutPublicAccessBlock
Amazon S3 オペレーションを使用して、アカウントのすべてのバケットへのアクセスをブロックしたい場合があります。アカウントのすべてのバケットへのアクセスをブロックする場合、環境実行ロールはその s3:GetAccountPublicAccessBlock
アクションをアクセス権限ポリシーに含める必要があります。
次の例は、アカウントのすべての Amazon S3 バケットへのアクセスをブロックするときに実行ロールにアタッチする必要があるポリシーを示しています。
Amazon S3 バケットへのアクセスの制限の詳細については、「Amazon Simple Storage Service ユーザーガイド」のAmazon S3 ストレージへのパブリックアクセスのブロック」を参照してください。
Apache Airflow 接続を使用する
Apache Airflow 接続を作成し、Apache Airflow 接続オブジェクトで実行ロールとその ARN を指定することもできます。詳細については、「Apache エアフローへの接続の管理」を参照してください。
実行ロールのサンプル JSON ポリシー
このセクションの 2 つのサンプルアクセス許可ポリシーを使用して、既存の実行ロールに使用されるアクセス許可ポリシーを置き換えたり、新しい実行ロールを作成して環境に使用できます。これらのポリシーには、Apache Airflow ロググループ、Amazon S3 バケット、および Amazon MWAA 環境のリソース ARNプレースホルダーが含まれています。
ポリシー例をコピーし、サンプル ARN またはプレースホルダーを置き換えてから、JSON ポリシーを使用して実行ロールを作成または更新することを推奨します。
カスタマーマネージドキーのサンプルポリシー
次の例は、カスタマーマネージドキーに使用できる実行ロールポリシーを示しています。
次に、ユーザーに代わってアクションを実行するために、Amazon MWAA がこのロールを引き受けることを許可する必要があります。これは、IAM コンソールを使用してこの実行ロールの信頼されたエンティティのリストに "airflow.amazonaws.com"
および "airflow-env.amazonaws.com"
サービスプリンシパルを追加するか、 を使用して IAM create-role コマンドを使用して、これらのサービスプリンシパルをこの実行ロールの継承ロールポリシードキュメントに配置することで実行できます AWS CLI。次のサンプル継承ロールポリシードキュメントを参照してください。
次に、次の JSON ポリシーをカスタマーマネージドキーにアタッチします。このポリシーでは、kms:EncryptionContext
条件キープレフィックスを使用して CloudWatch Logs の Apache Airflow ロググループへのアクセスを許可します。
{ "Sid": "Allow logs access", "Effect": "Allow", "Principal": { "Service": "logs.
us-east-1
.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": {"kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:
} } }us-east-1
:111122223333
:*"
AWS所有キーのサンプルポリシー
次の例は、 AWS所有のキーに使用できる実行ロールポリシーを示しています。
次のステップ
-
あなたと Apache Airflow ユーザーが Amazon MWAA 環境へのアクセス で環境にアクセスするために必要な権限について説明します。
-
暗号化にカスタマーマネージドキーを使用する についてはこちら。
-
カスタマー管理ポリシーのその他の例をご覧ください。