

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

# 的身分和存取管理 AWS CodeDeploy
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) 是一種 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可控制誰可以*進行身分驗證* （登入） 和*授權* （具有許可），以使用 CodeDeploy 資源。IAM 是您可以免費使用 AWS 服務 的 。

**Topics**
+ [目標對象](#security_iam_audience)
+ [使用身分驗證](#security_iam_authentication)
+ [使用政策管理存取權](#security_iam_access-manage)
+ [AWS CodeDeploy 如何使用 IAM](security_iam_service-with-iam.md)
+ [AWS CodeDeploy 的受管 （預先定義） 政策](managed-policies.md)
+ [AWS 受管政策的 CodeDeploy 更新](managed-policies-updates.md)
+ [AWS CodeDeploy 身分型政策範例](security_iam_id-based-policy-examples.md)
+ [對 AWS CodeDeploy 身分和存取進行故障診斷](security_iam_troubleshoot.md)
+ [CodeDeploy 許可參考](auth-and-access-control-permissions-reference.md)
+ [預防跨服務混淆代理人](security_confused_deputy.md)

## 目標對象
<a name="security_iam_audience"></a>

使用方式 AWS Identity and Access Management (IAM) 會根據您的角色而有所不同：
+ **服務使用者** — 若無法存取某些功能，請向管理員申請所需許可 (請參閱 [對 AWS CodeDeploy 身分和存取進行故障診斷](security_iam_troubleshoot.md))
+ **服務管理員** — 負責設定使用者存取權並提交相關許可請求 (請參閱 [AWS CodeDeploy 如何使用 IAM](security_iam_service-with-iam.md))
+ **IAM 管理員** — 撰寫政策以管理存取控制 (請參閱 [AWS CodeDeploy 身分型政策範例](security_iam_id-based-policy-examples.md))

## 使用身分驗證
<a name="security_iam_authentication"></a>

身分驗證是您 AWS 使用身分憑證登入 的方式。您必須以 AWS 帳戶根使用者、IAM 使用者或擔任 IAM 角色身分進行身分驗證。

您可以使用身分來源的登入資料，例如 AWS IAM Identity Center (IAM Identity Center)、單一登入身分驗證或 Google/Facebook 登入資料，以聯合身分的形式登入。如需有關登入的詳細資訊，請參閱《AWS 登入 使用者指南》**中的[如何登入您的 AWS 帳戶](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

對於程式設計存取， AWS 提供 SDK 和 CLI 以密碼編譯方式簽署請求。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [API 請求的AWS 第 4 版簽署程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 帳戶 根使用者
<a name="security_iam_authentication-rootuser"></a>

 當您建立 時 AWS 帳戶，您會從一個名為 AWS 帳戶 *theroot 使用者的*登入身分開始，該身分具有對所有 AWS 服務 和 資源的完整存取權。強烈建議不要使用根使用者來執行日常任務。有關需要根使用者憑證的任務，請參閱《IAM 使用者指南》**中的[需要根使用者憑證的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 使用者和群組
<a name="security_iam_authentication-iamuser"></a>

*IAM 使用者*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是一種身分具備單人或應用程式的特定許可權。建議以臨時憑證取代具備長期憑證的 IAM 使用者。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) 。

[IAM 群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)**會指定 IAM 使用者集合，使管理大量使用者的許可權更加輕鬆。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 使用者的使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*IAM 角色*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)的身分具有特定許可權，其可以提供臨時憑證。您可以透過[從使用者切換到 IAM 角色 （主控台） ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或呼叫 AWS CLI 或 AWS API 操作來擔任角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取權與跨服務存取，以及在 Amazon EC2 執行的應用程式。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用政策管理存取權
<a name="security_iam_access-manage"></a>

您可以透過 AWS 建立政策並將其連接到身分或資源來控制 AWS 中的存取。政策定義與身分或資源相關聯的許可。當委託人提出請求時 AWS ， 會評估這些政策。大多數政策會以 JSON 文件 AWS 形式存放在 中。如需進一步了解 JSON 政策文件，請參閱《*IAM 使用者指南*》中的 [JSON 政策概觀](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理員會使用政策，透過定義哪些**主體**可在哪些**條件**下對哪些**資源**執行**動作**，以指定可存取的範圍。

預設情況下，使用者和角色沒有許可。IAM 管理員會建立 IAM 政策並將其新增至角色，供使用者後續擔任。IAM 政策定義動作的許可，無論採用何種方式執行。

### 身分型政策
<a name="security_iam_access-manage-id-based-policies"></a>

身分型政策是附加至身分 (使用者、使用者群組或角色) 的 JSON 許可政策文件。這類政策控制身分可對哪些資源執行哪些動作，以及適用的條件。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

身分型政策可分為*內嵌政策* (直接內嵌於單一身分) 與*受管政策* (可附加至多個身分的獨立政策)。如需了解如何在受管政策及內嵌政策之間做選擇，請參閱《IAM 使用者指南》**中的[在受管政策與內嵌政策之間選擇](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 其他政策類型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支援其他政策類型，可設定更多常見政策類型授予的最大許可：
+ **許可界限** — 設定身分型政策可授與 IAM 實體的最大許可。如需詳細資訊，請參閱《 IAM 使用者指南》**中的 [IAM 實體許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服務控制政策 (SCP)** — 為 AWS Organizations中的組織或組織單位指定最大許可。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **資源控制政策 (RCP)** — 設定您帳戶中資源可用許可的上限。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[資源控制政策 (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **工作階段政策** — 在以程式設計方式為角色或聯合身分使用者建立臨時工作階段時，以參數形式傳遞的進階政策。如需詳細資訊，請參《*IAM 使用者指南*》中的[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多種政策類型
<a name="security_iam_access-manage-multiple-policies"></a>

當多種類型的政策適用於請求時，產生的許可會更複雜而無法理解。若要了解如何 AWS 在涉及多種政策類型時決定是否允許請求，請參閱《*IAM 使用者指南*》中的[政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# AWS CodeDeploy 如何使用 IAM
<a name="security_iam_service-with-iam"></a>

使用 IAM 管理 CodeDeploy 的存取權之前，您應該了解哪些 IAM 功能可與 CodeDeploy 搭配使用。如需詳細資訊，請參閱《[AWS IAM 使用者指南》中的使用 IAM 的 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。 **

**Topics**
+ [CodeDeploy 身分型政策](#security_iam_service-with-iam-id-based-policies)
+ [CodeDeploy 資源型政策](#security_iam_service-with-iam-resource-based-policies)
+ [以 CodeDeploy 標籤為基礎的授權](#security_iam_service-with-iam-tags)
+ [CodeDeploy IAM 角色](#security_iam_service-with-iam-roles)

## CodeDeploy 身分型政策
<a name="security_iam_service-with-iam-id-based-policies"></a>

使用 IAM 身分型政策，您可以指定允許或拒絕的動作和資源，以及在何種條件下允許或拒絕動作。CodeDeploy 支援動作、資源和條件索引鍵。如需有關您在 JSON 政策中使用的元素的資訊，請參閱《[IAM 使用者指南》中的 IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。 **

### 動作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

JSON 政策的 `Action` 元素描述您可以用來允許或拒絕政策中存取的動作。政策會使用動作來授予執行相關聯動作的許可。

CodeDeploy 中的政策動作在動作之前使用 `codedeploy:`字首。例如，`codedeploy:GetApplication` 許可授予使用者執行 `GetApplication` 操作的許可。政策陳述式必須包含 `Action` 或 `NotAction` 元素。CodeDeploy 會定義自己的一組動作，描述您可以使用此服務執行的任務。

若要在單一陳述式中指定多個動作，請用逗號分隔，如下所示：

```
"Action": [
      "codedeploy:action1",
      "codedeploy:action2"
```

您也可以使用萬用字元 (\$1) 來指定多個動作。例如，包含以下動作以指定開頭是文字 `Describe` 的所有動作：

```
"Action": "ec2:Describe*"
```



如需 CodeDeploy 動作的清單，請參閱《*IAM 使用者指南*》中的 [定義的動作 AWS CodeDeploy](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodedeploy.html#awscodedeploy-actions-as-permissions)。

如需列出所有 CodeDeploy API 動作及其適用的資源的資料表，請參閱 [CodeDeploy 許可參考](auth-and-access-control-permissions-reference.md)。

### Resources
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Resource` JSON 政策元素可指定要套用動作的物件。最佳實務是使用其 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 來指定資源。若動作不支援資源層級許可，使用萬用字元 (\$1) 表示該陳述式適用於所有資源。

```
"Resource": "*"
```



例如，您可以在您的陳述式中使用它的 ARN 指出部署群組(*myDeploymentGroup*)，如下所示：

```
"Resource": "arn:aws:codedeploy:us-west-2:123456789012:deploymentgroup:myApplication/myDeploymentGroup"
```

您也可以使用萬用字元 (\$1) 指定屬於帳戶的所有部署群組，如下所示：

```
"Resource": "arn:aws:codedeploy:us-west-2:123456789012:deploymentgroup:*"
```

若要指定所有資源，或如果 API 動作不支援 ARN，請在 `Resource` 元素中使用萬用字元 (\$1)，如下所示：

```
"Resource": "*"
```

有些 CodeDeploy API 動作接受多個資源 （例如 `BatchGetDeploymentGroups`)。若要在單一陳述式中指定多個資源，請用逗號分隔他們的 ARN，如下所示：

```
"Resource": ["arn1", "arn2"]
```

CodeDeploy 提供一組操作，以使用 CodeDeploy 資源。如需可用操作的清單，請參閱 [CodeDeploy 許可參考](auth-and-access-control-permissions-reference.md)。

如需 CodeDeploy 資源類型及其 ARNs 的清單，請參閱《*IAM 使用者指南*》中的 [定義的資源 AWS CodeDeploy](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodedeploy.html)。如需您可以在其中指定每個資源 ARN 之動作的相關資訊，請參閱[動作定義者 AWS CodeDeploy](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodedeploy.html#awscodedeploy-actions-as-permissions)。

#### CodeDeploy 資源和操作
<a name="arn-formats"></a>

在 CodeDeploy 中，主要資源是部署群組。在政策中，您使用 Amazon Resource Name (ARN) 來識別要套用政策的資源。CodeDeploy 支援可與部署群組搭配使用的其他資源，包括應用程式、部署組態和執行個體。這些資源稱為「子資源」。這些資源和子資源各與唯一的 ARN 相關聯。如需詳細資訊，請參閱 中的 [Amazon 資源名稱 (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)*Amazon Web Services 一般參考*。


| Resource Type (資源類型) | ARN 格式 | 
| --- | --- | 
| 部署群組 |  `arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name`  | 
| 應用程式 |  `arn:aws:codedeploy:region:account-id:application:application-name`  | 
| Deployment configuration (部署組態) |  `arn:aws:codedeploy:region:account-id:deploymentconfig:deployment-configuration-name`   | 
| 執行個體 |  `arn:aws:codedeploy:region:account-id:instance/instance-ID`  | 
|  所有 CodeDeploy 資源  |  `arn:aws:codedeploy:*`  | 
|  指定區域中指定帳戶擁有的所有 CodeDeploy 資源  |  `arn:aws:codedeploy:region:account-id:*`  | 

**注意**  
中的大多數服務 AWS 會將冒號 (：) 或正斜線 (/) 視為 ARNs中的相同字元。不過，CodeDeploy 在資源模式和規則中使用完全相符的項目。在建立事件模式時，請務必使用正確的 ARN 字元，使這些字元符合資源中的 ARN 語法。

### 條件索引鍵
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

CodeDeploy 不提供任何服務特定的條件金鑰，但支援使用某些全域條件金鑰。如需詳細資訊，請參閱《IAM 使用者指南》**中的[AWS 全域條件內容金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。



### 範例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



若要檢視 CodeDeploy 身分型政策的範例，請參閱 [AWS CodeDeploy 身分型政策範例](security_iam_id-based-policy-examples.md)。

## CodeDeploy 資源型政策
<a name="security_iam_service-with-iam-resource-based-policies"></a>

CodeDeploy 不支援以資源為基礎的政策。若要檢視詳細資源型政策頁面的範例，請參閱[使用資源型政策 AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)。

## 以 CodeDeploy 標籤為基礎的授權
<a name="security_iam_service-with-iam-tags"></a>

CodeDeploy 不支援標記資源或根據標籤控制存取。

## CodeDeploy IAM 角色
<a name="security_iam_service-with-iam-roles"></a>

[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是您 AWS 帳戶中具有特定許可的實體。

### 搭配 CodeDeploy 使用臨時登入資料
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

您可以搭配聯合使用暫時憑證、擔任 IAM 角色，或是擔任跨帳戶角色。您可以透過呼叫 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 或 [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) 等 AWS STS API 操作來取得臨時安全登入資料。

CodeDeploy 支援使用臨時登入資料。

### 服務連結角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

CodeDeploy 不支援服務連結角色。

### 服務角色
<a name="security_iam_service-with-iam-roles-service"></a>

此功能可讓服務代表您擔任[服務角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)。此角色可讓服務存取其他服務中的資源，以代表您完成動作。服務角色會出現在您的帳戶中 AWS ，並由該帳戶擁有。這表示使用者可以變更此角色的許可。不過，這樣可能會破壞此服務的功能。

CodeDeploy 支援服務角色。

### 在 CodeDeploy 中選擇 IAM 角色
<a name="security_iam_service-with-iam-roles-choose"></a>

當您在 CodeDeploy 中建立部署群組資源時，您必須選擇角色，以允許 CodeDeploy 代表您存取 Amazon EC2。如果您先前已建立服務角色或服務連結角色，CodeDeploy 會為您提供可供選擇的角色清單。請務必選擇允許存取啟動和停止 EC2 執行個體的角色。

# AWS CodeDeploy 的受管 （預先定義） 政策
<a name="managed-policies"></a>

AWS 提供由 建立和管理的獨立 IAM 政策，以解決許多常見的使用案例 AWS。這些 AWS受管政策會授予常見使用案例的許可，因此您可以避免調查需要哪些許可。如需詳細資訊，請參閱 *IAM 使用者指南*中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

**Topics**
+ [CodeDeploy 的 AWS 受管政策清單](#managed-policies-list)
+ [CodeDeploy 受管政策和通知](#notifications-permissions)

## CodeDeploy 的 AWS 受管政策清單
<a name="managed-policies-list"></a>

下列 AWS 受管政策是 CodeDeploy 特有的，您可以連接到您帳戶中的使用者：
+ `AWSCodeDeployFullAccess`：授予 CodeDeploy 的完整存取權。

   
**注意**  
AWSCodeDeployFullAccess 不會為部署應用程式所需的其他服務中的操作提供許可，例如 Amazon EC2 和 Amazon S3，僅適用於 CodeDeploy 特定的操作。
+ `AWSCodeDeployDeployerAccess`：授予註冊和部署修訂的許可。

   
+ `AWSCodeDeployReadOnlyAccess`：授予 CodeDeploy 的唯讀存取權。

   
+ <a name="ACD-policy"></a>`AWSCodeDeployRole`：允許 CodeDeploy：
  + 讀取執行個體上的標籤，或依 Amazon EC2 Auto Scaling 群組名稱識別 Amazon EC2 執行個體
  + 讀取、建立、更新和刪除 Amazon EC2 Auto Scaling 群組、生命週期關聯、擴展政策和暖集區功能
  + 發佈資訊至 Amazon SNS 主題
  + 擷取 Amazon CloudWatch 警示的相關資訊
  + 讀取和更新 Elastic Load Balancing 服務中的資源

  政策包含下列程式碼：

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "autoscaling:CompleteLifecycleAction",
          "autoscaling:DeleteLifecycleHook",
          "autoscaling:DescribeAutoScalingGroups",
          "autoscaling:DescribeLifecycleHooks",
          "autoscaling:PutLifecycleHook",
          "autoscaling:RecordLifecycleActionHeartbeat",
          "autoscaling:CreateAutoScalingGroup",
          "autoscaling:CreateOrUpdateTags",
          "autoscaling:UpdateAutoScalingGroup",
          "autoscaling:EnableMetricsCollection",
          "autoscaling:DescribePolicies",
          "autoscaling:DescribeScheduledActions",
          "autoscaling:DescribeNotificationConfigurations",
          "autoscaling:SuspendProcesses",
          "autoscaling:ResumeProcesses",
          "autoscaling:AttachLoadBalancers",
          "autoscaling:AttachLoadBalancerTargetGroups",
          "autoscaling:PutScalingPolicy",
          "autoscaling:PutScheduledUpdateGroupAction",
          "autoscaling:PutNotificationConfiguration",
          "autoscaling:DescribeScalingActivities",
          "autoscaling:DeleteAutoScalingGroup",
          "autoscaling:PutWarmPool",
          "ec2:DescribeInstances",
          "ec2:DescribeInstanceStatus",
          "ec2:TerminateInstances",
          "tag:GetResources",
          "sns:Publish",
          "cloudwatch:DescribeAlarms",
          "cloudwatch:PutMetricAlarm",
          "elasticloadbalancing:DescribeLoadBalancers",
          "elasticloadbalancing:DescribeLoadBalancerAttributes",
          "elasticloadbalancing:DescribeInstanceHealth",
          "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
          "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
          "elasticloadbalancing:DescribeTargetGroups",
          "elasticloadbalancing:DescribeTargetGroupAttributes",
          "elasticloadbalancing:DescribeTargetHealth",
          "elasticloadbalancing:RegisterTargets",
          "elasticloadbalancing:DeregisterTargets"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

------

   
+ `AWSCodeDeployRoleForLambda`：授予 CodeDeploy 存取 AWS Lambda 和部署所需的任何其他資源的許可。

   
+  `AWSCodeDeployRoleForECS`：授予 CodeDeploy 存取 Amazon ECS 和部署所需的任何其他資源的許可。

   
+  `AWSCodeDeployRoleForECSLimited`：授予 CodeDeploy 存取 Amazon ECS 和部署所需的任何其他資源的許可，但以下情況除外：
  +  在 AppSpec 檔案的 `hooks`區段中，只能使用名稱開頭為 的 Lambda `CodeDeployHook_` 函數。如需詳細資訊，請參閱[Amazon ECS 部署的 AppSpec 'hooks' 區段](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs)。
  +  S3 儲存貯體的存取權限制為具有註冊標籤 `UseWithCodeDeploy` 且值為 `true` 的 S3 儲存貯體。如需詳細資訊，請參閱[物件標記](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html)。
+ <a name="EC2-policy"></a>`AmazonEC2RoleforAWSCodeDeployLimited`：授予 CodeDeploy 許可，以取得和列出 CodeDeploy Amazon S3 儲存貯體中的物件。政策包含下列程式碼：

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:GetObject",
                  "s3:GetObjectVersion",
                  "s3:ListBucket"
              ],
              "Resource": "arn:aws:s3:::*/CodeDeploy/*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "s3:GetObject",
                  "s3:GetObjectVersion"
              ],
              "Resource": "*",
              "Condition": {
                  "StringEquals": {
                      "s3:ExistingObjectTag/UseWithCodeDeploy": "true"
                  }
              }
          }
      ]
  }
  ```

------

部署程序某些層面的許可會授予其他兩個代表 CodeDeploy 的角色類型：
+ *IAM 執行個體描述*檔是您連接到 Amazon EC2 執行個體的 IAM 角色。此設定檔包含存取存放應用程式之 Amazon S3 儲存貯體或 GitHub 儲存庫所需的許可。如需詳細資訊，請參閱[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。
+ *服務角色*是一種 IAM 角色，可授予 AWS 服務的許可，使其可以存取 AWS 資源。您連接到服務角色的政策會決定服務可存取哪些 AWS 資源，以及該服務可以對這些資源執行的動作。對於 CodeDeploy，服務角色用於下列項目：
  + 讀取套用至執行個體的標籤或與執行個體相關聯的 Amazon EC2 Auto Scaling 群組名稱。這可讓 CodeDeploy 識別可部署應用程式的執行個體。
  + 在執行個體、Amazon EC2 Auto Scaling 群組和 Elastic Load Balancing 負載平衡器上執行操作。
  + 將資訊發佈至 Amazon SNS 主題，以便在發生指定的部署或執行個體事件時傳送通知。
  + 擷取 CloudWatch 警示的相關資訊，以設定部署的警示監控。

  如需詳細資訊，請參閱[步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)。

您也可以建立自訂 IAM 政策，以授予 CodeDeploy 動作和資源的許可。您可以將這些自訂政策連接至 IAM 角色，然後將角色指派給需要許可的使用者或群組。

## CodeDeploy 受管政策和通知
<a name="notifications-permissions"></a>

CodeDeploy 支援通知，讓使用者了解部署的重要變更。CodeDeploy 的受管政策包含通知功能的政策陳述式。如需詳細資訊，請參閱[什麼是通知？](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html)。

### 完整存取受管政策中通知的許可
<a name="notifications-fullaccess"></a>

`AWSCodeDeployFullAccess` 受管政策包含下列陳述式，允許對通知的完整存取權限。套用此受管政策的使用者也可以為通知建立和管理 Amazon SNS 主題、訂閱和取消訂閱使用者主題，以及列出要選擇做為通知規則目標的主題。

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codedeploy:*:*:application:*"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsSNSTopicCreateAccess",
        "Effect": "Allow",
        "Action": [
            "sns:CreateTopic",
            "sns:SetTopicAttributes"
        ],
        "Resource": "arn:aws:sns:*:*:codestar-notifications*"
    },
    {
      "Sid" : "CodeStarNotificationsChatbotAccess",
      "Effect" : "Allow",
      "Action" : [
        "chatbot:DescribeSlackChannelConfigurations"
      ],
      "Resource" : "*"
    },
    {
        "Sid": "SNSTopicListAccess",
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics"
        ],
        "Resource": "*"
    }
```

### 唯讀受管政策中通知的許可
<a name="notifications-readonly"></a>

`AWSCodeDeployReadOnlyAccess` 受管政策包含下列陳述式，允許對通知的唯讀存取權限。適用此受管政策的使用者可以檢視資源的通知，但無法建立、管理或訂閱通知。

```
   {
        "Sid": "CodeStarNotificationsPowerUserAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:DescribeNotificationRule"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codedeploy:*:*:application:*"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules"
        ],
        "Resource": "*"
    }
```

### 其他 受管政策中通知的許可
<a name="notifications-deployer"></a>

`AWSCodeDeployDeployerAccess` 受管政策包含下列陳述式，可讓使用者建立、更新、訂閱和檢視 資源的通知，但無法刪除它們。套用此受管政策的使用者也可以建立和管理通知的 Amazon SNS 主題。

此政策包含執行以下動作的許可：
+ `codestar-notifications:CreateNotificationRule` – 允許主體建立通知。
+ `codestar-notifications:DescribeNotificationRule` – 允許主體擷取通知的相關資訊。
+ `codestar-notifications:UpdateNotificationRule` – 允許主體更新通知。
+ `codestar-notifications:Subscribe` – 允許主體訂閱通知更新。
+ `codestar-notifications:Unsubscribe` – 允許主體取消訂閱通知更新。
+ `codestar-notifications:ListNotificationRules` – 允許主體擷取通知規則清單。
+ `codestar-notifications:ListTargets` – 允許主體擷取目標清單。
+ `codestar-notifications:ListTagsforResource` – 允許主體擷取標籤清單。
+ `codestar-notifications:ListEventTypes` – 允許主體擷取事件類型的清單。
+ `chatbot:DescribeSlackChannelConfiguration` – 允許主體擷取 Slack 頻道組態的相關資訊。
+ `sns:ListTopics` – 允許主體擷取通知的 Amazon SNS 主題清單。

```
   {
      "Sid" : "CodeStarNotificationsReadWriteAccess",
      "Effect" : "Allow",
      "Action" : [
        "codestar-notifications:CreateNotificationRule",
        "codestar-notifications:DescribeNotificationRule",
        "codestar-notifications:UpdateNotificationRule",
        "codestar-notifications:Subscribe",
        "codestar-notifications:Unsubscribe"
      ],
      "Resource" : "*",
      "Condition" : {
        "ArnLike" : {
          "codestar-notifications:NotificationsForResource" : "arn:aws:codedeploy:*:*:application:*"
        }
      }
    },
    {
      "Sid" : "CodeStarNotificationsListAccess",
      "Effect" : "Allow",
      "Action" : [
        "codestar-notifications:ListNotificationRules",
        "codestar-notifications:ListTargets",
        "codestar-notifications:ListTagsforResource",
        "codestar-notifications:ListEventTypes"
      ],
      "Resource" : "*"
    },
    {
      "Sid" : "CodeStarNotificationsChatbotAccess",
      "Effect" : "Allow",
      "Action" : [
        "chatbot:DescribeSlackChannelConfigurations"
      ],
      "Resource" : "*"
    },
    {
      "Sid" : "SNSTopicListAccess",
      "Effect" : "Allow",
      "Action" : [
        "sns:ListTopics"
      ],
      "Resource" : "*"
    }
```

如需詳細資訊，請參閱 [ AWS CodeStar Notifications 的身分和存取管理](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html)。

# AWS 受管政策的 CodeDeploy 更新
<a name="managed-policies-updates"></a>

檢視自此服務開始追蹤這些變更以來CodeDeploy AWS 受管政策更新的詳細資訊。如需此頁面變更的自動提醒，請訂閱 CodeDeploy 上的 RSS 摘要[文件歷史紀錄](document-history.md)。


| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  `AWSCodeDeployDeployerAccess` 受管政策 – 現有政策的更新  |  更新 `codestar-notifications:NotificationsForResource`動作以支援 IAM 政策驗證變更。原始資源`arn:aws:codedeploy:*`已更新為 `arn:aws:codedeploy:*:*:application:*`。 如需此政策的詳細資訊，請參閱[其他 受管政策中通知的許可](managed-policies.md#notifications-deployer)。  |  2024 年 12 月 16 日  | 
|  `AWSCodeDeployReadOnlyAccess` 受管政策 – 現有政策的更新  |  更新 `codestar-notifications:NotificationsForResource`動作以支援 IAM 政策驗證變更。原始資源`arn:aws:codedeploy:*`已更新為 `arn:aws:codedeploy:*:*:application:*`。 如需此政策的詳細資訊，請參閱[唯讀受管政策中通知的許可](managed-policies.md#notifications-readonly)。  |  2024 年 12 月 16 日  | 
|  `AWSCodeDeployFullAccess` 受管政策 – 現有政策的更新  |  更新 `codestar-notifications:NotificationsForResource`動作以支援 IAM 政策驗證變更。原始資源`arn:aws:codedeploy:*`已更新為 `arn:aws:codedeploy:*:*:application:*`。 如需此政策的詳細資訊，請參閱[完整存取受管政策中通知的許可](managed-policies.md#notifications-fullaccess)。  |  2024 年 12 月 16 日  | 
|  `AWSCodeDeployRole` 受管政策 – 現有政策的更新  |  已將 `elasticloadbalancing:DescribeLoadBalancerAttributes`和 `elasticloadbalancing:DescribeTargetGroupAttributes`動作新增至政策陳述式，以支援 Elastic Load Balancing 變更。 如需此政策的詳細資訊，請參閱[AWSCodeDeployRole](managed-policies.md#ACD-policy)。  |  2023 年 8 月 16 日  | 
|  `AWSCodeDeployFullAccess` 受管政策 – 現有政策的更新  |  將 `chatbot:ListMicrosoftTeamsChannelConfigurations`動作新增至政策陳述式，以支援通知變更。 如需此政策的詳細資訊，請參閱[AWSCodeDeployRole](managed-policies.md#ACD-policy)。  |  2023 年 5 月 11 日  | 
|  `AWSCodeDeployRole` 受管政策 – 現有政策的更新  |  將 ` autoscaling:CreateOrUpdateTags`動作新增至政策陳述式，以支援 Amazon EC2 Auto Scaling 授權變更。 如需此政策的詳細資訊，請參閱[AWSCodeDeployRole](managed-policies.md#ACD-policy)。  |  2023 年 2 月 3 日  | 
|  `AmazonEC2RoleforAWSCodeDeployLimited` 受管政策 – 現有政策的更新  |  從包含 `s3:ExistingObjectTag/UseWithCodeDeploy`條件的政策陳述式中移除`s3:ListBucket`動作。 如需此政策的詳細資訊，請參閱[AmazonEC2RoleforAWSCodeDeployLimited](managed-policies.md#EC2-policy)。  |  2021 年 11 月 22 日  | 
|  `AWSCodeDeployRole` 受管政策 – 現有政策的更新  |  新增 `autoscaling:PutWarmPool`動作，以支援[將暖集區新增至藍/綠部署的 Amazon EC2 Auto Scaling 群組](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html#add-warm-pool-console/ec2/userguide/ec2-auto-scaling-warm-pools.html#add-warm-pool-console)。 已移除不必要的重複動作。  |  2021 年 5 月 18 日  | 
|  CodeDeploy 已開始追蹤變更  |  CodeDeploy 開始追蹤其 AWS 受管政策的變更。  |  2021 年 5 月 18 日  | 

# AWS CodeDeploy 身分型政策範例
<a name="security_iam_id-based-policy-examples"></a>

根據預設，使用者沒有建立或修改 CodeDeploy 資源的許可。他們也無法使用 AWS 管理主控台 AWS CLI或 AWS API 執行任務。您必須建立 IAM 政策，授予 IAM 角色對所需指定資源執行 API 操作的許可。然後，您必須將這些 IAM 角色連接到需要這些許可的使用者或群組。

若要了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《IAM 使用者指南》中的[在 JSON 標籤上建立政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)。

在 CodeDeploy 中，身分型政策用於管理與部署程序相關的各種資源的許可。您可以控制下列資源類型的存取：
+ 應用程式與應用程式修訂。
+ 部署。
+ 部署組態。
+ 執行個體與內部部署執行個體。

資源政策控制的功能會因資源類型而有所不同，如下表所述：


****  

|  資源類型  |  功能  | 
| --- | --- | 
|  全部  |  檢視及列出資源的詳細資訊  | 
|  應用程式 部署組態 部署群組  |  建立 資源 刪除資源  | 
|  部署  |  建立部署 停止部署  | 
|  應用程式修訂  |  註冊應用程式修訂  | 
|  應用程式 部署群組  |  更新資源  | 
|  現場部署執行個體  |  為執行個體新增標籤 從執行個體移除標籤 註冊執行個體 取消註冊執行個體  | 

以下範例顯示的許可政策，允許使用者刪除 **us-west-2** 區域內與名為 **WordPress\$1App** 應用程式建立關聯，且名為 **WordPress\$1DepGroup** 的部署群組。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codedeploy:DeleteDeploymentGroup"
      ],
      "Resource" : [
        "arn:aws:codedeploy:us-west-2:111122223333:deploymentgroup:WordPress_App/WordPress_DepGroup"
      ]
    }
  ]
}
```

------

**Topics**
+ [客戶受管政策範例](#customer-managed-policies)
+ [政策最佳實務](#security_iam_service-with-iam-policy-best-practices)
+ [使用 CodeDeploy 主控台](#security_iam_id-based-policy-examples-console)
+ [允許使用者檢視他們自己的許可](#security_iam_id-based-policy-examples-view-own-permissions)

## 客戶受管政策範例
<a name="customer-managed-policies"></a>

在本節中，您可以找到授予各種 CodeDeploy 動作許可的範例政策。當您使用 CodeDeploy API、 AWS SDKs 或 時，這些政策即可運作 AWS CLI。您必須為在主控台中執行的動作授與其他許可。若要進一步了解如何授與主控台許可，請參閱 [使用 CodeDeploy 主控台](#security_iam_id-based-policy-examples-console)。



**注意**  
所有範例皆使用美國西部 (奧勒岡) 區域 (`us-west-2`) 及虛構帳戶 ID。

 **範例**
+ [範例 1：允許在單一區域中執行 CodeDeploy 操作的許可](#identity-based-policies-example-1)
+ [範例 2：允許為單一應用程式註冊修訂的許可](#identity-based-policies-example-2)
+ [範例 3：允許為單一部署群組建立部署的許可](#identity-based-policies-example-3)

### 範例 1：允許在單一區域中執行 CodeDeploy 操作的許可
<a name="identity-based-policies-example-1"></a>

下列範例僅授予在 **us-west-2**區域中執行 CodeDeploy 操作的許可：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codedeploy:*"
      ],
      "Resource" : [
        "arn:aws:codedeploy:us-west-2:111122223333:*"
      ]
    }
  ]
}
```

------

### 範例 2：允許為單一應用程式註冊修訂的許可
<a name="identity-based-policies-example-2"></a>

以下範例會授予許可，註冊 **us-west-2** 區域內所有開頭為 **Test** 應用程式的應用程式修訂：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codedeploy:RegisterApplicationRevision"
      ],
      "Resource" : [
        "arn:aws:codedeploy:us-west-2:111122223333:application:Test*"
      ]
    }
  ]
}
```

------

### 範例 3：允許為單一部署群組建立部署的許可
<a name="identity-based-policies-example-3"></a>

下列範例允許 為名為 之應用程式**WordPress\$1DepGroup**相關聯的部署群組**WordPress\$1App**、名為 的自訂部署組態**ThreeQuartersHealthy**，以及與名為 之應用程式相關聯的任何應用程式修訂版建立部署的許可**WordPress\$1App**。所有這些資源都位於 **us-west-2** 區域。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codedeploy:CreateDeployment"
      ],
      "Resource" : [
        "arn:aws:codedeploy:us-west-2:111122223333:deploymentgroup:WordPress_App/WordPress_DepGroup"
      ]
    },
    {
      "Effect" : "Allow",
      "Action" : [
        "codedeploy:GetDeploymentConfig"
      ],
      "Resource" : [
        "arn:aws:codedeploy:us-west-2:111122223333:deploymentconfig:ThreeQuartersHealthy"
      ]
    },
    {
      "Effect" : "Allow",
      "Action" : [
        "codedeploy:GetApplicationRevision"
      ],
      "Resource" : [
        "arn:aws:codedeploy:us-west-2:111122223333:application:WordPress_App"
      ]
    }
  ]
}
```

------

## 政策最佳實務
<a name="security_iam_service-with-iam-policy-best-practices"></a>

身分型政策會判斷您帳戶中的某人是否可以建立、存取或刪除 CodeDeploy 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，以進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用 CodeDeploy 主控台
<a name="security_iam_id-based-policy-examples-console"></a>

如果您使用 CodeDeploy 主控台，您必須擁有一組最低許可，允許您描述 AWS 帳戶的其他 AWS 資源。若要在 CodeDeploy 主控台中使用 CodeDeploy，您必須擁有下列服務的許可：
+ Amazon EC2 Auto Scaling
+ AWS CodeDeploy
+ Amazon Elastic Compute Cloud
+ Elastic Load Balancing
+ AWS Identity and Access Management
+ Amazon Simple Storage Service
+ Amazon Simple Notification Service
+ Amazon CloudWatch

如果您建立比最低必要許可更嚴格的 IAM 政策，對於具有該 IAM 政策角色的使用者，主控台將無法如預期運作。為了確保這些使用者仍然可以使用 CodeDeploy 主控台，也請將 `AWSCodeDeployReadOnlyAccess`受管政策連接至指派給使用者的角色，如中所述[AWS CodeDeploy 的受管 （預先定義） 政策](managed-policies.md)。

對於僅呼叫 AWS CLI 或 CodeDeploy API 的使用者，您不需要允許最低主控台許可。

## 允許使用者檢視他們自己的許可
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

此範例會示範如何建立政策，允許 IAM 使用者檢視附加到他們使用者身分的內嵌及受管政策。此政策包含在主控台或使用 或 AWS CLI AWS API 以程式設計方式完成此動作的許可。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# 對 AWS CodeDeploy 身分和存取進行故障診斷
<a name="security_iam_troubleshoot"></a>

使用以下資訊來協助您診斷和修正使用 CodeDeploy 和 IAM 時可能遇到的常見問題。

**Topics**
+ [我未獲得執行 iam:PassRole 的授權](#security_iam_troubleshoot-passrole)
+ [我想要允許 AWS 帳戶外的人員存取我的 CodeDeploy 資源](#security_iam_troubleshoot-cross-account-access)

## 我未獲得執行 iam:PassRole 的授權
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到錯誤，告知您無權執行 `iam:PassRole`動作，您的政策必須更新，以允許您將角色傳遞至 CodeDeploy。

有些 AWS 服務 可讓您將現有角色傳遞給該服務，而不是建立新的服務角色或服務連結角色。如需執行此作業，您必須擁有將角色傳遞至該服務的許可。

當名為 的 IAM `marymajor` 使用者嘗試使用主控台在 CodeDeploy 中執行動作時，會發生下列範例錯誤。但是，動作請求服務具備服務角色授予的許可。Mary 沒有將角色傳遞給服務的許可。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在這種情況下，Mary 的政策必須更新，允許她執行 `iam:PassRole` 動作。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的簽署憑證。

## 我想要允許 AWS 帳戶外的人員存取我的 CodeDeploy 資源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以建立一個角色，讓其他帳戶中的使用者或您組織外部的人員存取您的資源。您可以指定要允許哪些信任物件取得該角色。針對支援基於資源的政策或存取控制清單 (ACL) 的服務，您可以使用那些政策來授予人員存取您的資源的許可。

如需進一步了解，請參閱以下內容：
+ 若要了解 CodeDeploy 是否支援這些功能，請參閱 [AWS CodeDeploy 如何使用 IAM](security_iam_service-with-iam.md)。
+ 若要了解如何 AWS 帳戶 在您擁有的 資源之間提供存取權，請參閱《[IAM 使用者指南》中的在您擁有 AWS 帳戶 的另一個 IAM 使用者中提供存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。 **
+ 若要了解如何將資源的存取權提供給第三方 AWS 帳戶，請參閱《*IAM 使用者指南*》中的[將存取權提供給第三方 AWS 帳戶 擁有](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ 如需了解如何透過聯合身分提供存取權，請參閱《*IAM 使用者指南*》中的[將存取權提供給在外部進行身分驗證的使用者 (聯合身分)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 如需了解使用角色和資源型政策進行跨帳戶存取之間的差異，請參閱《*IAM 使用者指南*》中的 [IAM 中的跨帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

# CodeDeploy 許可參考
<a name="auth-and-access-control-permissions-reference"></a>

當您設定可連接到 IAM 身分 （身分型政策） 的存取和寫入許可政策時，請使用下表。此表格列出每個 CodeDeploy API 操作、您可以授予執行動作許可的動作，以及用於授予許可的資源 ARN 格式。您可以在政策的 `Action` 欄位中指定動作。您可以使用或不使用萬用字元 (\$1)，指定 ARN 做為政策之 `Resource` 欄位中的資源值。

您可以在 CodeDeploy 政策中使用 AWS整個條件索引鍵來表達條件。如需 AWS全系列金鑰的完整清單，請參閱《*IAM 使用者指南*》中的[可用金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。

若要指定動作，請使用 `codedeploy:` 字首，後面接著 API 操作名稱 (例如 `codedeploy:GetApplication` 和 `codedeploy:CreateApplication`)。若要在單一陳述式中指定多個動作，請用逗號加以分隔 (例如 `"Action": ["codedeploy:action1", "codedeploy:action2"]`)。

**使用萬用字元**

您可以在您的 ARN 中使用萬用字元 (\$1) 指定多個動作或資源。例如， `codedeploy:*`會指定所有 CodeDeploy 動作，並`codedeploy:Get*`指定以字詞 開頭的所有 CodeDeploy 動作`Get`。以下範例會授予存取所有名稱開頭為 `West`，且和名稱開頭為 `Test` 應用程式建立關聯的部署群組。

```
arn:aws:codedeploy:us-west-2:444455556666:deploymentgroup:Test*/West*
```

您可以針對下表列出的資源使用萬用字元：
+ *application-name*
+ *deployment-group-name*
+ *deployment-configuration-name*
+ *instance-ID*

萬用字元無法用於 *region* 或 *account-id*。如需萬用字元的詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 識別符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)。

**注意**  
 在每個動作的 ARN 中，資源後方會跟隨一個冒號 (:)。您也可以使用斜線 (/) 跟隨資源。如需詳細資訊，請參閱 [CodeDeploy 範例 ARNs](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-codedeploy)。

使用捲軸查看資料表的其餘部分。


**CodeDeploy API 操作和動作所需的許可**  

| CodeDeploy API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  [AddTagsToOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_AddTagsToOnPremisesInstances.html)  |  `codedeploy:AddTagsToOnPremisesInstances` 若要將標籤新增至一個或多個現場部署執行個體，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：instance/*instance-ID*  | 
|  [BatchGetApplicationRevisions](https://docs.aws.amazon.com/codedeploy/latest/APIReference/BatchGetApplicationRevisions.html)  |  `codedeploy:BatchGetApplicationRevisions` 若要取得與 使用者相關聯的多個應用程式修訂版本相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：*application-name*  | 
|  [BatchGetApplications](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_BatchGetApplications.html)  |  `codedeploy:BatchGetApplications` 若要取得與 使用者相關聯的多個應用程式相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：\$1  | 
| [BatchGetDeploymentGroups](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_BatchGetDeploymentGroups.html) |  `codedeploy:BatchGetDeploymentGroups` 若要取得與 使用者相關聯的多個部署群組相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
| [BatchGetDeploymentInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_BatchGetDeploymentInstances.html) | codedeploy:BatchGetDeploymentInstances若要取得部署群組中的一個或多個執行個體相關資訊，則為必要許可。 |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [BatchGetDeployments](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_BatchGetDeployments.html)  |  `codedeploy:BatchGetDeployments` 若要取得與 使用者相關聯的多個部署相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [BatchGetOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_BatchGetOnPremisesInstances.html)  |  `codedeploy:BatchGetOnPremisesInstances` 若要取得一個或多個現場部署執行個體的相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：\$1  | 
|  [ContinueDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ContinueDeployment.html)  |  `codedeploy:ContinueDeployment` 在藍/綠部署期間，使用 Elastic Load Balancing 負載平衡器開始在替代環境中註冊執行個體的程序時需要。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [CreateApplication](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateApplication.html)  |  `codedeploy:CreateApplication` 若要建立與 使用者相關聯的應用程式，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：*application-name*  | 
|  [CreateDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html) 1  |  `codedeploy:CreateDeployment` 若要建立與 使用者相關聯的應用程式部署，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [CreateDeploymentConfig](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeploymentConfig.html)  |  `codedeploy:CreateDeploymentConfig` 若要建立與 使用者相關聯的自訂部署組態，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentconfig：*deployment-configuration-name*   | 
|  [CreateDeploymentGroup](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeploymentGroup.html)  |  `codedeploy:CreateDeploymentGroup` 若要建立與 使用者相關聯的應用程式部署群組，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [DeleteApplication](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeleteApplication.html)  |  `codedeploy:DeleteApplication` 若要刪除與 使用者相關聯的應用程式，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：*application-name*  | 
|  [DeleteDeploymentConfig](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeleteDeploymentConfig.html)  |  `codedeploy:DeleteDeploymentConfig` 若要刪除與 使用者相關聯的自訂部署組態，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentconfig：*deployment-configuration-name*   | 
|  [DeleteDeploymentGroup](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeleteDeploymentGroup.html)  |  `codedeploy:DeleteDeploymentGroup` 若要刪除與 使用者相關聯的應用程式部署群組，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [DeregisterOnPremisesInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeregisterOnPremisesInstance.html)  |  `codedeploy:DeregisterOnPremisesInstance` 若要取消註冊現場部署執行個體，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：instance/*instance-ID*  | 
|  [GetApplication](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetApplication.html)  |  `codedeploy:GetApplication` 若要取得與 使用者相關聯的單一應用程式相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：*application-name*  | 
|  [GetApplicationRevision](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetApplicationRevision.html)  |  `codedeploy:GetApplicationRevision` 若要取得與 使用者相關聯的單一應用程式修訂版本相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：*application-name*  | 
|  [GetDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeployment.html)  |  `codedeploy:GetDeployment` 若要針對與 使用者相關聯的應用程式，取得部署群組的單一部署相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [GetDeploymentConfig](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeploymentConfig.html)  |  `codedeploy:GetDeploymentConfig` 若要取得與 使用者相關聯的單一部署組態相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentconfig：*deployment-configuration-name*   | 
|  [GetDeploymentGroup](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeploymentGroup.html)  |  `codedeploy:GetDeploymentGroup` 若要取得與 使用者相關聯的應用程式單一部署群組相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [GetDeploymentInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeploymentInstance.html)  |  `codedeploy:GetDeploymentInstance` 若要取得與 使用者相關聯部署中的單一執行個體相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [GetDeploymentTarget](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeploymentTarget.html)  |  `codedeploy:GetDeploymentTarget` 若要取得在 使用者相關部署中目標的相關資訊，則為必要資訊。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [GetOnPremisesInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetOnPremisesInstance.html)  |  `codedeploy:GetOnPremisesInstance` 若要取得單一現場部署執行個體的相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：instance/*instance-ID*  | 
|  [ListApplicationRevisions](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListApplicationRevisions.html)  |  `codedeploy:ListApplicationRevisions` 若要取得與 使用者相關聯的所有應用程式修訂版本相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：\$1  | 
|  [ListApplications](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListApplications.html)  |  `codedeploy:ListApplications` 若要取得與 使用者相關聯的所有應用程式相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：\$1  | 
|  [ListDeploymentConfigs](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentConfigs.html)  |  `codedeploy:ListDeploymentConfigs` 若要取得與 使用者相關聯的所有部署組態相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentconfig：\$1  | 
|  [ListDeploymentGroups](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentGroups.html)  |  `codedeploy:ListDeploymentGroups` 若要取得與 使用者相關聯的所有應用程式部署群組相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/\$1  | 
|  [ListDeploymentInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentInstances.html)  |  `codedeploy:ListDeploymentInstances` 取得與使用者或 AWS 帳戶相關聯之部署中所有執行個體的相關資訊時需要。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [ListDeployments](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeployments.html)  |  `codedeploy:ListDeployments` 取得與使用者相關聯的部署群組之所有部署的相關資訊，或取得與使用者相關聯的所有部署時需要。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [ListDeploymentTargets](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentTargets.html)  |  `codedeploy:ListDeploymentTargets` 取得與使用者相關聯之部署中所有目標的相關資訊時需要。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [ListGitHubAccountTokenNames](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListGitHubAccountTokenNames.html)  |  `codedeploy:ListGitHubAccountTokenNames` 必要許可，用於取得已存放 GitHub 帳戶連線的名稱清單。  |  arn：aws：codedeploy：*region*：*account-id*：\$1  | 
|  [ListOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListOnPremisesInstances.html)  |  `codedeploy:ListOnPremisesInstances` 若要取得一個或多個現場部署執行個體名稱的清單，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：\$1  | 
|  PutLifecycleEventHookExecutionStatus  |  `codedeploy:PutLifecycleEventHookExecutionStatus` 若要提供生命週期關聯事件執行狀態的相關通知，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [RegisterApplicationRevision](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_RegisterApplicationRevision.html)  |  `codedeploy:RegisterApplicationRevision` 若要註冊與 使用者相關聯的應用程式修訂版本相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：*application-name*  | 
|  [RegisterOnPremisesInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_RegisterOnPremisesInstance.html)  |  `codedeploy:RegisterOnPremisesInstance` 向 CodeDeploy 註冊現場部署執行個體時需要。  |  arn：aws：codedeploy：*region*：*account-id*：instance/*instance-ID*  | 
|  [RemoveTagsFromOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_RemoveTagsFromOnPremisesInstances.html)  |  `codedeploy:RemoveTagsFromOnPremisesInstances` 若要從一個或多個現場部署執行個體移除標籤，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：instance/*instance-ID*  | 
|  [SkipWaitTimeForInstanceTermination](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_SkipWaitTimeForInstanceTermination.html)  |  `codedeploy:SkipWaitTimeForInstanceTermination` 若要在藍/綠部署中覆寫指定的等待時間，並立即在原始環境中啟動終止的執行個體，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：instance/*instance-ID*  | 
|  [StopDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_StopDeployment.html)  |  `codedeploy:StopDeployment` 若要針對與 使用者相關聯的應用程式，停止部署群組正在進行的部署，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  [UpdateApplication](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_UpdateApplication.html) 3  |  `codedeploy:UpdateApplication` 若要變更與 使用者相關聯的應用程式相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：application：*application-name*  | 
|  [UpdateDeploymentGroup](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_UpdateDeploymentGroup.html) 3  |  `codedeploy:UpdateDeploymentGroup` 若要變更與 使用者相關聯的應用程式單一部署群組相關資訊，則為必要許可。  |  arn：aws：codedeploy：*region*：*account-id*：deploymentgroup：*application-name*/*deployment-group-name*  | 
|  1 當您指定`CreateDeployment`許可時，您還必須指定部署組態的`GetDeploymentConfig`許可和`GetApplicationRevision`/或應用程式修訂版的`RegisterApplicationRevision`許可。此外，如果您在 `CreateDeployment` API 呼叫中包含 `overrideAlarmConfiguration` 參數，則必須指定 `UpdateDeploymentGroup`許可。 2 適用於提供特定部署群組`ListDeployments`時，但不適用於列出與使用者相關聯的所有部署時。 3 對於 `UpdateApplication`，您必須同時擁有舊應用程式名稱和新應用程式名稱的`UpdateApplication`許可。對於涉及變更部署群組名稱的 `UpdateDeploymentGroup` 動作，您必須同時擁有舊的及新的部署群組名稱的 `UpdateDeploymentGroup` 許可。  | 

# 預防跨服務混淆代理人
<a name="security_confused_deputy"></a>

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

我們建議在資源政策中使用 [aws：SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [aws：SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件內容索引鍵，以限制 CodeDeploy 為資源提供其他服務的許可。如果同時使用這兩個全域條件內容索引鍵，且 `aws:SourceArn` 值包含帳戶 ID，則在相同政策陳述式中使用 `aws:SourceAccount` 值和 `aws:SourceArn` 值中的帳戶時，必須使用相同的帳戶 ID。如果您想要僅允許一個資源與跨服務存取相關聯，則請使用 `aws:SourceArn`。`aws:SourceAccount` 如果您希望該帳戶中的任何資源與跨服務使用相關聯，請使用 。

對於 EC2/現場部署、 AWS Lambda 和一般 Amazon ECS 部署， 的值`aws:SourceArn`應包含 CodeDeploy 部署群組 ARN，允許 CodeDeploy 擔任 IAM 角色。

對於[透過 建立的 Amazon ECS 藍/綠部署 CloudFormation](deployments-create-ecs-cfn.md)， 的值`aws:SourceArn`應包含允許 CodeDeploy 擔任 IAM 角色的 CloudFormation 堆疊 ARN。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn`金鑰搭配資源的完整 ARN。如果您不知道完整的 ARN 或指定多個資源，請針對未知部分使用萬用字元 (\$1)。

例如，您可以將下列信任政策與 EC2/現場部署、 AWS Lambda 或一般 Amazon ECS 部署搭配使用：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "codedeploy.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:codedeploy:us-east-1:111122223333:deploymentgroup:myApplication/*"
                }
            }
        }
    ]
}
```

------

對於[透過 建立的 Amazon ECS 藍/綠部署 CloudFormation](deployments-create-ecs-cfn.md)，您可以使用：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "codedeploy.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cloudformation:us-east-1:111122223333:stack/MyCloudFormationStackName/*"
                }
            }
        }
    ]
}
```

------