Amazon MWAA 環境へのアクセス - Amazon Managed Workflows for Apache Airflow

Amazon MWAA 環境へのアクセス

Amazon Managed Workflows for Apache Airflow を使用するには、アカウントと、必要な権限を持つ IAM エンティティを使用する必要があります。このトピックでは、Amazon Managed Workflows for Apache Airflow 環境において、Apache Airflow 開発チームと Apache Airflow ユーザーにアタッチできるアクセスポリシーについて説明します。

Amazon MWAA リソースにアクセスするには、一時的な認証情報を使用し、グループとロールを用いてフェデレーティッドアイデンティティを構成することを推奨します。ベストプラクティスとして、IAM ユーザーに直接ポリシーをアタッチすることは避けてください。代わりに、AWS リソースへの一時的なアクセスを提供するグループまたはロールを定義します。

IAM ロール は、特定の許可があり、アカウントで作成できるもう 1 つの IAM アイデンティティです。IAM ロールは、ID が AWS で実行できることとできないことを決定する許可ポリシーを持つ AWS ID であるという点で IAM ユーザーと似ています。ただし、ユーザーは 1 人の特定の人に一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。また、ロールには標準の長期認証情報 (パスワードやアクセスキーなど) も関連付けられません。代わりに、ロールを引き受けると、ロールセッション用の一時的なセキュリティ認証情報が提供されます。

フェデレーテッドアイデンティティに許可を割り当てるには、ロールを作成してそのロールの許可を定義します。フェデレーテッド ID が認証されると、その ID はロールに関連付けられ、ロールで定義されている許可が付与されます。フェデレーションのロールについては、IAM ユーザーガイドサードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する を参照してください。IAM Identity Center を使用する場合は、許可セットを設定します。アイデンティティが認証後にアクセスできるものを制御するため、IAM Identity Center は、権限セットを IAM のロールに関連付けます。アクセス許可セットの詳細については、AWS IAM Identity Center User GuidePermission sets を参照してください。

アカウントの IAM ロールを使用して、アカウントのリソースにアクセスするための別の AWS アカウント 許可を付与できます。この例については、IAM ユーザーガイドIAM チュートリアル: AWS アカウント 間の IAM ロールを使用したアクセス許可の委任 を参照してください。

仕組み

Amazon MWAA 環境で使用されるリソースやサービスには、すべての AWS Identity and Access Management (IAM) エンティティからアクセスできるわけではありません。Apache Airflow ユーザーにこれらのリソースへのアクセス許可を付与するポリシーを作成する必要があります。例えば、Apache Airflow 開発チームにアクセス権を付与する必要があります。

Amazon MWAA はこれらのポリシーを使用して、ユーザーが AWS コンソールまたは環境で用いられる API を通してアクションを実行するのに必要なアクセス権限を持っているかどうかを検証します。

このトピックの JSON ポリシーを使用して IAM の Apache Airflow ユーザー用のポリシーを作成し、そのポリシーを IAM のユーザー、グループ、またはロールにアタッチできます。

  • AmazonMWAAFullConsoleAccess — このポリシーを使用して、Amazon MWAA コンソールで環境を構成するためのアクセス許可を付与します。

  • AmazonMWAAFullAPIAccess — このポリシーを使用して、環境の管理に使用されるすべての Amazon MWAA API へのアクセス権を付与します。

  • AmazonMWAAreadOnlyAccess — このポリシーを使用して、Amazon MWAA コンソール で環境によって使用されているリソースへのアクセスを許可します。

  • AmazonMWAAWebServerAccess — このポリシーを使用して Apache Airflow ウェブサーバーへのアクセス権を付与します。

  • AmazonMWAAAirflowCLIAccess — このポリシーを使用して、Apache Airflow CLI コマンドを実行するためのアクセス権を付与します。

アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。

コンソールを通じたアクセスポリシー: AmazonMWAAFullConsoleAccess

Amazon MWAA コンソールで環境を構成する必要がある場合、ユーザーは AmazonMWAAFullConsoleAccess アクセス許可ポリシーにアクセスする必要がある場合があります。

注記

コンソールを通じたアクセスポリシーには、iam:PassRole を実行するためのアクセス許可が含まれている必要があります。これにより、ユーザーは サービスにリンクされたロール実行ロール を Amazon MWAA に渡すことができます。Amazon MWAA は、ユーザーに代わって他の AWS サービスを呼び出すために各ロールを引き受けます。次の例では、iam:PassedToService 条件キーを使用して、ロールを渡すことができるサービスとして Amazon MWAA サービスプリンシパル (airflow.amazonaws.com) を指定します。

iam:PassRole に関する詳細については、IAM ユーザーガイドAWS サービスにロールを渡すアクセス許可をユーザーに付与する を参照してください。

保管時の暗号化AWS 所有のキー を使用して Amazon MWAA 環境を作成、管理する場合は、次のポリシーを使用してください。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "airflow.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreatePolicy" ], "Resource": "arn:aws:iam::111122223333:policy/service-role/MWAA-Execution-Policy*" }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole" ], "Resource": "arn:aws:iam::111122223333:role/service-role/AmazonMWAA*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA" }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutObject", "s3:GetEncryptionConfiguration" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup" ], "Resource": "arn:aws:ec2:*:*:security-group/airflow-security-group-*" }, { "Effect": "Allow", "Action": [ "kms:ListAliases" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:CreateVpcEndpoint", "Resource": [ "arn:aws:ec2:*:*:vpc-endpoint/*", "arn:aws:ec2:*:*:vpc/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*" ] } ] }

保管時の暗号化にカスタマーマネージドキーを使用して Amazon MWAA 環境を作成、管理する場合は、次のポリシーを使用してください。カスタマーマネージドキーを使用するには、IAM プリンシパルに、お使いのアカウント内に保存されているキーを使用して AWS KMS リソースにアクセスする権限が必要です。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "airflow.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreatePolicy" ], "Resource": "arn:aws:iam::111122223333:policy/service-role/MWAA-Execution-Policy*" }, { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole" ], "Resource": "arn:aws:iam::111122223333:role/service-role/AmazonMWAA*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA" }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutObject", "s3:GetEncryptionConfiguration" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup" ], "Resource": "arn:aws:ec2:*:*:security-group/airflow-security-group-*" }, { "Effect": "Allow", "Action": [ "kms:ListAliases" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/YOUR_KMS_ID" }, { "Effect": "Allow", "Action": "ec2:CreateVpcEndpoint", "Resource": [ "arn:aws:ec2:*:*:vpc-endpoint/*", "arn:aws:ec2:*:*:vpc/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*" ] } ] }

API とコンソールのフルアクセスポリシー: AmazonMWAAFullApiAccess

環境の管理に使用されるすべての Amazon MWAA API にアクセスする必要がある場合、AmazonMWAAFullApiAccess ユーザーはアクセス許可ポリシーにアクセスする必要がある場合があります。Apache Airflow UI にアクセスするための許可は付与されません。

注記

API フルアクセスポリシーには、iam:PassRole を実行するアクセス許可が含まれている必要があります。これにより、ユーザーは サービスにリンクされたロール実行ロール を Amazon MWAA に渡すことができます。Amazon MWAA は、ユーザーに代わって他の AWS サービスを呼び出すために各ロールを引き受けます。次の例では、iam:PassedToService 条件キーを使用して、ロールを渡すことができるサービスとして Amazon MWAA サービスプリンシパル (airflow.amazonaws.com) を指定します。

iam:PassRole に関する詳細については、IAM ユーザーガイドAWS サービスにロールを渡すアクセス許可をユーザーに付与する を参照してください。

保管時の暗号化のために AWS 所有のキー を使用して Amazon MWAA 環境を作成、管理する場合は、次のポリシーを使用してください。

JSON
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"airflow:*", "Resource":"*" }, { "Effect":"Allow", "Action":[ "iam:PassRole" ], "Resource":"*", "Condition":{ "StringLike":{ "iam:PassedToService":"airflow.amazonaws.com" } } }, { "Effect":"Allow", "Action":[ "iam:CreateServiceLinkedRole" ], "Resource":"arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA" }, { "Effect":"Allow", "Action":[ "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource":"*" }, { "Effect":"Allow", "Action":[ "s3:GetEncryptionConfiguration" ], "Resource":"arn:aws:s3:::*" }, { "Effect":"Allow", "Action":"ec2:CreateVpcEndpoint", "Resource":[ "arn:aws:ec2:*:*:vpc-endpoint/*", "arn:aws:ec2:*:*:vpc/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect":"Allow", "Action":[ "ec2:CreateNetworkInterface" ], "Resource":[ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*" ] } ] }

保存時の暗号化のためにカスタマーマネージドキーを使用して Amazon MWAA 環境を作成、管理する場合は、次のポリシーを使用してください。カスタマーマネージドキーを使用するには、IAM プリンシパルに、お使いのアカウント内に保存されているキーを使用して AWS KMS リソースにアクセスする権限が必要です。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "airflow.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/AWSServiceRoleForAmazonMWAA" }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/YOUR_KMS_ID" }, { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": "ec2:CreateVpcEndpoint", "Resource": [ "arn:aws:ec2:*:*:vpc-endpoint/*", "arn:aws:ec2:*:*:vpc/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*" ] } ] }

読み取り専用コンソールアクセスポリシー: AmazonMWAAReadOnlyAccess

ユーザーは、Amazon MWAA コンソールの環境詳細ページで環境で使用されるリソースにアクセスする必要がある場合、AmazonMWAAReadOnlyAccess アクセス許可ポリシーにアクセスする必要がある場合があります。ユーザーが新しい環境を作成したり、既存の環境を編集したり、Apache Airflow UI にアクセスすることはできません。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "airflow:ListEnvironments", "airflow:GetEnvironment", "airflow:ListTagsForResource" ], "Resource": "*" } ] }

Apache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccess

ユーザーが Apache Airflow UI にアクセスする必要がある場合、AmazonMWAAWebServerAccess アクセス許可ポリシーへのアクセスが必要になることがあります。ユーザーは、Amazon MWAA コンソールで環境にアクセスしたり、Amazon MWAA API を使用してアクションを実行したりすることはできません。{airflow-role}AdminOpUserViewer または Public ロールを指定して、ウェブトークンのユーザーのアクセスレベルをカスタマイズします。詳細については、Apache Airflow リファレンスガイドデフォルトロール を参照してください。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:CreateWebLoginToken", "Resource": [ "arn:aws:airflow:us-east-1:111122223333:role/{your-environment-name}/{airflow-role}" ] } ] }
注記

Apache Airflow Rest API アクセスポリシー: AmazonMWAARestAPIAccess

Apache Airflow REST API にアクセスするには、IAM ポリシーで airflow:InvokeRestApi アクセス許可を付与する必要があります。次のポリシーサンプルで、AdminOpUserViewer または {airflow-role}Public ロールを指定して、ユーザーアクセスのレベルをカスタマイズします。詳細については、Apache Airflow リファレンスガイドデフォルトロール を参照してください。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowMwaaRestApiAccess", "Effect": "Allow", "Action": "airflow:InvokeRestApi", "Resource": [ "arn:aws:airflow:us-east-1:111122223333:role/{your-environment-name}/{airflow-role}" ] } ] }
注記
  • プライベートウェブサーバーの設定中に、仮想プライベートクラウド (VPC) の外部から InvokeRestApi アクションを呼び出すことはできません。aws:SourceVpc キーを使用して、このオペレーションに、より詳細なアクセスコントロールを適用できます。詳細については、aws:SourceVpc を参照してください。

  • このポリシーの Resource フィールドを使用して、Amazon MWAA 環境の Apache Airflow ロールベースのアクセスコントロールのロールを指定できます。ただし、ポリシーの Resource フィールドでは Amazon MWAA 環境 ARN (Amazon リソースネーム) をサポートしていません。

Apache Airflow CLI ポリシー: AmazonMWAAAirflowCliAccess

ユーザーは、Apache Airflow CLI コマンド (trigger_dag など) を実行する必要がある場合、AmazonMWAAAirflowCliAccess アクセス許可ポリシーにアクセスする必要がある場合があります。ユーザーは、Amazon MWAA コンソールで環境にアクセスしたり、Amazon MWAA API を使用してアクションを実行したりすることはできません。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "airflow:CreateCliToken" ], "Resource": "arn:aws:airflow:us-east-1:111122223333:environment/${EnvironmentName}" } ] }

JSON ポリシーの作成

JSON ポリシーを作成し、IAM コンソールでそのポリシーをユーザー、ロール、またはグループにアタッチできます。IAM での JSON ポリシーの作成方法については、以下のステップで示します。

JSON ポリシーを作成する方法
  1. IAM コンソールで、ポリシーページ を開きます。

  2. ポリシーを作成 を選択します。

  3. JSON タブを選択します。

  4. JSON ポリシーを追加します。

  5. ポリシーの確認 を選択します。

  6. 名前説明 (オプション) のテキストフィールドに値を入力します。

    例えば、ポリシーには AmazonMWAAReadOnlyAccess という名前を付けることができます。

  7. ポリシーを作成 を選択します。

開発者グループにポリシーをアタッチするユースケースの例

Apache Airflow 開発チームのすべての開発者にアクセス許可を適用するため、AirflowDevelopmentGroup というIAM のグループを使用しているとしましょう。これらのユーザーは AmazonMWAAFullConsoleAccessAmazonMWAAAirflowCliAccess および AmazonMWAAWebServerAccess の権限ポリシーにアクセスする必要があります。このセクションでは、IAM でグループを作成し、ポリシーを作成してアタッチし、そのグループを IAM ユーザーに関連付ける方法について説明します。この手順では、AWSが所有するキーを使用する場合を想定しています。

AmazonMWAAFullConsoleAccess ポリシーを作成する手順
  1. AmazonMWAAFullConsoleAccess アクセスポリシー をダウンロードします。

  2. IAM コンソールで、ポリシーページ を開きます。

  3. ポリシーを作成 を選択します。

  4. JSON タブを選択します。

  5. AmazonMWAAFullConsoleAccess の JSON ポリシーを貼り付けます。

  6. 以下の値を置き換えます。

    1. 123456789012 – AWS アカウント ID (0123456789 など)

    2. {your-kms-id} — カスタマーマネージドキーの固有識別子。保存時の暗号化にカスタマーマネージドキーを使用する場合にのみ適用されます。

  7. ポリシーの確認 を選択します。

  8. 名前AmazonMWAAFullConsoleAccess と入力します。

  9. ポリシーを作成 を選択します。

AmazonMWAAWebServerAccess ポリシーを作成する手順
  1. AmazonMWAAWebServerAccess アクセスポリシー をダウンロードします。

  2. IAM コンソールで、ポリシーページを開きます。

  3. ポリシーを作成 を選択します。

  4. JSON タブを選択します。

  5. AmazonMWAAWebServerAccess の JSON ポリシーを貼り付けます。

  6. 以下の値を置き換えます。

    1. us-east-1 — Amazon MWAA 環境のリージョン (us-east-1 など)

    2. 123456789012 – AWS アカウント ID (0123456789 など)

    3. {your-environment-name} — Amazon MWAA 環境名 (MyAirflowEnvironment など)

    4. {airflow-role}Admin Apache Airflow のデフォルトロール

  7. ポリシーの確認 を選択します。

  8. 名前AmazonMWAAWebServerAccess と入力します。

  9. ポリシーを作成 を選択します。

AmazonMWAAAirflowCliAccess ポリシーを作成する手順
  1. AmazonMWAAAirflowCliAccess アクセスポリシー をダウンロードしてください。

  2. IAM コンソールで、ポリシーページ を開きます。

  3. ポリシーを作成 を選択します。

  4. JSON タブを選択します。

  5. AmazonMWAAAirflowCliAccess の JSON ポリシーを貼り付けます。

  6. ポリシーの確認 を選択します。

  7. 名前AmazonMWAAAirflowCliAccess と入力します。

  8. ポリシーを作成 を選択します。

グループを作成するには
  1. IAM コンソールで、グループページを開きます。

  2. AirflowDevelopmentGroup の名前を入力します。

  3. 次のステップ をクリックします。

  4. フィルターAmazonMWAA を入力して結果を絞り込みます。

  5. 作成した 3 つのポリシーを選択します。

  6. 次のステップ をクリックします。

  7. グループを作成 を選択します。

ユーザーに関連付ける手順
  1. IAM コンソールで、ユーザーページ を開きます。

  2. ユーザーを選択します。

  3. グループ を選択します。

  4. グループにユーザーを追加 を選択します。

  5. AirflowDevelopmentGroup を選択します。

  6. 続いて、グループに追加] を選択します。

次のステップ