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ユーザーガイド」の「アクセス許可セット」を参照してください。

アカウントの IAM ロールを使用して、アカウントのリソースにアクセスするための別の AWS アカウント 許可を付与できます。この例については、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 環境を作成、管理する場合は、次のポリシーを使用してください。

{ "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::YOUR_ACCOUNT_ID:policy/service-role/MWAA-Execution-Policy*" }, { "Effect":"Allow", "Action":[ "iam:AttachRolePolicy", "iam:CreateRole" ], "Resource":"arn:aws:iam::YOUR_ACCOUNT_ID: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 リソースにアクセスする権限が必要です。

{ "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::YOUR_ACCOUNT_ID:policy/service-role/MWAA-Execution-Policy*" }, { "Effect":"Allow", "Action":[ "iam:AttachRolePolicy", "iam:CreateRole" ], "Resource":"arn:aws:iam::YOUR_ACCOUNT_ID: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:*:YOUR_ACCOUNT_ID: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 環境を作成、管理する場合は、次のポリシーを使用してください。

{ "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 リソースにアクセスする権限が必要です。

{ "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:*:YOUR_ACCOUNT_ID: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 を表示したりすることはできません。

{ "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 リファレンスガイドの「デフォルトロール」を参照してください。

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMwaaRestApiAccess", "Effect": "Allow", "Action": "airflow:InvokeRestApi", "Resource": [ "arn:aws:airflow:{your-region}:YOUR_ACCOUNT_ID: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 を使用してアクションを実行したりすることはできません。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "airflow:CreateCliToken" ], "Resource": "arn:aws:airflow:${Region}:${Account}:environment/${EnvironmentName}" } ] }

JSON ポリシーの作成

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

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

  2. [Create policy] を選択します。

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

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

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

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

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

  7. [Create policy] を選択します。

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

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

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

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

  3. [Create policy] を選択します。

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

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

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

    1. {your-account-id} — お使いの AWS アカウント ID (0123456789 など)

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

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

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

  9. [Create policy] を選択します。

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

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

  3. [Create policy] を選択します。

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

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

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

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

    2. {your-account-id} — お使いの AWS アカウント ID (0123456789 など)

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

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

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

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

  9. [Create policy] を選択します。

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

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

  3. [Create policy] を選択します。

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

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

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

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

  8. [Create policy] を選択します。

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

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

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

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

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

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

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

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

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

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

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

  5. AirflowDevelopmentGroup を選択します。

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

次のステップ