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 リソースにアクセスするには、一時的な認証情報を使用し、グループとロールでフェデレーティッド ID を設定することをお勧めします。ベストプラクティスとして、ポリシーを IAM ユーザーに直接アタッチすることは避けてください。代わりに、 AWS リソースへの一時的なアクセスを提供するグループまたはロールを定義します。

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

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

アカウントの 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 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:PassRoleIAM ユーザーガイドの「 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 APIs にアクセスする必要がある場合、ユーザーはAmazonMWAAFullApiAccessアクセス許可ポリシーにアクセスする必要がある場合があります。Apache Airflow UI にアクセスするための許可は付与されません。

注記

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

の詳細についてはiam:PassRoleIAM ユーザーガイドの「 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 APIs を使用してアクションを実行したりすることはできません。{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 コマンド ( など) を実行する必要がある場合、ユーザーはアクセスAmazonMWAAAirflowCliAccess許可ポリシーにアクセスする必要がある場合がありますtrigger_dag。ユーザーが Amazon MWAA コンソールの環境にアクセスしたり、Amazon MWAA APIs を使用してアクションを実行したりすることはできません。

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. [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. 123456789012 – 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. 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. [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. Next Step] (次のステップ) をクリックします。

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

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

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

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

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

  5. AirflowDevelopmentGroup を選択します。

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

次のステップ