

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

# 的身份和访问管理 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)
+ [CodeDeploy AWS 托管策略的更新](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 使用身份凭证登录的方式。您必须以 IAM 用户身份进行身份验证 AWS 账户根用户，或者通过担任 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 账户 root 用户
<a name="security_iam_authentication-rootuser"></a>

 创建时 AWS 账户，首先会有一个名为 AWS 账户 *root 用户的*登录身份，该身份可以完全访问所有资源 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)*是对某个人员或应用程序具有特定权限的一个身份。建议使用临时凭证，而非具有长期凭证的 IAM 用户。有关更多信息，请参阅 *IAM 用户指南*[中的要求人类用户使用身份提供商的联合身份验证才能 AWS 使用临时证书进行访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](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)*是具有特定权限的身份，可提供临时凭证。您可以通过[从用户切换到 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)。
+ **服务控制策略 (SCPs)**-在中指定组织或组织单位的最大权限 AWS Organizations。有关更多信息，请参阅《AWS Organizations 用户指南》**中的[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **资源控制策略 (RCPs)**-设置账户中资源的最大可用权限。有关更多信息，请参阅《*AWS Organizations 用户指南》*中的[资源控制策略 (RCPs)](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。有关更多信息，请参阅《IAM 用户指南》**中的[与 IAM 结合使用的AWS 服务](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)。

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

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说，哪个**主体**可以对什么**资源**执行**操作**，以及在什么**条件**下执行。

`Resource` JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践，请使用其 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)指定资源。对于不支持资源级权限的操作，请使用通配符 (\$1) 指示语句应用于所有资源。

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



例如，您可以在语句中使用部署组 (*myDeploymentGroup*) 的 ARN 表示该部署组 ()，如下所示：

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

您还可以使用通配符（\$1）指定属于某个账户的所有部署组，如下所示：

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

要指定所有资源，或者如果 API 操作不支持 ARNs，请在`Resource`元素中使用通配符 (\$1)，如下所示：

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

某些 CodeDeploy API 操作接受多个资源（例如`BatchGetDeploymentGroups`）。要在单个语句中指定多个资源，请 ARNs 用逗号分隔它们，如下所示：

```
"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 资源名称 (ARN) 来标识该政策适用的资源。 CodeDeploy 支持可用于部署组的其他资源，包括应用程序、部署配置和实例。这些资源称作子资源。这些资源和子资源具有独特的 ARNs 相关性。有关更多信息，请参阅中的 [Amazon 资源名称 (ARNs) *Amazon Web Services 一般参考*](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。


| 资源类型 | ARN 格式 | 
| --- | --- | 
| 部署组 |  `arn:aws:codedeploy:region:account-id:deploymentgroup:application-name/deployment-group-name`  | 
| 应用程序 |  `arn:aws:codedeploy:region:account-id:application:application-name`  | 
| 部署配置 |  `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 不支持基于资源的策略。要查看详细的基于资源的策略页面的示例，请参阅[使用基于资源的策略](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)。 AWS Lambda

## 基于 CodeDeploy 标签的授权
<a name="security_iam_service-with-iam-tags"></a>

CodeDeploy 不支持标记资源或基于标签控制访问权限。

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

I [AM 角色](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)或之类的 AWS STS API 操作来获取临时安全证书[GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)。

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 支持服务角色。

### 在中选择 IAM 角色 CodeDeploy
<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**
+ [的 AWS 托管策略列表 CodeDeploy](#managed-policies-list)
+ [CodeDeploy 托管策略和通知](#notifications-permissions)

## 的 AWS 托管策略列表 CodeDeploy
<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`: 授予访问部署所需的 Amazon ECS 和任何其他资源的 CodeDeploy权限，但以下情况除外：
  +  在该 AppSpec 文件的`hooks`部分中，只能使用名称以开头的 Lambda 函数。`CodeDeployHook_`有关更多信息，请参阅 [AppSpec 亚马逊 ECS 部署的 “挂钩” 部分](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 通知的身份和访问管理](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html)。

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

查看 CodeDeploy 自该服务开始跟踪这些更改以来 AWS 托管策略更新的详细信息。要获得有关此页面更改的自动提示，请订阅 CodeDeploy [文档历史记录](document-history.md) 上的 RSS 源。


| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
|  `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 policy，授予 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\$1DepGroup** 的应用程序关联的名为 **WordPress\$1App** 的部署组。

------
#### [ 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`)，并包含虚构账户。 IDs

 **示例**
+ [示例 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\$1App** 的应用程序关联的名为 **WordPress\$1DepGroup** 的部署组、名为 **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**)-如果 AWS 账户您的场景需要 IAM 用户或根用户，请启用 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 policy 比最低权限要求更严格，那么对于具有该 IAM policy 角色的用户，控制台将无法正常运行。为确保这些用户仍然可以使用 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 服务 允许您将现有角色传递给该服务，而不是创建新的服务角色或服务相关角色。为此，您必须具有将角色传递到服务的权限。

当名为 `marymajor` 的 IAM 用户尝试使用控制台在 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>

您可以创建一个角色，以便其他账户中的用户或您组织外的人员可以使用该角色来访问您的资源。您可以指定谁值得信赖，可以代入角色。对于支持基于资源的策略或访问控制列表 (ACLs) 的服务，您可以使用这些策略向人们授予访问您的资源的权限。

要了解更多信息，请参阅以下内容：
+ 要了解是否 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 用户指南*中的向第三方提供](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)访问权限。 AWS 账户 
+ 要了解如何通过身份联合验证提供访问权限，请参阅《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` 字段中指定这些操作。您可以在策略的 `Resource` 字段中指定带或不带通配符（\$1）的 ARN 作为资源值。

您可以在 CodeDeploy 策略中使用 AWS-wide 条件键来表达条件。有关 AWS范围密钥的完整列表，请参阅 *IAM 用户指南*中的[可用密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。

要指定操作，请在 API 操作名称之前使用 `codedeploy:` 前缀（例如，`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 操作） | 资源 | 
| --- | --- | --- | 
|  [AddTagsToOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_AddTagsToOnPremisesInstances.html)  |  `codedeploy:AddTagsToOnPremisesInstances` 向一个或多个本地实例添加标签所必需的。  |  arn: aws: codedeploy:: instance/ *region* *account-id* *instance-ID*  | 
|  [BatchGetApplicationRevisions](https://docs.aws.amazon.com/codedeploy/latest/APIReference/BatchGetApplicationRevisions.html)  |  `codedeploy:BatchGetApplicationRevisions` 获取有关与 用户关联的多个应用程序版本的信息所必需的。  |  arn: aws: codeploy::: 应用程序:*region**account-id**application-name*  | 
|  [BatchGetApplications](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_BatchGetApplications.html)  |  `codedeploy:BatchGetApplications` 获取有关与 用户关联的多个应用程序的信息所必需的。  |  arn: aws: codedeploy::: 应用程序:\$1 *region* *account-id*  | 
| [BatchGetDeploymentGroups](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_BatchGetDeploymentGroups.html) |  `codedeploy:BatchGetDeploymentGroups` 获取有关与 用户关联的多个部署组的信息所必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**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**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**application-name**deployment-group-name*  | 
|  [BatchGetOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_BatchGetOnPremisesInstances.html)  |  `codedeploy:BatchGetOnPremisesInstances` 获取有关一个或多个本地实例的信息所必需的。  |  arn: aws: codedeploy::: \$1 *region* *account-id*  | 
|  [ContinueDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ContinueDeployment.html)  |  `codedeploy:ContinueDeployment` 在 blue/green 部署期间，需要启动使用 Elastic Load Balancing 负载均衡器在替代环境中注册实例的过程。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**application-name**deployment-group-name*  | 
|  [CreateApplication](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateApplication.html)  |  `codedeploy:CreateApplication` 创建与 用户关联的应用程序所必需的。  |  arn: aws: codeploy::: 应用程序:*region**account-id**application-name*  | 
|  [CreateDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html)¹  |  `codedeploy:CreateDeployment` 为与 用户关联的应用程序创建部署所必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**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**deployment-configuration-name*   | 
|  [CreateDeploymentGroup](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeploymentGroup.html)  |  `codedeploy:CreateDeploymentGroup` 为与 用户关联的应用程序创建部署组所必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**application-name**deployment-group-name*  | 
|  [DeleteApplication](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeleteApplication.html)  |  `codedeploy:DeleteApplication` 删除与 用户关联的应用程序所必需的。  |  arn: aws: codeploy::: 应用程序:*region**account-id**application-name*  | 
|  [DeleteDeploymentConfig](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeleteDeploymentConfig.html)  |  `codedeploy:DeleteDeploymentConfig` 删除与 用户关联的自定义部署配置所必需的。  |  arn: aws: codedeploy::: 部署配置:*region**account-id**deployment-configuration-name*   | 
|  [DeleteDeploymentGroup](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeleteDeploymentGroup.html)  |  `codedeploy:DeleteDeploymentGroup` 为与 用户关联的应用程序删除部署组所必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**application-name**deployment-group-name*  | 
|  [DeregisterOnPremisesInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeregisterOnPremisesInstance.html)  |  `codedeploy:DeregisterOnPremisesInstance` 取消注册本地实例所必需的。  |  arn: aws: codedeploy:: instance/ *region* *account-id* *instance-ID*  | 
|  [GetApplication](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetApplication.html)  |  `codedeploy:GetApplication` 获取有关与 用户关联的单个应用程序的信息所必需的。  |  arn: aws: codeploy::: 应用程序:*region**account-id**application-name*  | 
|  [GetApplicationRevision](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetApplicationRevision.html)  |  `codedeploy:GetApplicationRevision` 获取有关与 用户关联的应用程序的单个应用程序修订的信息所必需的。  |  arn: aws: codeploy::: 应用程序:*region**account-id**application-name*  | 
|  [GetDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeployment.html)  |  `codedeploy:GetDeployment` 获取针对与 用户关联的应用程序的部署组的单个部署的信息所必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**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**deployment-configuration-name*   | 
|  [GetDeploymentGroup](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeploymentGroup.html)  |  `codedeploy:GetDeploymentGroup` 获取有关与 用户关联的应用程序的单个部署组的信息所必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**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**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**application-name**deployment-group-name*  | 
|  [GetOnPremisesInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetOnPremisesInstance.html)  |  `codedeploy:GetOnPremisesInstance` 获取有关单个本地实例的信息所必需的。  |  arn: aws: codedeploy:: instance/ *region* *account-id* *instance-ID*  | 
|  [ListApplicationRevisions](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListApplicationRevisions.html)  |  `codedeploy:ListApplicationRevisions` 获取有关与 用户关联的应用程序的所有应用程序修订的信息所必需的。  |  arn: aws: codedeploy::: 应用程序:\$1 *region* *account-id*  | 
|  [ListApplications](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListApplications.html)  |  `codedeploy:ListApplications` 获取有关与 用户关联的所有应用程序的信息所必需的。  |  arn: aws: codedeploy::: 应用程序:\$1 *region* *account-id*  | 
|  [ListDeploymentConfigs](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentConfigs.html)  |  `codedeploy:ListDeploymentConfigs` 获取有关与 用户关联的所有部署配置的信息所必需的。  |  arn: aws: codedeploy::: 部署配置:\$1 *region* *account-id*  | 
|  [ListDeploymentGroups](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentGroups.html)  |  `codedeploy:ListDeploymentGroups` 获取有关与 用户关联的应用程序的所有部署组的信息所必需的。  |  arn: aws: codedeploy::: 部署组:/\$1 *region* *account-id* *application-name*  | 
|  [ListDeploymentInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentInstances.html)  |  `codedeploy:ListDeploymentInstances` 需要获取有关部署中与用户或 AWS 账户关联的所有实例的信息。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**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**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**application-name**deployment-group-name*  | 
|  [ListGitHubAccountTokenNames](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListGitHubAccountTokenNames.html)  |  `codedeploy:ListGitHubAccountTokenNames` 需要获取已存储的 GitHub 账户连接的名称列表。  |  arn: aws: codedeploy::: \$1 *region* *account-id*  | 
|  [ListOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListOnPremisesInstances.html)  |  `codedeploy:ListOnPremisesInstances` 获取一个或更多本地实例名称的列表所必需的。  |  arn: aws: codedeploy::: \$1 *region* *account-id*  | 
|  PutLifecycleEventHookExecutionStatus  |  `codedeploy:PutLifecycleEventHookExecutionStatus` 对于提供生命周期挂钩事件的执行状态通知是必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**application-name**deployment-group-name*  | 
|  [RegisterApplicationRevision](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_RegisterApplicationRevision.html)  |  `codedeploy:RegisterApplicationRevision` 注册有关与 用户关联的应用程序的一个应用程序修订的信息所必需的。  |  arn: aws: codeploy::: 应用程序:*region**account-id**application-name*  | 
|  [RegisterOnPremisesInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_RegisterOnPremisesInstance.html)  |  `codedeploy:RegisterOnPremisesInstance` 向 CodeDeploy 注册本地实例所必需的。  |  arn: aws: codedeploy:: instance/ *region* *account-id* *instance-ID*  | 
|  [RemoveTagsFromOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_RemoveTagsFromOnPremisesInstances.html)  |  `codedeploy:RemoveTagsFromOnPremisesInstances` 从一个或多个本地实例中删除标签所必需的。  |  arn: aws: codedeploy:: instance/ *region* *account-id* *instance-ID*  | 
|  [SkipWaitTimeForInstanceTermination](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_SkipWaitTimeForInstanceTermination.html)  |  `codedeploy:SkipWaitTimeForInstanceTermination` 在 blue/green 部署中需要覆盖指定的等待时间并立即开始终止原始环境中的实例。  |  arn: aws: codedeploy:: instance/ *region* *account-id* *instance-ID*  | 
|  [StopDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_StopDeployment.html)  |  `codedeploy:StopDeployment` 停止正在进行的部署到与 用户关联的应用程序的部署组所必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**application-name**deployment-group-name*  | 
|  [UpdateApplication](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_UpdateApplication.html)³  |  `codedeploy:UpdateApplication` 更改有关与 用户关联的应用程序的信息所必需的。  |  arn: aws: codeploy::: 应用程序:*region**account-id**application-name*  | 
|  [UpdateDeploymentGroup](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_UpdateDeploymentGroup.html)³  |  `codedeploy:UpdateDeploymentGroup` 更改有关与 用户关联的应用程序的单个部署组的信息所必需的。  |  arn: aws: codedeploy::: 部署组:/*region**account-id**application-name**deployment-group-name*  | 
|  ¹ 当您指定 `GetDeploymentConfig` 权限时，还必须为部署配置指定 `GetApplicationRevision` 权限，并且为应用程序修订指定 `CreateDeployment` 或 `RegisterApplicationRevision` 权限。此外，如果您在 `CreateDeployment` API 调用中包含 `overrideAlarmConfiguration` 参数，则必须指定 `UpdateDeploymentGroup` 权限。 ² 在提供特定部署组时对 `ListDeployments` 有效，但在列出所有与用户关联的部署时无效。 ³ 对于 `UpdateApplication`，您必须同时对旧应用程序名称和新应用程序名称具有 `UpdateApplication` 权限。对于涉及更改部署组名称的 `UpdateDeploymentGroup` 操作，您必须同时具有对旧的和新的部署组名称的 `UpdateDeploymentGroup` 权限。  | 

# 防止跨服务混淆座席
<a name="security_confused_deputy"></a>

混淆代理问题是一个安全性问题，即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在中 AWS，跨服务模仿可能会导致混乱的副手问题。一个服务（呼叫服务）调用另一项服务（所谓的服务）时，可能会发生跨服务模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作，否则该服务不应有访问权限。为了防止这种情况，我们 AWS 提供了一些工具，帮助您保护所有服务的数据，这些服务委托人已被授予对您账户中资源的访问权限。

我们建议在资源策略中使用 a [ws[: 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 提供其他服务的权限。如果同时使用全局条件上下文密钥和包含账户 ID 的 `aws:SourceArn` 值，则 `aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户在同一策略语句中使用时，必须使用相同的账户 ID。如果您只希望将一个资源与跨服务访问相关联，请使用 `aws:SourceArn`。如果您想该账户中的任何资源与跨服务使用相关联，请使用 `aws:SourceAccount`。

对于 EC2/本地、L AWS ambda 和常规 Amazon ECS 部署，的值`aws:SourceArn`应包括允许其担任 IAM 角色的 CodeDeploy 部署 CodeDeploy 组 ARN。

对于[通过创建的 Amazon ECS 蓝/绿部署 CloudFormation](deployments-create-ecs-cfn.md)，的值`aws:SourceArn`应包括允许担任 IAM 角色的 CodeDeploy 堆栈 CloudFormation ARN。

防范混淆代理问题最有效的方法是使用 `aws:SourceArn` 键和资源的完整 ARN。如果不知道完整 ARN，或者正在指定多个资源，请针对未知部分使用通配符（\$1）。

例如，您可以在 EC2/本地、Lambda AWS 或常规 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/*"
                }
            }
        }
    ]
}
```

------