

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：限制 Amazon MWAA 用户访问其中的一个子集 DAGs
<a name="limit-access-to-dags"></a>

Amazon MWAA 通过将 IAM 主体映射到一个或多个 Apache Airflow 的[默认角色](https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html#default-roles)来管理对环境的访问权限。使用以下教程限制个人 Amazon MWAA 用户只能访问特定的 DAG 或一组并与之交互。 DAGs

**注意**  
只要可以担任 IAM 角色，就可以使用联合访问完成本教程中的步骤。

**Topics**
+ [先决条件](#limit-access-to-dags-prerequisites)
+ [步骤 1：使用默认 `Public` Apache Airflow 角色向 IAM 主体提供 Amazon MWAA Web 服务器访问权限。](#limit-access-to-dags-apply-public-access)
+ [步骤 2：创建新的 Apache Airflow 自定义角色](#limit-access-to-dags-create-new-airflow-role)
+ [步骤 3：将您创建的角色分配给 Amazon MWAA 用户](#limit-access-to-dags-assign-role)
+ [后续步骤](#limit-access-to-dags-next-up)
+ [相关资源](#limit-access-to-dags-related-resources)

## 先决条件
<a name="limit-access-to-dags-prerequisites"></a>

要完成本教程中的步骤，您需要做好以下准备：
+ 具有多个 [Amazon MWAA 环境 DAGs](get-started.md)
+ `Admin`具有[AdministratorAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AdministratorAccess$jsonEditor)权限的 IAM 委托人和可以限制 DAG 访问权限的 IAM 用户作为委托人。`MWAAUser`有关管理员角色的更多信息，请参阅*《IAM 用户指南》*中的[管理员任务函数](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)。
**注意**  
请勿将权限策略直接附加到 IAM 用户。我们建议设置用户可以代入的 IAM 角色来临时访问 Amazon MWAA 资源。
+ AWS Command Line Interface 已安装@@ [版本 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install)。

## 步骤 1：使用默认 `Public` Apache Airflow 角色向 IAM 主体提供 Amazon MWAA Web 服务器访问权限。
<a name="limit-access-to-dags-apply-public-access"></a>

**要授予权限，请使用 AWS 管理控制台**

1. 使用`Admin`角色登录您的 AWS 账户 ，然后打开 [IAM 控制台](https://console.aws.amazon.com/iam/)。

1. 在左侧导航窗格中，选择**用户**，然后从用户表中选择 Amazon MWAA IAM 用户。

1. 在用户详细信息页面的**摘要**下，选择**权限**选项卡，然后选择**权限策略**以展开卡片并选择**添加权限**。

1. 在**设置权限**部分中，选择**直接附加现有策略**，然后选择**创建策略**。

1. 在**创建策略**页面上，选择 **JSON**，然后将以下 JSON 权限策略复制并粘贴到策略编辑器中。该策略向具有默认 `Public` Apache Airflow 角色的用户授予 Web 服务器访问权限。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "airflow:CreateWebLoginToken",
               "Resource": [
               "arn:aws:airflow:us-east-1:111122223333:role/YOUR_ENVIRONMENT_NAME/Public"
               ]
           }
       ]
   }
   ```

------

## 步骤 2：创建新的 Apache Airflow 自定义角色
<a name="limit-access-to-dags-create-new-airflow-role"></a>

**使用 Apache Airflow UI 创建新角色**

1. 使用管理员 IAM 角色，打开[ Amazon MWAA 控制台](https://console.aws.amazon.com/mwaa/home)并启动环境的 Apache Airflow UI。

1. 在顶部的导航窗格中，将鼠标悬停在**安全**上以打开下拉列表，然后选择**列出角色**以访问默认的 Apache Airflow 角色。

1. 从角色列表中选择**用户**，然后在页面顶部选择**操作**以打开下拉列表。选择**复制角色**，然后确认**确定**
**注意**  
复制**操作**或**查看者**角色以分别授予或多或少的访问权限。

1. 在表格中找到您创建的新角色，然后选择**编辑记录**。

1. 在**切换角色**页面上，执行以下操作：
   + 对于**名称**，在文本字段中输入角色的新名称。例如 **Restricted**。
   + 要查看**权限**列表，请移除`can read on DAGs`和`can edit on DAGs`，然后为 DAGs 要提供访问权限的集合添加读写权限。例如，对于 DAG `example_dag.py`，添加 **`can read on DAG:example_dag`** 和 **`can edit on DAG:example_dag`**。

   选择**保存**。现在，您有了新的角色，该角色将访问权限限制为 Amazon MWAA 环境中 DAGs 可用的部分内容。您可以将此角色分配给任何现有的 Apache Airflow 用户。

## 步骤 3：将您创建的角色分配给 Amazon MWAA 用户
<a name="limit-access-to-dags-assign-role"></a>

**分配新角色**

1. 使用 `MWAAUser` 的访问凭证，运行以下 CLI 命令来检索环境的 Web 服务器 URL。

   ```
   aws mwaa get-environment --name YOUR_ENVIRONMENT_NAME | jq '.Environment.WebserverUrl'
   ```

   如果成功，您将看到以下输出内容：

   ```
   "ab1b2345-678a-90a1-a2aa-34a567a8a901.c13.us-west-2.airflow.amazonaws.com"
   ```

1. `MWAAUser`登录后 AWS 管理控制台，打开新的浏览器窗口并访问以下内容 URl。将 `Webserver-URL` 替换为您的信息。

   ```
   https://<Webserver-URL>/home
   ```

   如果成功，您将收到一个 `Forbidden` 错误页面，因为 `MWAAUser` 尚未获得访问 Apache Airflow UI 的权限。

1. `Admin`登录后 AWS 管理控制台，再次打开亚马逊 MWAA 控制台并启动环境的 Apache Airflow 用户界面。

1. 在 UI 控制面板中，展开**安全**下拉列表，这次选择**列出用户**。

1. 在用户表中，找到新的 Apache Airflow 用户并选择**编辑记录**。用户的名字将按以下模式匹配 IAM 用户名：`user/mwaa-user`。

1. 在**编辑用户**页面的**角色**部分，添加您创建的新自定义角色，然后选择**保存**。
**注意**  
**姓氏**字段是必填字段，但空格可以满足要求。

   IAM `Public` 委托人授予访问 Apache Airflow 用户界面的`MWAAUser`权限，而新角色则提供获取用户界面所需的额外权限。 DAGs

**重要**  
使用 Apache Airflow UI 添加的 5 个未经 IAM 授权的默认角色（例如 `Admin`）中的任何一个都将在用户下次登录时移除。

## 后续步骤
<a name="limit-access-to-dags-next-up"></a>
+ 要了解有关管理 Amazon MWAA 环境访问权限的更多信息，并获得可供环境用户使用的 JSON IAM 策略示例，请参阅 [访问 Amazon MWAA 环境](access-policies.md)。

## 相关资源
<a name="limit-access-to-dags-related-resources"></a>
+ [访问控制](https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html)（Apache Airflow 文档）— 在 Apache Airflow 文档网站上了解有关默认 Apache Airflow 角色的更多信息。