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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon MWAA 環境へのアクセス

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

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

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

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

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

仕組み

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

Amazon MWAA はこれらのポリシーを使用して、ユーザーが AWS コンソールでアクションを実行するために必要なアクセス許可を持っているか、環境で使用される APIs 経由でアクションを実行するために必要なアクセス許可を持っているかを検証します。

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

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

  • AmazonMWAAFullApiAccess – このポリシーを使用して、環境の管理に使用されるすべての Amazon MWAA APIs へのアクセスを許可します。

  • 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:PassRoleIAM ユーザーガイドの「 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}" ] } ] }
注記

Amazon MWAA は、5 つの「デフォルトの Apache Airflow ロールベースのアクセスコントロール (RBAC) ロール」と IAM 統合を提供します。カスタム Apache Airflow ロールの使用詳細については、「チュートリアル: Amazon MWAA ユーザーのアクセスを DAG のサブセットに制限する」を参照してください。

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": "*" } ] }

JSON ポリシーの作成

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

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

  2. [Create policy] (ポリシーを作成) を選択します。

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

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

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

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

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

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

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

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. [ポリシーの作成] を選択します。

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. [ポリシーの作成] を選択します。

AmazonMWAAAirflowCliAccess ポリシーを作成するには
  1. AmazonMWAAAirflowCliAccess アクセスポリシー をダウンロードします。

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

  3. [Create policy] (ポリシーを作成) を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. AirflowDevelopmentGroup を選択します。

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

次のステップ