本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
存取 Amazon MWAA環境
若要使用 Amazon Managed Workflows for Apache Airflow,您必須使用具有必要許可的帳戶和IAM實體。本主題說明您可以連接至 Apache Airflow 開發團隊和 Amazon Managed Workflows for Apache Airflow 環境的 Apache Airflow 使用者存取政策。
我們建議您使用臨時登入資料,並使用群組和角色設定聯合身分,以存取您的 Amazon MWAA 資源。最佳實務是避免將政策直接連接到您的IAM使用者,而是定義群組或角色以提供對 AWS 資源的暫時存取權。
IAM 角色是您可以在帳戶中建立的具有特定許可的IAM身分。IAM 角色與 IAM中的使用者類似,因為它是具有許可政策的 AWS 身分,可決定身分在其中可以和不能執行的動作 AWS。但是,角色的目的是讓需要它的任何人可代入,而不是單獨地與某個人員關聯。此外,角色沒有與之關聯的標準長期憑證,例如密碼或存取金鑰。反之,當您擔任角色時,其會為您的角色工作階段提供臨時安全性憑證。
若要將許可指派給聯合身分,您可以建立角色並定義角色的許可。當聯合身分進行身分驗證時,該身分會與角色建立關聯,並獲授予由角色定義的許可。如需聯合角色的相關資訊,請參閱IAM《 使用者指南》中的為第三方身分提供者 (聯合) 建立角色。如果您使用 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 主控台上執行動作所需的許可,或透過環境APIs使用的 執行動作。
您可以使用本主題中的JSON政策來為 中的 Apache Airflow 使用者建立政策IAM,然後將政策連接到 中的使用者、群組或角色IAM。
-
答mazonMWAAFullConsoleAccess:使用此政策授予在 Amazon MWAA主控台上設定環境的許可。
-
答mazonMWAAFullApiAccess:使用此政策授予所有MWAAAPIs用於管理環境的 Amazon 存取權。
-
答mazonMWAAReadOnlyAccess:使用此政策授予 存取權,以檢視 Amazon MWAA主控台上環境使用的資源。
-
答mazonMWAAWebServerAccess:使用此政策授予對 Apache Airflow Web 伺服器的存取權。
-
答mazonMWAAAirflowCliAccess:使用此政策授予執行 Apache Airflow CLI命令的存取權。
若要提供存取權,請新增權限至您的使用者、群組或角色:
-
中的使用者和群組 AWS IAM Identity Center:
建立權限合集。請按照 AWS IAM Identity Center 使用者指南 中的 建立權限合集 說明進行操作。
-
IAM 透過身分提供者在 中管理的使用者:
建立聯合身分的角色。遵循 IAM 使用者指南中為第三方身分提供者 (聯合) 建立角色的指示。
-
IAM 使用者:
-
建立您的使用者可擔任的角色。遵循 IAM 使用者指南中為IAM使用者建立角色的指示。
-
(不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。遵循 IAM 使用者指南中將許可新增至使用者 (主控台) 中的指示。
-
完整主控台存取政策: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
如果使用者需要存取MWAAAPIs用於管理環境的所有 Amazon,則可能需要存取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:*:
:key/
YOUR_ACCOUNT_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/*" ] } ] }
YOUR_KMS_ID
唯讀主控台存取政策: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 MWAAAPIs執行任何動作。在 中指定 Admin
、User
、 Op
Viewer
或 Public
角色{airflow-role}
,以自訂 Web 字符使用者的存取層級。如需詳細資訊,請參閱 Apache Airflow 參考指南中的預設角色
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "airflow:CreateWebLoginToken", "Resource": [ "arn:aws:airflow:
{your-region}
::role/
YOUR_ACCOUNT_ID
{your-environment-name}
/{airflow-role}
" ] } ] }
注意
-
Amazon MWAA提供與五個預設 Apache Airflow 角色型存取控制 (RBAC) 角色
的IAM整合。如需使用自訂 Apache Airflow 角色的詳細資訊,請參閱 教學課程:限制 Amazon MWAA 使用者對 DAG 子集的存取權。 -
此政策中的
Resource
欄位可用來指定 Amazon MWAA環境的 Apache Airflow 角色型存取控制角色。不過,它不支援政策Resource
欄位中的 Amazon MWAA環境 ARN(Amazon Resource Name)。
Apache Airflow Rest API存取政策:AmazonMWAARestAPIAccess
若要存取 Apache Airflow REST API,您必須在IAM政策中授予 airflow:InvokeRestApi
許可。在下列政策範例中,在 中指定 Admin
、User
、 Op
Viewer
或 Public
角色,{airflow-role}
以自訂使用者存取層級。如需詳細資訊,請參閱 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}" ] } ] }
注意
設定私有 Web 伺服器時,無法從虛擬私有雲端 () 外部叫用
InvokeRestApi
動作VPC。您可以使用aws:SourceVpc
金鑰,為此操作套用更精細的存取控制。如需詳細資訊,請參閱 aws:SourceVpc-
此政策中的
Resource
欄位可用來指定 Amazon MWAA環境的 Apache Airflow 角色型存取控制角色。不過,它不支援政策Resource
欄位中的 Amazon MWAA環境 ARN(Amazon Resource Name)。
Apache Airflow CLI政策:AmazonMWAAAirflowCliAccess
如果需要執行 Apache Airflow CLI命令 (例如 ),使用者可能需要存取AmazonMWAAAirflowCliAccess
許可政策trigger_dag
。它不允許使用者在 Amazon MWAA主控台上檢視環境,或使用 Amazon MWAAAPIs來執行任何動作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "airflow:CreateCliToken" ], "Resource": "arn:aws:airflow:${Region}:${Account}:environment/${EnvironmentName}" } ] }
建立JSON政策
您可以在 IAM主控台上建立JSON政策,並將政策連接至您的使用者、角色或群組。下列步驟說明如何在 中建立JSON政策IAM。
建立 JSON 政策
-
在 IAM 主控台上開啟政策頁面
。 -
選擇 建立政策。
-
選擇 (JSON) 索引標籤。
-
新增您的JSON政策。
-
選擇檢閱政策。
-
在名稱和描述的文字欄位中輸入值 (選用)。
例如,您可以命名政策
AmazonMWAAReadOnlyAccess
。 -
選擇 建立政策。
將政策連接至開發人員群組的範例使用案例
假設您正在 中使用IAM名為 的 群組AirflowDevelopmentGroup
,將許可套用至 Apache Airflow 開發團隊中的所有開發人員。這些使用者需要存取 AmazonMWAAFullConsoleAccess
、 AmazonMWAAAirflowCliAccess
和 AmazonMWAAWebServerAccess
許可政策。本節說明如何在 中建立群組IAM、建立和連接這些政策,以及將群組與IAM使用者建立關聯。這些步驟假設您使用的是 AWS 擁有的金鑰。
建立mazonMWAAFullConsoleAccess 政策
-
在 IAM 主控台上開啟政策頁面
。 -
選擇 建立政策。
-
選擇 (JSON) 索引標籤。
-
貼上 JSON的政策
AmazonMWAAFullConsoleAccess
。 -
取代下列值:
-
{your-account-id}
– AWS 您的帳戶 ID (例如0123456789
) -
{your-kms-id}
– 客戶受管金鑰的唯一識別符,僅適用於使用客戶受管金鑰進行靜態加密的情況。
-
-
選擇檢閱政策。
-
在名稱
AmazonMWAAFullConsoleAccess
中輸入 。 -
選擇 建立政策。
建立mazonMWAAWebServerAccess 政策
-
在 IAM 主控台上開啟政策頁面
。 -
選擇 建立政策。
-
選擇 (JSON) 索引標籤。
-
貼上 JSON的政策
AmazonMWAAWebServerAccess
。 -
取代下列值:
-
{your-region}
– Amazon MWAA環境的區域 (例如us-east-1
) -
{your-account-id}
– AWS 您的帳戶 ID (例如0123456789
) -
{your-environment-name}
– 您的 Amazon MWAA環境名稱 (例如MyAirflowEnvironment
) -
{airflow-role}
–Admin
Apache Airflow 預設角色
-
-
選擇檢閱政策。
-
在名稱
AmazonMWAAWebServerAccess
中輸入 。 -
選擇 建立政策。
建立mazonMWAAAirflowCliAccess 政策
-
在 IAM 主控台上開啟政策頁面
。 -
選擇 建立政策。
-
選擇 (JSON) 索引標籤。
-
貼上 JSON的政策
AmazonMWAAAirflowCliAccess
。 -
選擇檢閱政策。
-
在名稱
AmazonMWAAAirflowCliAccess
中輸入 。 -
選擇 建立政策。
建立 群組
-
在 IAM 主控台上開啟群組頁面
。 -
輸入 的名稱
AirflowDevelopmentGroup
。 -
選擇 Next Step (後續步驟)。
-
在篩選條件中輸入
AmazonMWAA
來篩選結果。 -
選取您建立的三個政策。
-
選擇 Next Step (後續步驟)。
-
選擇 Create Group (建立群組)。
與使用者建立關聯
-
在 IAM 主控台上開啟使用者頁面
。 -
選擇使用者。
-
選擇 Groups (群組)。
-
選擇將使用者新增至群組。
-
選取AirflowDevelopmentGroup。
-
選擇 Add to Groups (新增至群組)。