

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

# 如何 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 实例的角色很重要。