

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理對 Amazon MWAA 環境的存取
<a name="manage-access"></a>

必須允許 Amazon Managed Workflows for Apache Airflow 使用環境使用的其他 AWS 服務和資源。您也需要獲得在 AWS Identity and Access Management (IAM) 中存取 Amazon MWAA 環境和 Apache Airflow UI 的許可。本節說明用來授予環境 AWS 資源存取權的執行角色，以及如何新增許可，以及存取 Amazon MWAA 環境和 Apache Airflow UI 所需的 AWS 帳戶 許可。

**Topics**
+ [存取 Amazon MWAA 環境](access-policies.md)
+ [Amazon MWAA 的服務連結角色](mwaa-slr.md)
+ [Amazon MWAA 執行角色](mwaa-create-role.md)
+ [預防跨服務混淆代理人](cross-service-confused-deputy-prevention.md)
+ [Apache Airflow 存取模式](configuring-networking.md)

# 存取 Amazon MWAA 環境
<a name="access-policies"></a>

若要使用 Amazon Managed Workflows for Apache Airflow，您必須使用具有必要許可的帳戶和 IAM 實體。本主題說明您可以連接到 Apache Airflow 開發團隊和 Amazon Managed Workflows for Apache Airflow 環境的 Apache Airflow 使用者存取政策。

我們建議您使用臨時登入資料並設定聯合身分與群組和角色，以存取您的 Amazon MWAA 資源。最佳實務是避免將政策直接連接到您的 IAM 使用者。反之，請定義群組或角色，以提供 AWS 資源的暫時存取權。

 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是您可以在帳戶中建立的另一種 IAM 身分，具有特定的許可。IAM 角色類似於 IAM 使用者，因為它是具有許可政策的 AWS 身分，可決定身分可以和不可以執行的操作 AWS。但是，角色的目的是讓需要它的任何人可代入，而不是單獨地與某個人員關聯。此外，角色沒有與之關聯的標準長期憑證，例如密碼或存取金鑰。反之，當您擔任角色時，其會為您的角色工作階段提供臨時安全性憑證。

 若要將許可指派給聯合身分，您可以建立角色並定義角色的許可。當聯合身分進行身分驗證時，該身分會與角色建立關聯，並獲授予由角色定義的許可。如需有關聯合角色的相關資訊，請參閱《*IAM 使用者指南*》中的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)。如果您使用 IAM Identity Center，則需要設定許可集。為控制身分驗證後可以存取的內容，IAM Identity Center 將許可集與 IAM 中的角色相關聯。如需有關許可集的資訊，請參閱《*AWS IAM Identity Center 使用者指南*》中的[許可集](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)。

 您可以使用帳戶中的 IAM 角色，授予另一個 AWS 帳戶 許可來存取您帳戶的資源。如需範例，請參閱《[IAM 使用者指南》中的 IAM 教學課程： AWS 帳戶 使用 IAM 角色委派跨 的存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)。 **

**Topics**
+ [運作方式](#access-policies-how)
+ [完整主控台存取政策：AmazonMWAAFullConsoleAccess](#console-full-access)
+ [完整 API 和主控台存取政策：AmazonMWAAFullApiAccess](#full-access-policy)
+ [唯讀主控台存取政策：AmazonMWAAReadOnlyAccess](#mwaa-read-only)
+ [Apache Airflow UI 存取政策：AmazonMWAAWebServerAccess](#web-ui-access)
+ [Apache Airflow Rest API 存取政策：AmazonMWAARestAPIAccess](#rest-api-access)
+ [Apache Airflow CLI 政策：AmazonMWAAAirflowCliAccess](#cli-access)
+ [建立 JSON 政策](#access-policy-iam-console-create)
+ [將政策連接至開發人員群組的範例使用案例](#access-policy-use-case)
+ [後續步驟？](#access-policy-next-up)

## 運作方式
<a name="access-policies-how"></a>

Amazon MWAA 環境中使用的資源和服務無法供所有 AWS Identity and Access Management (IAM) 實體存取。您必須建立政策，授予 Apache Airflow 使用者存取這些資源的許可。例如，您需要將存取權授予 Apache Airflow 開發團隊。

Amazon MWAA 使用這些政策來驗證使用者是否具有在 AWS 主控台或透過環境使用的 APIs執行動作所需的許可。

您可以使用本主題中的 JSON 政策，為 IAM 中的 Apache Airflow 使用者建立政策，然後將政策連接到 IAM 中的使用者、群組或角色。
+ [AmazonMWAAFullConsoleAccess](#console-full-access) – 使用此政策授予在 Amazon MWAA 主控台上設定環境的許可。
+ [AmazonMWAAFullApiAccess](#full-access-policy) – 使用此政策授予所有用於管理環境的 Amazon MWAA APIs 存取權。
+ [AmazonMWAAReadOnlyAccess](#mwaa-read-only) – 使用此政策授予環境在 Amazon MWAA 主控台上使用的資源存取權。
+ [AmazonMWAAWebServerAccess](#web-ui-access) – 使用此政策授予對 Apache Airflow Web 伺服器的存取權。
+ [AmazonMWAAAirflowCliAccess](#cli-access) – 使用此政策授予執行 Apache Airflow CLI 命令的存取權。

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

## 完整主控台存取政策：AmazonMWAAFullConsoleAccess
<a name="console-full-access"></a>

如果需要在 Amazon MWAA 主控台上設定環境，使用者可能需要存取`AmazonMWAAFullConsoleAccess`許可政策。

**注意**  
您的完整主控台存取政策必須包含執行 的許可`iam:PassRole`。這可讓使用者將[服務連結角色](mwaa-slr.md)和[執行角色](mwaa-create-role.md)傳遞給 Amazon MWAA。Amazon MWAA 會擔任每個角色來代表您呼叫其他 AWS 服務。下列範例使用 `iam:PassedToService`條件金鑰，將 Amazon MWAA 服務主體 (`airflow.amazonaws.com`) 指定為可傳遞角色的服務。  
如需 的詳細資訊`iam:PassRole`，請參閱《*IAM 使用者指南*》中的[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

如果您想要使用 建立和管理靜態[加密](encryption.md#encryption-at-rest)[AWS 擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)的 Amazon MWAA 環境，請使用下列政策。

### 使用 AWS 擁有的金鑰
<a name="collapsible-full-console-access-aws-owned-key"></a>

------
#### [ 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/*"
            ]
        }
    ]
}
```

------

如果您想要使用[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)建立和管理靜態加密的 Amazon MWAA 環境，請使用下列政策。若要使用客戶受管金鑰，IAM 主體必須具有使用您帳戶中存放的金鑰存取 AWS KMS 資源的許可。

### 使用客戶受管金鑰
<a name="collapsible-full-console-access-cust-key"></a>

------
#### [ 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
<a name="full-access-policy"></a>

如果使用者需要存取用於管理環境的所有 Amazon MWAA APIs則可能需要存取`AmazonMWAAFullApiAccess`許可政策。它不會授予存取 Apache Airflow UI 的許可。

**注意**  
完整的 API 存取政策必須包含執行 的許可`iam:PassRole`。這可讓使用者將[服務連結角色](mwaa-slr.md)和[執行角色](mwaa-create-role.md)傳遞至 Amazon MWAA。Amazon MWAA 會擔任每個角色來代表您呼叫其他 AWS 服務。下列範例使用 `iam:PassedToService`條件金鑰，將 Amazon MWAA 服務主體 (`airflow.amazonaws.com`) 指定為可傳遞角色的服務。  
如需 的詳細資訊`iam:PassRole`，請參閱《*IAM 使用者指南*》中的[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

如果您想要使用 建立和管理靜態加密 AWS 擁有的金鑰 的 Amazon MWAA 環境，請使用下列政策。

### 使用 AWS 擁有的金鑰
<a name="collapsible-full-api-access-cust-key"></a>

------
#### [ 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 資源的許可。

### 使用客戶受管金鑰
<a name="collapsible-full-api-access-cust-key"></a>

------
#### [ 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
<a name="mwaa-read-only"></a>

如果使用者需要存取 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
<a name="web-ui-access"></a>

如果使用者需要存取 Apache Airflow UI，則可能需要存取`AmazonMWAAWebServerAccess`許可政策。它不允許使用者存取 Amazon MWAA 主控台上的環境，或使用 Amazon MWAA APIs 執行任何動作。在 中指定 `Admin`、`User`、 `Op``Viewer`或 `Public`角色`{airflow-role}`，以自訂 Web 字符使用者的存取層級。如需詳細資訊，請參閱 *Apache Airflow 參考指南*中的[預設角色](https://airflow.apache.org/docs/apache-airflow/1.10.6/security.html?highlight=ldap#default-roles)。

------
#### [ 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}"
            ]
        }
    ]
}
```

------

**注意**  
Amazon MWAA 提供 IAM 與五個[預設 Apache Airflow 角色型存取控制 (RBAC) 角色](https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html?highlight=roles)的整合。如需使用自訂 Apache Airflow 角色的詳細資訊，請參閱 [教學課程：限制 Amazon MWAA 使用者存取 DAGs的子集](limit-access-to-dags.md)。
此政策中的 `Resource` 欄位可用來指定 Amazon MWAA 環境的 Apache Airflow 角色型存取控制角色。不過，它不支援政策 `Resource`欄位中的 Amazon MWAA 環境 ARN (Amazon Resource Name)。


## Apache Airflow Rest API 存取政策：AmazonMWAARestAPIAccess
<a name="rest-api-access"></a>

若要存取 Apache Airflow REST API，您必須在 IAM 政策中授予 `airflow:InvokeRestApi`許可。在下列政策範例中，在 中指定 `Admin`、`User`、 `Op``Viewer`或 `Public`角色，`{airflow-role}`以自訂使用者存取層級。如需詳細資訊，請參閱 *Apache Airflow 參考指南*中的[預設角色](https://airflow.apache.org/docs/apache-airflow/1.10.6/security.html?highlight=ldap#default-roles)。

------
#### [ 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}"
            ]
        }
    ]
}
```

------

**注意**  
設定私有 Web 伺服器時，無法從 Virtual Private Cloud (VPC) 外部叫用 `InvokeRestApi`動作。您可以使用 `aws:SourceVpc`金鑰，為此操作套用更精細的存取控制。如需詳細資訊，請參閱 [aws：SourceVpc](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc)
此政策中的 `Resource` 欄位可用來指定 Amazon MWAA 環境的 Apache Airflow 角色型存取控制角色。不過，它不支援政策 `Resource`欄位中的 Amazon MWAA 環境 ARN (Amazon Resource Name)。

## Apache Airflow CLI 政策：AmazonMWAAAirflowCliAccess
<a name="cli-access"></a>

如果使用者需要執行 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 政策
<a name="access-policy-iam-console-create"></a>

您可以在 IAM 主控台上建立 JSON 政策，並將政策連接至您的使用者、角色或群組。下列步驟說明如何在 IAM 中建立 JSON 政策。

**建立 JSON 政策**

1. 在 IAM 主控台上開啟[政策頁面](https://console.aws.amazon.com/iam/home#/policies)。

1. 選擇**建立政策**。

1. 請選擇 **JSON** 標籤。

1. 新增您的 JSON 政策。

1. 選擇**檢閱政策**。

1. 在**名稱**和**描述**的文字欄位中輸入值 （選用）。

   例如，您可以命名政策 `AmazonMWAAReadOnlyAccess`。

1. 選擇**建立政策**。

## 將政策連接至開發人員群組的範例使用案例
<a name="access-policy-use-case"></a>

假設您正在 IAM 中使用名為 的群組`AirflowDevelopmentGroup`，將許可套用至 Apache Airflow 開發團隊中的所有開發人員。這些使用者需要存取 `AmazonMWAAFullConsoleAccess`、 `AmazonMWAAAirflowCliAccess`和 `AmazonMWAAWebServerAccess`許可政策。本節說明如何在 IAM 中建立群組、建立和連接這些政策，並將群組與 IAM 使用者建立關聯。這些步驟假設您使用 [AWS擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

**建立 AmazonMWAAFullConsoleAccess 政策**

1. 下載 [AmazonMWAAFullConsoleAccess 存取政策](./samples/AmazonMWAAFullConsoleAccess.zip)。

1. 在 IAM 主控台上開啟[政策頁面](https://console.aws.amazon.com/iam/home#/policies)。

1. 選擇**建立政策**。

1. 請選擇 **JSON** 標籤。

1. 貼上 的 JSON 政策`AmazonMWAAFullConsoleAccess`。

1. 取代下列值：

   1. *123456789012* – 您的 AWS 帳戶 ID （例如 `0123456789`)

   1. *\$1your-kms-id\$1* – 客戶受管金鑰的唯一識別符，僅適用於使用客戶受管金鑰進行靜態加密的情況。

1. 選擇**檢閱政策**。

1. 在**名稱**`AmazonMWAAFullConsoleAccess`中輸入 。

1. 選擇**建立政策**。

**建立 AmazonMWAAWebServerAccess 政策**

1. 下載 [AmazonMWAAWebServerAccess 存取政策](./samples/AmazonMWAAWebServerAccess.zip)。

1. 在 IAM 主控台上開啟[政策頁面](https://console.aws.amazon.com/iam/home#/policies)。

1. 選擇**建立政策**。

1. 請選擇 **JSON** 標籤。

1. 貼上 的 JSON 政策`AmazonMWAAWebServerAccess`。

1. 取代下列值：

   1. *us-east-1* – Amazon MWAA 環境的區域 （例如 `us-east-1`)

   1. *123456789012* – 您的 AWS 帳戶 ID （例如 `0123456789`)

   1. *\$1your-environment-name\$1* – 您的 Amazon MWAA 環境名稱 （例如 `MyAirflowEnvironment`)

   1. *\$1airflow-role\$1* – `Admin` Apache Airflow [預設角色](https://airflow.apache.org/docs/apache-airflow/1.10.6/security.html?highlight=ldap#default-roles)

1. 選擇**檢閱政策**。

1. 在**名稱**`AmazonMWAAWebServerAccess`中輸入 。

1. 選擇**建立政策**。

**建立 AmazonMWAAAirflowCliAccess 政策**

1. 下載 [AmazonMWAAAirflowCliAccess 存取政策](./samples/AmazonMWAAAirflowCliAccess.zip)。

1. 在 IAM 主控台上開啟[政策頁面](https://console.aws.amazon.com/iam/home#/policies)。

1. 選擇**建立政策**。

1. 請選擇 **JSON** 標籤。

1. 貼上 的 JSON 政策`AmazonMWAAAirflowCliAccess`。

1. 選擇**檢閱政策**。

1. 在**名稱**`AmazonMWAAAirflowCliAccess`中輸入 。

1. 選擇**建立政策**。

**建立 群組**

1. 在 IAM 主控台上開啟[群組頁面](https://console.aws.amazon.com/iam/home#/groups)。

1. 輸入 的名稱`AirflowDevelopmentGroup`。

1. 選擇 **Next Step (後續步驟)**。

1. 輸入 `AmazonMWAA`以篩選**篩選條件**中的結果。

1. 選取您建立的三個政策。

1. 選擇 **Next Step (後續步驟)**。

1. 選擇 **Create Group (建立群組)**。

**與使用者建立關聯**

1. 在 IAM 主控台上開啟[使用者頁面](https://console.aws.amazon.com/iam/home#/users)。

1. 選擇使用者。

1. 選擇 **Groups (群組)**。

1. 選擇**將使用者新增至群組**。

1. 選取 **AirflowDevelopmentGroup**。

1. 選擇 **Add to Groups (新增至群組)**。

## 後續步驟？
<a name="access-policy-next-up"></a>
+ 了解如何在 中產生權杖以存取 Apache Airflow UI[存取 Apache Airflow](access-airflow-ui.md)。
+ 進一步了解如何在建立 IAM 政策中[建立 IAM 政策](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html)。

# Amazon MWAA 的服務連結角色
<a name="mwaa-slr"></a>

Amazon Managed Workflows for Apache Airflow 使用 AWS Identity and Access Management (IAM)[ 服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Amazon MWAA 的唯一 IAM 角色類型。服務連結角色是由 Amazon MWAA 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

服務連結角色可讓您更輕鬆地設定 Amazon MWAA，因為您不需要手動新增必要的許可。Amazon MWAA 會定義其服務連結角色的許可，除非另有定義，否則只有 Amazon MWAA 可以擔任其角色。定義的許可包括信任政策和許可政策，且該許可政策無法附加至其他 IAM 實體。

您必須先刪除服務連結角色的相關資源，才能將其刪除。這可保護您的 Amazon MWAA 資源，因為您不會不小心移除存取資源的許可。

如需有關支援服務連結角色的其他 服務的資訊，請參閱[AWS 使用 IAM 的服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，並在**服務連結角色**欄中搜尋具有**是**的服務。選擇有連結的**是**，以存取該服務的服務連結角色文件。

## Amazon MWAA 的服務連結角色許可
<a name="mwaa-slr-iam-policy"></a>

Amazon MWAA 使用名為 的服務連結角色 `AWSServiceRoleForAmazonMWAA` – 在您帳戶中建立的服務連結角色會授予 Amazon MWAA 對下列 AWS 服務的存取權：
+ Amazon CloudWatch Logs (CloudWatch Logs) – 為 Apache Airflow 日誌建立日誌群組。
+ Amazon CloudWatch (CloudWatch) – 將與您的環境及其基礎元件相關的指標發佈至您的帳戶。
+ Amazon Elastic Compute Cloud (Amazon EC2) – 建立下列資源：
  + 您 VPC 中要供 Apache Airflow 排程器和工作者使用的受 AWS管 Amazon Aurora PostgreSQL 資料庫叢集的 Amazon VPC 端點。
  + 如果您為 Apache Airflow Web 伺服器選擇[私有網路](configuring-networking.md)選項，則可使用額外的 Amazon VPC 端點來啟用 Web 伺服器的網路存取。
  + Amazon VPC 中的[彈性網路界面 (ENIs)](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html) 可讓您的網路存取 Amazon VPC 中託管 AWS 的資源。

下列信任政策允許服務主體擔任服務連結角色。Amazon MWAA 的服務主體`airflow.amazonaws.com`如政策所示。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "airflow.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

名為 的角色許可政策`AmazonMWAAServiceRolePolicy`允許 Amazon MWAA 對指定的資源完成下列動作：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:DescribeLogGroups"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:airflow-*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachNetworkInterface",
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeVpcs",
                "ec2:DetachNetworkInterface"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVpcEndpoint",
            "Resource": "arn:aws:ec2:*:*:vpc-endpoint/*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": "AmazonMWAAManaged"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:ModifyVpcEndpoint",
                "ec2:DeleteVpcEndpoints"
            ],
            "Resource": "arn:aws:ec2:*:*:vpc-endpoint/*",
            "Condition": {
                "Null": {
                    "aws:ResourceTag/AmazonMWAAManaged": false
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateVpcEndpoint",
                "ec2:ModifyVpcEndpoint"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:vpc/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:subnet/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:vpc-endpoint/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "CreateVpcEndpoint"
                },
                "ForAnyValue:StringEquals": {
                    "aws:TagKeys": "AmazonMWAAManaged"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": [
                        "AWS/MWAA"
                    ]
                }
            }
        }
    ]
}
```

------

您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 為 Amazon MWAA 建立服務連結角色
<a name="mwaa-slr-create-slr"></a>

您不需要手動建立服務連結角色，當您使用 AWS 管理主控台、 AWS CLI或 AWS API 建立新的 Amazon MWAA 環境時，Amazon MWAA 會為您建立服務連結角色。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。當您建立另一個環境時，Amazon MWAA 會再次為您建立服務連結角色。

## 編輯 Amazon MWAA 的服務連結角色
<a name="mwaa-slr-edit-slr"></a>

Amazon MWAA 不允許編輯 AWSServiceRoleForAmazonMWAA 服務連結角色。因為有各種實體可能會參考服務連結角色，所以您無法在建立角色之後變更角色名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 刪除 Amazon MWAA 的服務連結角色
<a name="mwaa-slr-delete-slr"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。

當您刪除 Amazon MWAA 環境時，Amazon MWAA 會刪除它做為服務一部分使用的所有相關資源。不過，您必須先等待 Amazon MWAA 完成刪除您的環境，然後再嘗試刪除服務連結角色。如果您在 Amazon MWAA 刪除環境之前刪除服務連結角色，Amazon MWAA 可能無法刪除所有環境的相關聯資源。

**使用 IAM 手動刪除服務連結角色**

使用 IAM 主控台 AWS CLI、 或 AWS API 來刪除 AWSServiceRoleForAmazonMWAA 服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

## Amazon MWAA 服務連結角色支援的區域
<a name="mwaa-slr-regions"></a>

Amazon MWAA 支援在提供服務的所有區域中使用服務連結角色。如需詳細資訊，請參閱 [Amazon Managed Workflows for Apache Airflow 端點和配額](https://docs.aws.amazon.com/general/latest/gr/mwaa.html)。

## 政策更新
<a name="mwaa-slr-policies-updates"></a>


| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  Amazon MWAA 會更新其服務連結角色許可政策  |  [`AmazonMWAAServiceRolePolicy`](#mwaa-slr-iam-policy) – Amazon MWAA 會更新其服務連結角色的許可政策，以授予 Amazon MWAA 許可，將與服務基礎資源相關的其他指標發佈至客戶帳戶。這些新指標發佈於 `AWS/MWAA`  |  2022 年 11 月 18 日  | 
|  Amazon MWAA 已開始追蹤變更  |  Amazon MWAA 開始追蹤其 AWS受管服務連結角色許可政策的變更。  |  2022 年 11 月 18 日  | 

# Amazon MWAA 執行角色
<a name="mwaa-create-role"></a>

執行角色是具有許可政策的 AWS Identity and Access Management (IAM) 角色，授予 Amazon Managed Workflows for Apache Airflow AWS 代表您調用其他服務資源的許可。這可能包括您的 Amazon S3 儲存貯體、 [AWS擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)和 CloudWatch Logs 等資源。Amazon MWAA 環境每個環境都需要一個執行角色。本主題說明如何使用和設定您環境的執行角色，以允許 Amazon MWAA 存取您環境使用的其他 AWS 資源。

**Contents**
+ [執行角色概觀](#mwaa-create-role-how)
  + [預設連接的許可](#mwaa-create-role-how-create-role)
  + [如何新增使用其他服務的許可 AWS](#mwaa-create-role-how-adding)
  + [如何關聯新的執行角色](#mwaa-create-role-how-associating)
+ [Create a new role (建立新角色)](#mwaa-create-role-mwaa-onconsole)
+ [存取和更新執行角色政策](#mwaa-create-role-update)
  + [連接 JSON 政策以使用其他 AWS 服務](#mwaa-create-role-attach-json-policy)
+ [使用帳戶層級公有存取區塊授予 Amazon S3 儲存貯體的存取權](#mwaa-create-role-s3-publicaccessblock)
+ [使用 Apache Airflow 連線](#mwaa-create-role-airflow-connections)
+ [執行角色的 JSON 政策範例](#mwaa-create-role-json)
  + [客戶受管金鑰的範例政策](#mwaa-create-role-cmk)
  + [AWS擁有金鑰的範例政策](#mwaa-create-role-aocmk)
+ [後續步驟？](#mwaa-create-role-next-up)

## 執行角色概觀
<a name="mwaa-create-role-how"></a>

Amazon MWAA 使用您環境 AWS 所用其他服務的許可來自執行角色。Amazon MWAA 執行角色需要環境使用的下列 AWS 服務許可：
+ Amazon CloudWatch (CloudWatch) – 傳送 Apache Airflow 指標和日誌。
+ Amazon Simple Storage Service (Amazon S3) – 剖析您環境的 DAG 程式碼和支援檔案 （例如 `requirements.txt`)。
+ Amazon Simple Queue Service (Amazon SQS) – 在 Amazon MWAA 擁有的 Amazon SQS 佇列中將環境的 Apache Airflow 任務排入佇列。
+ AWS Key Management Service (AWS KMS) – 適用於您環境的資料加密 （使用 [AWS擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)或[客戶管理的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk))。
**注意**  
如果您已選擇讓 Amazon MWAA 使用 AWS 擁有的 KMS 金鑰來加密資料，則必須在連接至 Amazon MWAA 執行角色的政策中定義許可，以透過 Amazon SQS 授予帳戶外部存放之任意 KMS 金鑰的存取權。需要以下兩個條件，您環境的執行角色才能存取任意 KMS 金鑰：  
第三方帳戶中的 KMS 金鑰需要透過其資源政策允許此跨帳戶存取。
您的 DAG 程式碼需要存取在第三方帳戶中以 開頭的 Amazon SQS 佇列`airflow-celery-`，並使用相同的 KMS 金鑰進行加密。
為了降低與跨帳戶存取 資源相關的風險，我們建議您檢閱 DAGs 中放置的程式碼，以確保您的工作流程不會存取您帳戶外部的任意 Amazon SQS 佇列。此外，您可以使用存放在您自己帳戶中的客戶受管 KMS 金鑰來管理 Amazon MWAA 上的加密。這會將您環境的執行角色限制為僅存取您帳戶中的 KMS 金鑰。  
請記住，選擇加密選項後，您無法變更現有環境的選擇。

執行角色還需要下列 IAM 動作的許可：
+ `airflow:PublishMetrics` – 允許 Amazon MWAA 監控環境的運作狀態。

### 預設連接的許可
<a name="mwaa-create-role-how-create-role"></a>

您可以使用 Amazon MWAA 主控台上的預設選項來建立執行角色和 [AWS擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)，然後使用此頁面上的步驟將許可政策新增至您的執行角色。
+ 當您在主控台上選擇**建立新角色**選項時，Amazon MWAA 會將環境所需的最低許可連接至您的執行角色。
+ 在某些情況下，Amazon MWAA 會連接最大許可。例如，我們建議您在建立環境時，選擇 Amazon MWAA 主控台上的 選項來建立執行角色。Amazon MWAA 會使用執行角色中的 regex 模式作為 ，自動新增所有 CloudWatch Logs 群組的許可政策`"arn:aws:logs:us-east-1:111122223333:log-group:airflow-your-environment-name-*"`。

### 如何新增使用其他服務的許可 AWS
<a name="mwaa-create-role-how-adding"></a>

建立環境後，Amazon MWAA 無法新增或編輯許可政策至現有的執行角色。您必須使用環境所需的其他許可政策來更新您的執行角色。例如，如果您的 DAG 需要存取 AWS Glue，Amazon MWAA 無法自動偵測您的環境所需的這些許可，或將許可新增至您的執行角色。

您可以透過兩種方式將許可新增至執行角色：
+ 透過為執行角色內嵌修改 JSON 政策。您可以使用此頁面上的範例 [JSON 政策文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)，在 IAM 主控台上新增或取代執行角色的 JSON 政策。
+ 為 AWS 服務建立 JSON 政策，並將其連接至您的執行角色。您可以使用此頁面上的步驟，將 AWS 服務的新 JSON 政策文件與 IAM 主控台上的執行角色建立關聯。

假設執行角色已與您的環境相關聯，Amazon MWAA 可以立即開始使用新增的許可政策。這也表示如果您從執行角色移除任何必要的許可，您的 DAGs可能會失敗。

### 如何關聯新的執行角色
<a name="mwaa-create-role-how-associating"></a>

您可以隨時變更環境的執行角色。如果新的執行角色尚未與您的環境建立關聯，請使用此頁面的步驟建立新的執行角色政策，並將角色與您的環境建立關聯。

## Create a new role (建立新角色)
<a name="mwaa-create-role-mwaa-onconsole"></a>

根據預設，Amazon MWAA 會代表您建立 [AWS擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)以進行資料加密和執行角色。您可以在建立環境時選擇 Amazon MWAA 主控台上的預設選項。下圖顯示為環境建立執行角色的預設選項。

![\[這是具有預設選項的映像，用於建立新的角色。\]](http://docs.aws.amazon.com/zh_tw/mwaa/latest/userguide/images/mwaa-console-permissions.png)


**重要**  
當您建立新的執行角色時，請勿重複使用已刪除執行角色的名稱。唯一名稱有助於防止衝突，並確保適當的資源管理。

## 存取和更新執行角色政策
<a name="mwaa-create-role-update"></a>

您可以在 Amazon MWAA 主控台上存取您環境的執行角色，並在 IAM 主控台上更新角色的 JSON 政策。

**更新執行角色政策**

1. 在 Amazon MWAA 主控台上開啟[環境](https://console.aws.amazon.com/mwaa/home#/environments)頁面。

1. 選擇環境。

1. 在**許可**窗格中選擇執行角色，以在 IAM 中開啟許可頁面。

1. 選擇執行角色名稱以開啟許可政策。

1. 選擇 **Edit Policy** (編輯政策)。

1. 選擇 **JSON** 標籤。

1. 更新您的 JSON 政策。

1. 選擇**檢閱政策**。

1. 選擇**儲存變更**。

### 連接 JSON 政策以使用其他 AWS 服務
<a name="mwaa-create-role-attach-json-policy"></a>

您可以為 AWS 服務建立 JSON 政策，並將其連接至您的執行角色。例如，您可以連接下列 JSON 政策，授予 中所有資源的唯讀存取權 AWS Secrets Manager。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "secretsmanager:GetResourcePolicy",
            "secretsmanager:GetSecretValue",
            "secretsmanager:DescribeSecret",
            "secretsmanager:ListSecretVersionIds"
         ],
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

**將政策連接至執行角色**

1. 在 Amazon MWAA 主控台上開啟[環境](https://console.aws.amazon.com/mwaa/home#/environments)頁面。

1. 選擇環境。

1. 在**許可**窗格中選擇您的執行角色。

1. 選擇**連接政策**。

1. 選擇 **Create policy** (建立政策)。

1. 選擇 **JSON**。

1. 貼上 JSON 政策。

1. 選擇**下一步：標籤**、**下一步：檢閱**。

1. 輸入政策的描述性名稱 （例如 `SecretsManagerReadPolicy`) 和描述。

1. 選擇**建立政策**。

## 使用帳戶層級公有存取區塊授予 Amazon S3 儲存貯體的存取權
<a name="mwaa-create-role-s3-publicaccessblock"></a>

您可能想要使用 Amazon S3 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutPublicAccessBlock.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutPublicAccessBlock.html) 操作來封鎖對您帳戶中所有儲存貯體的存取。當您封鎖對帳戶中所有儲存貯體的存取時，您的環境執行角色必須在許可政策中包含 `s3:GetAccountPublicAccessBlock`動作。

下列範例示範當封鎖對您帳戶中所有 Amazon S3 儲存貯體的存取時，您必須連接至執行角色的政策。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
     {
       "Effect": "Allow",
       "Action": "s3:GetAccountPublicAccessBlock",
       "Resource": "*"
     }
  ]
}
```

------

如需限制存取 Amazon S3 儲存貯體的詳細資訊，請參閱《[Amazon Simple Storage Service 使用者指南》中的封鎖對 Amazon S3 儲存體的公開存取](https://docs.aws.amazon.com/)。 **

## 使用 Apache Airflow 連線
<a name="mwaa-create-role-airflow-connections"></a>

您也可以建立 Apache Airflow 連線，並在 Apache Airflow 連線物件中指定執行角色及其 ARN。若要進一步了解，請參閱 [管理 Apache Airflow 的連線](manage-connections.md)。

## 執行角色的 JSON 政策範例
<a name="mwaa-create-role-json"></a>

您可以使用本節中的兩個範例許可政策來取代用於現有執行角色的許可政策，或建立新的執行角色並用於您的環境。這些政策包含 Apache Airflow 日誌群組[的資源 ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) 預留位置、[Amazon S3 儲存貯體](mwaa-s3-bucket.md)和 [Amazon MWAA 環境](create-environment.md)。

我們建議複製範例政策、取代範例 ARNs 或預留位置，然後使用 JSON 政策來建立或更新執行角色。

### 客戶受管金鑰的範例政策
<a name="mwaa-create-role-cmk"></a>

下列範例提供可用於[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)的執行角色政策。

------
#### [ JSON ]

****  

```
{
 "Version":"2012-10-17",		 	 	 
 "Statement": [
  { 
   "Effect": "Deny",
   "Action": "s3:ListAllMyBuckets",
   "Resource": [
     "arn:aws:s3:::amzn-s3-demo-bucket",
	   "arn:aws:s3:::amzn-s3-demo-bucket/*"
   ]
  }, 
  { 
   "Effect": "Allow",
   "Action": [ 
    "s3:GetObject*",
    "s3:GetBucket*",
    "s3:List*"
   ],
   "Resource": [
     "arn:aws:s3:::amzn-s3-demo-bucket",
	   "arn:aws:s3:::amzn-s3-demo-bucket/*"
   ]
  },
  {
   "Effect": "Allow",
   "Action": [
    "logs:CreateLogStream",
    "logs:CreateLogGroup",
    "logs:PutLogEvents",
    "logs:GetLogEvents",
    "logs:GetLogRecord",
    "logs:GetLogGroupFields",
    "logs:GetQueryResults"
   ],
   "Resource": [
    "arn:aws:logs:us-east-1:111122223333:log-group:airflow-your-environment-name:*"
   ]
  },
  {
   "Effect": "Allow",
   "Action": [
    "logs:DescribeLogGroups"
   ],
   "Resource": [
    "*"
   ]
  },
  {
   "Effect": "Allow",
   "Action": [
    "s3:GetAccountPublicAccessBlock"
   ],
   "Resource": [
    "*"
   ]
  },
  {
   "Effect": "Allow",
   "Action": "cloudwatch:PutMetricData",
   "Resource": "*"
  },
  {
   "Effect": "Allow",
   "Action": [
    "sqs:ChangeMessageVisibility",
    "sqs:DeleteMessage",
    "sqs:GetQueueAttributes",
    "sqs:GetQueueUrl",
    "sqs:ReceiveMessage",
    "sqs:SendMessage"
   ],
   "Resource": "arn:aws:sqs:us-east-1:*:airflow-celery-*"
  },
  {
   "Effect": "Allow",
   "Action": [
    "kms:Decrypt",
    "kms:DescribeKey",
    "kms:GenerateDataKey*",
    "kms:Encrypt"
   ],
   "Resource": "arn:aws:kms:us-east-1:111122223333:key/your-kms-cmk-id",
   "Condition": {
    "StringLike": {
     "kms:ViaService": [
      "sqs.us-east-1.amazonaws.com",
      "s3.us-east-1.amazonaws.com"
     ]
    }
   }
  }
 ]
}
```

------

接著，您需要允許 Amazon MWAA 擔任此角色，以代表您執行動作。這可以透過[使用 IAM 主控台將](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console) `"airflow.amazonaws.com"` `"airflow-env.amazonaws.com"`和服務主體新增至此執行角色的信任實體清單，或使用 將這些服務主體放入此執行角色的擔任角色政策文件中[https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) AWS CLI。請參閱下列擔任角色政策文件範例：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
            "Service": ["airflow.amazonaws.com","airflow-env.amazonaws.com"]
        },
        "Action": "sts:AssumeRole"
      }
   ]
}
```

------

然後將下列 JSON 政策連接至您的[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。此政策使用 [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context) 條件金鑰字首，以允許存取 CloudWatch Logs 中的 Apache Airflow 日誌群組。

```
{
  "Sid": "Allow logs access",
  "Effect": "Allow",
  "Principal": {
    "Service": "logs.us-east-1.amazonaws.com"
  },
  "Action": [
    "kms:Encrypt*",
    "kms:Decrypt*",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:Describe*"
  ],
  "Resource": "*",
  "Condition": {
    "ArnLike": {
      "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-east-1:111122223333:*"
    }
  }
}
```

### AWS擁有金鑰的範例政策
<a name="mwaa-create-role-aocmk"></a>

下列範例顯示您可以用於 [AWS擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)的執行角色政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "airflow:PublishMetrics",
            "Resource": "arn:aws:airflow:us-east-1:111122223333:environment/{your-environment-name}"
        },
        { 
            "Effect": "Deny",
            "Action": "s3:ListAllMyBuckets",
            "Resource": [
								"arn:aws:s3:::amzn-s3-demo-bucket",
								"arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        { 
            "Effect": "Allow",
            "Action": [ 
                "s3:GetObject*",
                "s3:GetBucket*",
                "s3:List*"
            ],
            "Resource": [
								"arn:aws:s3:::amzn-s3-demo-bucket",
								"arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:PutLogEvents",
                "logs:GetLogEvents",
                "logs:GetLogRecord",
                "logs:GetLogGroupFields",
                "logs:GetQueryResults"
            ],
            "Resource": [
            "arn:aws:logs:us-east-1:111122223333:log-group:airflow-{your-environment-name}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sqs:ChangeMessageVisibility",
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:ReceiveMessage",
                "sqs:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-1:*:airflow-celery-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:GenerateDataKey*",
                "kms:Encrypt"
            ],
            "NotResource": "arn:aws:kms:*:111122223333:key/*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                    "sqs.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## 後續步驟？
<a name="mwaa-create-role-next-up"></a>
+ 了解您和您的 Apache Airflow 使用者在 中存取您的環境所需的許可[存取 Amazon MWAA 環境](access-policies.md)。
+ 了解 [使用客戶受管金鑰進行加密](custom-keys-certs.md)。
+ 探索更多[客戶受管政策範例](https://docs.aws.amazon.com/kms/latest/developerguide/customer-managed-policies.html)。

# 預防跨服務混淆代理人
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理人問題屬於安全性問題，其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS，跨服務模擬可能會導致混淆代理人問題。在某個服務 (*呼叫服務*) 呼叫另一個服務 (*被呼叫服務*) 時，可能會發生跨服務模擬。可以操縱呼叫服務，以使用其許可對其他客戶的資源採取動作，方式是它沒有存取的許可。為了避免這種情況， AWS 提供的工具可協助您保護所有 服務的資料，其服務主體已獲得您帳戶中資源的存取權。

我們建議您在環境的執行角色中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)全域條件內容金鑰，以限制 Amazon MWAA 提供其他服務存取資源的許可。如果您想要僅允許一個資源與跨服務存取相關聯，則請使用 `aws:SourceArn`。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件內容索引鍵，以及資源的完整 ARN。如果不知道資源的完整 ARN，或者如果您指定了多個資源，請使用 `aws:SourceArn` 全域內容條件索引鍵搭配萬用字元 (`*`) 來表示 ARN 的未知部分。例如 `arn:aws:airflow:*:123456789012:environment/*`。

的值`aws:SourceArn`必須是您要為其建立執行角色的 Amazon MWAA 環境 ARN。

使用下列範例，在環境的執行角色信任政策中套用 `aws:SourceArn`和 `aws:SourceAccount`全域條件內容金鑰，以防止混淆代理人問題。您可以在建立新的執行角色時使用下列信任政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "airflow.amazonaws.com",
                    "airflow-env.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:airflow:us-east-1:123456789012:environment/your-environment-name"
                },
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                }
            }
        }
    ]
}
```

------

# Apache Airflow 存取模式
<a name="configuring-networking"></a>

Amazon Managed Workflows for Apache Airflow 主控台包含內建選項，可設定您環境中 Apache Airflow Web 伺服器的私有或公有路由。本指南說明 Amazon Managed Workflows for Apache Airflow 環境上 Apache Airflow Web 伺服器可用的存取模式，以及如果您選擇私有網路選項，則需要在 Amazon VPC 中設定的其他資源。

**Contents**
+ [Apache Airflow 存取模式](#configuring-networking-onconsole)
  + [公有網路](#webserver-options-public-network-onconsole)
  + [私有網路](#webserver-options-private-network)
+ [存取模式概觀](#configuring-networking-access-overview)
  + [公有網路存取模式](#access-overview-public)
  + [私有網路存取模式](#access-overview-private)
+ [私有和公有存取模式的設定](#access-network-choose)
  + [公有網路的設定](#access-network-public)
  + [私有網路的設定](#access-network-private)
+ [存取 Apache Airflow Web 伺服器的 VPC 端點 （私有網路存取）](#configuring-access-vpce)

## Apache Airflow 存取模式
<a name="configuring-networking-onconsole"></a>

您可以為 Apache Airflow Web 伺服器選擇私有或公有路由。若要啟用私有路由，請選擇**私有網路**。這會限制使用者存取 Amazon VPC 內的 Apache Airflow Web 伺服器。若要啟用公有路由，請選擇**公有網路**。這可讓使用者透過網際網路存取 Apache Airflow Web 伺服器。

### 公有網路
<a name="webserver-options-public-network-onconsole"></a>

下列架構圖說明具有公有 Web 伺服器的 Amazon MWAA 環境。

![\[此影像顯示具有私有 Web 伺服器的 Amazon MWAA 環境架構。\]](http://docs.aws.amazon.com/zh_tw/mwaa/latest/userguide/images/mwaa-public-web-server.png)


公有網路存取模式允許授予[您環境 IAM 政策](access-policies.md)存取權的使用者透過網際網路存取 Apache Airflow UI。

下圖說明在 Amazon MWAA 主控台上尋找**公有網路**選項的位置。

![\[此影像描述在 Amazon MWAA 主控台上尋找公有網路選項的位置。\]](http://docs.aws.amazon.com/zh_tw/mwaa/latest/userguide/images/mwaa-console-public-network.png)


### 私有網路
<a name="webserver-options-private-network"></a>

下列架構圖說明具有私有 Web 伺服器的 Amazon MWAA 環境。

![\[此影像顯示具有私有 Web 伺服器的 Amazon MWAA 環境架構。\]](http://docs.aws.amazon.com/zh_tw/mwaa/latest/userguide/images/mwaa-private-web-server.png)


私有網路存取模式會將對 Apache Airflow UI 的存取限制在 *Amazon VPC 中*已授予[您環境 IAM 政策](access-policies.md)存取權的使用者。

當您建立具有私有 Web 伺服器存取權的環境時，您必須在 Python wheel 封存檔 (`.whl`) 中封裝所有相依性，然後在 `.whl`中參考 `requirements.txt`。如需使用 wheel 封裝和安裝相依性的說明，請參閱[使用 Python wheel 管理相依性](best-practices-dependencies.md#best-practices-dependencies-python-wheels)。

下圖說明在 Amazon MWAA 主控台上尋找**私有網路**選項的位置。

![\[此影像描述在 Amazon MWAA 主控台上尋找私有網路選項的位置。\]](http://docs.aws.amazon.com/zh_tw/mwaa/latest/userguide/images/mwaa-console-private-network.png)


## 存取模式概觀
<a name="configuring-networking-access-overview"></a>

本節說明當您選擇**公有網路**或**私有網路**存取模式時，在 Amazon VPC 中建立的 VPC 端點 (AWS PrivateLink)。

### 公有網路存取模式
<a name="access-overview-public"></a>

如果您為 Apache Airflow Web 伺服器選擇**公有網路**存取模式，網路流量會透過網際網路公開路由。
+ Amazon MWAA 會為您的 Amazon Aurora PostgreSQL 中繼資料資料庫建立 VPC 介面端點。端點是在映射到您的私有子網路的可用區域中建立的，並且獨立於其他子網路 AWS 帳戶。
+ 然後，Amazon MWAA 會將私有子網路的 IP 地址繫結至介面端點。這旨在支援從 Amazon VPC 的每個可用區域繫結單一 IP 的最佳實務。

### 私有網路存取模式
<a name="access-overview-private"></a>

如果您為 Apache Airflow Web 伺服器選擇**私有網路**存取模式，網路流量會在 *Amazon VPC 內*私下路由。
+ Amazon MWAA 會為您的 Apache Airflow Web 伺服器建立 VPC 介面端點，並為 Amazon Aurora PostgreSQL 中繼資料資料庫建立介面端點。端點會在映射至您私有子網路的可用區域中建立，並獨立於其他子網路 AWS 帳戶。
+ 然後，Amazon MWAA 會將私有子網路的 IP 地址繫結至介面端點。這旨在支援從 Amazon VPC 的每個可用區域繫結單一 IP 的最佳實務。

若要進一步了解，請參閱 [Amazon VPC 和 Apache Airflow 存取模式的範例使用案例](networking-about.md#networking-about-network-usecase)。

## 私有和公有存取模式的設定
<a name="access-network-choose"></a>

下一節說明根據您為環境選擇的 Apache Airflow 存取模式，您需要的其他設定和組態。

### 公有網路的設定
<a name="access-network-public"></a>

如果您為 Apache Airflow Web 伺服器選擇**公有網路**選項，您可以在建立環境後開始使用 Apache Airflow UI。

您需要採取下列步驟，為您的使用者設定存取權，以及您的環境使用其他 AWS 服務的許可。

1. **新增許可**。Amazon MWAA 需要許可才能使用其他 AWS 服務。當您建立環境時，Amazon MWAA 會建立[服務連結角色](mwaa-slr.md)，允許它針對 Amazon Elastic Container Registry (Amazon ECR)、CloudWatch Logs 和 Amazon EC2 使用特定 IAM 動作。

   您可以新增許可，以使用這些服務的其他動作，或透過將許可新增至執行角色 AWS 來使用其他服務。若要進一步了解，請參閱 [Amazon MWAA 執行角色](mwaa-create-role.md)。

1. **建立使用者政策**。您可能需要為使用者建立多個 IAM 政策，以設定對您環境和 Apache Airflow UI 的存取。若要進一步了解，請參閱 [存取 Amazon MWAA 環境](access-policies.md)。

### 私有網路的設定
<a name="access-network-private"></a>

如果您選擇 Apache Airflow Webserver 的**私有網路**選項，則需要為使用者設定存取權、環境使用其他服務的許可 AWS ，以及建立從電腦存取 Amazon VPC 中資源的機制。

1. **新增許可**。Amazon MWAA 需要許可才能使用其他 AWS 服務。當您建立環境時，Amazon MWAA 會建立[服務連結角色](mwaa-slr.md)，允許它針對 Amazon Elastic Container Registry (Amazon ECR)、CloudWatch Logs 和 Amazon EC2 使用特定 IAM 動作。

   您可以新增許可，以使用這些服務的其他動作，或透過將許可新增至執行角色 AWS 來使用其他服務。若要進一步了解，請參閱 [Amazon MWAA 執行角色](mwaa-create-role.md)。

1. **建立使用者政策**。您可能需要為使用者建立多個 IAM 政策，以設定對您環境和 Apache Airflow UI 的存取。若要進一步了解，請參閱 [存取 Amazon MWAA 環境](access-policies.md)。

1. **啟用網路存取**。您需要在 Amazon VPC 中建立機制，才能連線至 Apache Airflow Web 伺服器的 VPC 端點 (AWS PrivateLink)。例如，透過使用 從您的電腦建立 VPN 通道 AWS Client VPN。

## 存取 Apache Airflow Web 伺服器的 VPC 端點 （私有網路存取）
<a name="configuring-access-vpce"></a>

如果您已選擇**私有網路**選項，則需要在 Amazon VPC 中建立機制，以存取 Apache Airflow Web 伺服器的 VPC 端點 (AWS PrivateLink)。建議您針對這些資源使用與 Amazon MWAA 環境相同的 Amazon VPC、VPC 安全群組和私有子網路。

若要進一步了解，請參閱[管理 VPC 端點的存取](https://docs.aws.amazon.com/mwaa/latest/userguide/vpc-vpe-access.html)。