

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

# 教學課程：限制 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)
+ [步驟一：使用預設 `Public` Apache Airflow 角色將 Amazon MWAA Webserver 存取權提供給 IAM 主體。](#limit-access-to-dags-apply-public-access)
+ [步驟二：建立新的 Apache Airflow 自訂角色](#limit-access-to-dags-create-new-airflow-role)
+ [步驟三：將您建立的角色指派給 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>

若要完成本教學課程中的步驟，您需要下列項目：
+ [具有多個 DAGs Amazon MWAA 環境](get-started.md)
+ `Admin` 具有 [AdministratorAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AdministratorAccess$jsonEditor) 許可的 IAM 主體，以及 IAM 使用者 `MWAAUser`，作為您可以限制 DAG 存取的主體。如需管理員角色的詳細資訊，請參閱《*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)已安裝。

## 步驟一：使用預設 `Public` Apache Airflow 角色將 Amazon MWAA Webserver 存取權提供給 IAM 主體。
<a name="limit-access-to-dags-apply-public-access"></a>

**使用 授予許可 AWS 管理主控台**

1.  AWS 帳戶 使用 `Admin`角色登入您的 ，並開啟 [IAM 主控台](https://console.aws.amazon.com/iam/)。

1. 在左側導覽窗格中，選擇**使用者**，然後從使用者資料表中選擇您的 Amazon MWAA IAM 使用者。

1. 在使用者詳細資訊頁面的**摘要**下，選擇**許可**索引標籤，然後選擇**許可政策**以展開卡片，然後選擇**新增許可**。

1. 在**授予許可**區段中，選擇**直接連接現有政策**，然後選擇**建立政策**以建立和連接您自己的自訂許可政策。

1. 在**建立政策**頁面上，選擇 **JSON**，然後在政策編輯器中複製並貼上下列 JSON 許可政策。Tha 政策會使用預設 `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"
               ]
           }
       ]
   }
   ```

------

## 步驟二：建立新的 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. 從角色清單中，選取**使用者**，然後在頁面開頭選擇**動作**以開啟下拉式清單。選擇**複製角色**，並確認**確定**
**注意**  
複製 **Ops** 或 **Viewer** 角色，分別授予更多或更少的存取權。

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 使用者。

## 步驟三：將您建立的角色指派給 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 管理主控台，再次開啟 Amazon MWAA 主控台，並啟動您環境的 Apache Airflow UI。

1. 從 UI 儀表板中，展開**安全性**下拉式清單，這次選擇**列出使用者**。

1. 在使用者表格中，尋找新的 Apache Airflow 使用者，然後選擇**編輯記錄**。使用者的名字將符合以下模式的 IAM 使用者名稱：`user/mwaa-user`。

1. 在**編輯使用者**頁面上的角色****區段中，新增您建立的新自訂角色，然後選擇**儲存**。
**注意**  
**姓氏**欄位為必要欄位，但空格符合需求。

   IAM `Public`主體授予存取 Apache Airflow UI 的`MWAAUser`許可，而新角色則提供取得其 DAGs所需的額外許可。

**重要**  
IAM 未授權且使用 Apache Airflow UI 新增的 5 個預設角色 （例如 `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 角色。