

AWS Data Pipeline 不再提供給新客戶。的現有客戶 AWS Data Pipeline 可以繼續正常使用服務。[進一步了解](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

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

# 的 Identity and Access Management AWS Data Pipeline
<a name="dp-control-access"></a>

您的安全登入資料會在 AWS 服務中識別您，並授予讓您使用 AWS 資源的許可，例如您的管道。您可以使用 AWS Data Pipeline 和 AWS Identity and Access Management (IAM) 的功能，允許 AWS Data Pipeline 和其他使用者存取您的 AWS Data Pipeline 資源，而無需共用您的安全登入資料。

組織可以共享管道的存取，讓該組織中的每個人都可以共同開發及維護管道。不過，您可能必須執行下列動作：
+ 控制哪些使用者可以存取特定管道
+ 保護生產管道以免錯誤編輯
+ 允許稽核員具備管道的唯讀存取，但防止他們進行變更

AWS Data Pipeline 與 AWS Identity and Access Management (IAM) 整合，提供廣泛的功能：
+ 在 中建立使用者和群組 AWS 帳戶。
+ 在 中的使用者之間輕鬆共用您的 AWS 資源 AWS 帳戶。
+ 為每個使用者指派唯一的安全登入資料。
+ 控制每個使用者對 服務和資源的存取。
+ 取得您 中所有使用者的單一帳單 AWS 帳戶。

透過搭配 使用 IAM AWS Data Pipeline，您可以控制組織中的使用者是否可以使用特定 API 動作來執行任務，以及是否可以使用特定 AWS 資源。您可以根據管道標籤和工作者群組使用 IAM 政策，與其他使用者共用您的管道，並控制他們擁有的存取層級。

**Topics**
+ [的 IAM 政策 AWS Data Pipeline](dp-iam-resourcebased-access.md)
+ [的範例政策 AWS Data Pipeline](dp-example-tag-policies.md)
+ [的 IAM 角色 AWS Data Pipeline](dp-iam-roles.md)

# 的 IAM 政策 AWS Data Pipeline
<a name="dp-iam-resourcebased-access"></a>

根據預設，IAM 實體沒有建立或修改 AWS 資源的許可。若要允許 IAM 實體建立或修改資源並執行任務，您必須建立 IAM 政策，授予 IAM 實體使用所需特定資源和 API 動作的許可，然後將這些政策連接到需要這些許可的 IAM 實體。

將政策連接到使用者或使用者群組時，政策會允許或拒絕使用者在特定資源上執行特定任務的許可。如需 IAM 政策的一般資訊，請參閱《*IAM 使用者指南》*中的[許可和政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/PermissionsAndPolicies.html)。如需管理和建立自訂 IAM 政策的詳細資訊，請參閱[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

**Topics**
+ [政策語法](#dp-policy-syntax)
+ [使用標籤控制管道的存取](#dp-control-access-tags)
+ [使用工作者群組控制管道的存取](#dp-control-access-workergroup)

## 政策語法
<a name="dp-policy-syntax"></a>

IAM 政策為包含一或多個陳述式的 JSON 文件。每個陳述式的結構如下所示：

```
{
  "Statement":[{
    "Effect":"effect",
    "Action":"action",
    "Resource":"*",
    "Condition":{
      "condition":{
        "key":"value"
        }
      }
    }
  ]
}
```

政策陳述式是由下列元素組成：
+ **Effect** (效果)：*效果* 可以是 `Allow` 或 `Deny`。根據預設，IAM 實體沒有使用資源和 API 動作的許可，因此所有請求都會遭到拒絕。明確允許覆寫預設值。明確拒絕覆寫任何允許。
+ **Action** (動作)：*動作* 是您授予或拒絕許可的特定 API 動作。如需 的動作清單 AWS Data Pipeline，請參閱 *AWS Data Pipeline API 參考*中的[動作](https://docs.aws.amazon.com/datapipeline/latest/APIReference/API_Operations.html)。
+ **Resource** (資源)：受動作影響的資源。這裡唯一有效的值為 `"*"`。
+ **Condition** (條件)：條件為選擇性。您可以用以控制何時政策開始生效。

  AWS Data Pipeline 實作全 AWS 內容金鑰 （請參閱[條件的可用金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#AvailableKeys))，以及下列服務特定的金鑰。
  + `datapipeline:PipelineCreator` — 將存取權授予建立管道的使用者。如需範例，請參閱[將完整存取授予管道擁有者](dp-example-tag-policies.md#ex3)。
  + `datapipeline:Tag` — 根據管道標記授予存取權。如需詳細資訊，請參閱[使用標籤控制管道的存取](#dp-control-access-tags)。
  + `datapipeline:workerGroup` — 根據工作者群組的名稱授予存取權。如需詳細資訊，請參閱[使用工作者群組控制管道的存取](#dp-control-access-workergroup)。

## 使用標籤控制管道的存取
<a name="dp-control-access-tags"></a>

您可以建立參考管道標籤的 IAM 政策。這可讓您使用管道標記來執行下列動作：
+ 授予管道的唯讀存取
+ 授予管道的讀取/寫入存取
+ 防止存取管道

例如，假設管理員有兩個管道環境 (生產和開發)，而且每個環境有一個 IAM 群組。對於生產環境中的管道，管理員會將讀取/寫入存取權授予生產 IAM 群組中的使用者，但會將唯讀存取權授予開發人員 IAM 群組中的使用者。對於開發環境中的管道，管理員會授予生產和開發人員 IAM 群組的讀取/寫入存取權。

為了達成此案例，管理員會使用「環境=生產」標籤來標記生產管道，並將下列政策連接至開發人員 IAM 群組。第一個陳述式會授予所有管道的唯讀存取。第二個陳述式會授予沒有 "environment=production" 標籤之管道的讀取/寫入存取。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "datapipeline:Describe*",
        "datapipeline:ListPipelines",
        "datapipeline:GetPipelineDefinition",
        "datapipeline:QueryObjects"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "datapipeline:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {"datapipeline:Tag/environment": "production"}
      }
    }
  ]
}
```

------

此外，管理員會將下列政策連接至生產 IAM 群組。此陳述式會授予所有管道的完整存取。

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

****  

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

------

如需更多範例，請參閱[根據標籤將唯讀存取授予使用者](dp-example-tag-policies.md#ex1)和[根據標籤將完整存取授予使用者](dp-example-tag-policies.md#ex2)。

## 使用工作者群組控制管道的存取
<a name="dp-control-access-workergroup"></a>

您可以建立建立參考工作者群組名稱的 IAM 政策。

例如，假設管理員有兩個管道環境 (生產和開發)，而且每個環境有一個 IAM 群組。管理員有三個資料庫伺服器，並將其任務執行器分別設定用於生產、進入生產階段前和開發環境。管理員想要確保生產 IAM 群組中的使用者可以建立將任務推送至生產資源的管道，而且開發 IAM 群組中的使用者可以建立將任務推送至生產前和開發人員資源的管道。

為了達成此案例，管理員會使用生產登入資料在生產資源上安裝任務執行器，並將 `workerGroup` 設為 "prodresource"。此外，管理員會使用開發登入資料在開發資源上安裝任務執行器，並將 `workerGroup` 設為 "pre-production" 和 "development"。管理員會將下列政策連接至開發人員 IAM 群組，以封鎖對 "prodresource" 資源的存取。第一個陳述式會授予所有管道的唯讀存取。第二個陳述式會在工作者群組名稱含有 "dev" 或 "pre-prod" 前綴時，授予管道的讀取/寫入存取。

此外，管理員會將下列政策連接至生產 IAM 群組，以授予對「資源」資源的存取權。第一個陳述式會授予所有管道的唯讀存取。第二個陳述式會在工作者群組名稱含有 "prod" 前綴時，授予讀取/寫入存取。

# 的範例政策 AWS Data Pipeline
<a name="dp-example-tag-policies"></a>

下列範例示範如何將管道的完整存取或有限存取授予使用者。

**Topics**
+ [範例 1：根據標籤將唯讀存取授予使用者](#ex1)
+ [範例 2：根據標籤將完整存取授予使用者](#ex2)
+ [範例 3：將完整存取授予管道擁有者](#ex3)
+ [範例 4：授予使用者對 AWS Data Pipeline 主控台的存取權](#example4-grant-users-access-to-console)

## 範例 1：根據標籤將唯讀存取授予使用者
<a name="ex1"></a>

下列政策允許使用者使用唯讀 AWS Data Pipeline API 動作，但僅限於標籤為 "environment=production" 的管道。

ListPipelines API 動作不支援以標籤為基礎的授權。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "datapipeline:Describe*",
        "datapipeline:GetPipelineDefinition",
        "datapipeline:ValidatePipelineDefinition",
        "datapipeline:QueryObjects"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "datapipeline:Tag/environment": "production"
        }
      }
    }
  ]
}
```

------

## 範例 2：根據標籤將完整存取授予使用者
<a name="ex2"></a>

下列政策允許使用者使用 ListPipelines 以外的所有 AWS Data Pipeline API 動作，但僅限於標籤為 "environment=test" 的管道。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "datapipeline:*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "datapipeline:Tag/environment": "test"
        }
      }
    }
  ]
}
```

------

## 範例 3：將完整存取授予管道擁有者
<a name="ex3"></a>

下列政策允許使用者使用所有 AWS Data Pipeline API 動作，但只能搭配自己的管道。

## 範例 4：授予使用者對 AWS Data Pipeline 主控台的存取權
<a name="example4-grant-users-access-to-console"></a>

下列政策可讓使用者使用 AWS Data Pipeline 主控台來建立及管理管道。

此政策包含與 `roleARN` AWS Data Pipeline 需求綁定之特定資源的`PassRole`許可動作。如需以身分為基礎 (IAM) 的 `PassRole` 許可詳細資訊，請參閱部落格文章：[使用 IAM 角色授予啟動 EC2 執行個體的許可 (PassRole 許可)](https://aws.amazon.com/blogs/security/granting-permission-to-launch-ec2-instances-with-iam-roles-passrole-permission/)。

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [{
			"Action": [
				"cloudwatch:*",
				"datapipeline:*",
				"dynamodb:DescribeTable",
				"elasticmapreduce:AddJobFlowSteps",
				"elasticmapreduce:ListInstance*",
				"iam:AddRoleToInstanceProfile",
				"iam:CreateInstanceProfile",
				"iam:GetInstanceProfile",
				"iam:GetRole",
				"iam:GetRolePolicy",
				"iam:ListInstanceProfiles",
				"iam:ListInstanceProfilesForRole",
				"iam:ListRoles",
				"rds:DescribeDBInstances",
				"rds:DescribeDBSecurityGroups",
				"redshift:DescribeClusters",
				"redshift:DescribeClusterSecurityGroups",
				"s3:List*",
				"sns:ListTopics"
			],
			"Effect": "Allow",
			"Resource": [
				"*"
			]
		},
		{
			"Action": "iam:PassRole",
			"Effect": "Allow",
			"Resource": [
				"arn:aws:iam::*:role/DataPipelineDefaultResourceRole",
				"arn:aws:iam::*:role/DataPipelineDefaultRole"
			]
		}
	]
}
```

------

# 的 IAM 角色 AWS Data Pipeline
<a name="dp-iam-roles"></a>

AWS Data Pipeline 使用 AWS Identity and Access Management 角色。連接至 IAM 角色的許可政策會決定 AWS Data Pipeline 您的應用程式可執行哪些動作，以及他們可以存取哪些 AWS 資源。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

AWS Data Pipeline 需要兩個 IAM 角色：
+ **管道角色**控制對 AWS 資源的 AWS Data Pipeline 存取。在管道物件定義中， `role` 欄位會指定此角色。
+ **EC2 執行個體角色**控制在 EC2 執行個體上執行的應用程式必須存取 AWS 資源的存取權，包括 Amazon EMR 叢集中的 EC2 執行個體。在管道物件定義中， `resourceRole` 欄位會指定此角色。

**重要**  
如果您在 2022 年 10 月 3 日之前使用具有預設角色的 AWS Data Pipeline 主控台建立管道， `DataPipelineDefaultRole`會為您 AWS Data Pipeline 建立 ，並將 `AWSDataPipelineRole`受管政策連接至角色。自 2022 年 10 月 3 日起， `AWSDataPipelineRole`受管政策已棄用，且必須使用 主控台為管道指定管道角色。  
我們建議您檢閱現有的管道，並判斷 `DataPipelineDefaultRole` 是否與管道相關聯，以及 是否`AWSDataPipelineRole`連接到該角色。若是如此，請檢閱此政策允許的存取權，以確保其符合您的安全需求。視需要新增、更新或取代連接到此角色的政策和政策陳述式。或者，您可以更新管道，以使用您透過不同許可政策建立的角色。

## AWS Data Pipeline 角色的範例許可政策
<a name="dp-role-permissions-policy-examples"></a>

每個角色都連接一或多個許可政策，以決定角色可存取 AWS 的資源和角色可執行的動作。本主題提供管道角色的範例許可政策。它也提供 的內容`AmazonEC2RoleforDataPipelineRole`，這是預設 EC2 執行個體角色 的受管政策`DataPipelineDefaultResourceRole`。

### 管道角色許可政策範例
<a name="dp-role-example-policy"></a>

以下範例政策的範圍是允許 AWS Data Pipeline 需要 以 Amazon EC2 和 Amazon EMR 資源執行管道的基本函數。它也提供許可來存取許多管道所需的其他 AWS 資源，例如 Amazon Simple Storage Service 和 Amazon Simple Notification Service。如果管道中定義的物件不需要 AWS 服務的資源，強烈建議您移除存取該服務的許可。例如，如果您的管道未定義 [DynamoDBDataNode](dp-object-dynamodbdatanode.md)或使用 [SnsAlarm](dp-object-snsalarm.md)動作，我們建議您移除這些動作的允許陳述式。
+ 將 取代`111122223333`為 AWS 您的帳戶 ID。
+ `NameOfDataPipelineRole` 將 取代為管道角色的名稱 （此政策所連接的角色）。
+ `NameOfDataPipelineResourceRole` 將 取代為 EC2 執行個體角色的名稱。
+ `us-west-1` 將 取代為適合您應用程式的 區域。

### EC2 執行個體角色的預設受管政策
<a name="dp-resource-role-example-policy"></a>

的內容`AmazonEC2RoleforDataPipelineRole`如下所示。這是連接到 的預設資源角色的 受管政策 AWS Data Pipeline`DataPipelineDefaultResourceRole`。當您定義管道的資源角色時，建議您從此許可政策開始，然後移除非必要的 AWS 服務動作許可。

政策第 3 版隨即顯示，這是撰寫本文時的最新版本。使用 IAM 主控台檢視政策的最新版本。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
      "Effect": "Allow",
      "Action": [
        "cloudwatch:*",
        "datapipeline:*",
        "dynamodb:*",
        "ec2:Describe*",
        "elasticmapreduce:AddJobFlowSteps",
        "elasticmapreduce:Describe*",
        "elasticmapreduce:ListInstance*",
        "elasticmapreduce:ModifyInstanceGroups",
        "rds:Describe*",
        "redshift:DescribeClusters",
        "redshift:DescribeClusterSecurityGroups",
        "s3:*",
        "sdb:*",
        "sns:*",
        "sqs:*"
      ],
      "Resource": ["*"]
    }]
}
```

------

## 為 建立 IAM 角色 AWS Data Pipeline 並編輯角色許可
<a name="dp-iam-roles-new"></a>

使用下列程序建立 AWS Data Pipeline 使用 IAM 主控台的角色。程序包含兩個步驟。首先，您可以建立連接到角色的許可政策。接著，建立角色並連接政策。建立角色之後，您可以透過連接和分離許可政策來變更角色的許可。

**注意**  
當您 AWS Data Pipeline 使用主控台建立 角色時，IAM 會建立並連接角色所需的適當信任政策。

**建立許可政策以搭配 的角色使用 AWS Data Pipeline**

1. 在 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 中開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Policies (政策)**，然後選擇 **Create policy (建立政策)**。

1. <a name="step3"></a>選擇 **JSON** 標籤。

1. 如果您要建立管道角色，請在 中複製並貼上政策範例的內容[管道角色許可政策範例](#dp-role-example-policy)，並根據您的安全需求進行編輯。或者，如果您要建立自訂 EC2 執行個體角色，請對 中的範例執行相同的 [EC2 執行個體角色的預設受管政策](#dp-resource-role-example-policy)。

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

1. 輸入政策的名稱，例如 `MyDataPipelineRolePolicy`- 和選用的**描述**，然後選擇**建立政策**。

1. 請記下政策的名稱。建立角色時需要它。

**為 建立 IAM 角色 AWS Data Pipeline**

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 在**選擇使用案例**下，選擇**資料管道**。

1. 在**選取您的使用案例**下，執行下列其中一項操作：
   + 選擇 以`Data Pipeline`建立管道角色。
   + 選擇 `EC2 Role for Data Pipeline` 以建立資源角色。

1. 選擇**下一步：許可**。

1. 如果 AWS Data Pipeline 列出 的預設政策，請繼續以下步驟來建立角色，然後根據下一個程序中的指示進行編輯。否則，請輸入您在上述程序中建立的政策名稱，然後從清單中選擇。

1. 選擇**下一步：標籤**，輸入要新增至角色的任何標籤，然後選擇**下一步：檢閱**。

1. 輸入角色的名稱，例如`MyDataPipelineRole`，以及選用的**描述**，然後選擇**建立角色**。

**連接或分離 IAM 角色的許可政策 AWS Data Pipeline**

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**角色**

1. 在搜尋方塊中，開始輸入您要編輯的角色名稱，例如 **DataPipelineDefaultRole** 或 **MyDataPipelineRole**，然後從清單中選擇**角色名稱**。

1. 在**許可**索引標籤上，執行下列動作：
   + 若要分離許可政策，請在**許可政策**下，選擇政策項目最右側的移除按鈕。在出現確認提示時，選擇**分離**。
   + 若要連接您先前建立的政策，請選擇**連接政策**。在搜尋方塊中，開始輸入您要編輯的政策名稱，從清單中選擇，然後選擇**連接政策**。

## 變更現有管道的角色
<a name="dp-iam-change-console"></a>

如果您想要將不同的管道角色或資源角色指派給管道，您可以在 AWS Data Pipeline 主控台中使用架構師編輯器。

**使用主控台編輯指派給管道的角色**

1. 在 https：//[https://console.aws.amazon.com/datapipeline/](https://console.aws.amazon.com/datapipeline/) 開啟 AWS Data Pipeline 主控台。

1. 從清單中選擇管道，然後選擇**動作**、**編輯**。

1. 在架構師編輯器的右窗格中，選擇**其他**。

1. 從**資源角色**和**角色**清單中，選擇要指派 AWS Data Pipeline 的角色，然後選擇**儲存**。