

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

# 管理 Amazon CodeBuild 资源访问权限概述
有关管理访问的概述

每个 Amazon 资源都归一个 Amazon 账户所有，创建或访问资源的权限受权限策略的约束。账户管理员可以向 IAM 身份（即：用户、组和角色）附加权限策略。

**注意**  
账户管理员（或管理员用户）是具有管理员权限的用户。有关更多信息，请参阅《IAM 用户指南》中的 [IAM 最佳实操](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html)。

在您授予权限时，您要决定谁将获得权限、这些人可以访问的资源以及可以对这些资源执行的操作。

**Topics**
+ [

## Amazon CodeBuild 资源和运营
](#arn-formats)
+ [

## 了解资源所有权
](#understanding-resource-ownership)
+ [

## 管理对 资源的访问
](#managing-access-resources)
+ [

## 指定策略元素：操作、效果和主体
](#actions-effects-principals)

## Amazon CodeBuild 资源和运营
资源和操作

在中 Amazon CodeBuild，主要资源是构建项目。在策略中，您可以使用 Amazon 资源名称 (ARN) 标识策略应用到的资源。构建也是资源，并且 ARNs 与之相关联。有关更多信息，请参阅中的 [Amazon 资源名称 (ARN) 和 Amazon 服务命名空间](https://docs.amazonaws.cn/general/latest/gr/aws-arns-and-namespaces.html)。*Amazon Web Services 一般参考*


| 资源类型 | ARN 格式 | 
| --- | --- | 
| 构建项目 |  `arn:aws:codebuild:region-ID:account-ID:project/project-name`  | 
| 构建 |  `arn:aws:codebuild:region-ID:account-ID:build/build-ID`  | 
| 报告组 | arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name | 
| 报告 | arn:aws:codebuild:region-ID:account-ID:report/report-ID | 
| Fleet |  `arn:aws:codebuild:region-ID:account-ID:fleet/fleet-ID`  | 
|  所有 CodeBuild 资源  |  `arn:aws:codebuild:*`  | 
|  指定 Amazon 区域中指定账户拥有的所有 CodeBuild 资源  |  `arn:aws:codebuild:region-ID:account-ID:*`  | 

**重要**  
使用预留容量特征时，同一账户内的其他项目可以访问实例集实例中缓存的数据，包括源文件、Docker 层和 buildspec 中指定的缓存目录。这是设计使然，让同一账户内的项目可以共享实例集实例。

**注意**  
大多数 Amazon 服务都将冒号 (:) 或正斜杠 (/) 视为中的 ARNs相同字符。但是，在资源模式和规则中 CodeBuild 使用精确匹配。请务必在创建事件模式时使用正确的字符，以使其与资源中的 ARN 语法匹配。

例如，您可以在语句中使用其 ARN 指明特定的构建项目 (*myBuildProject*)，如下所示：

```
"Resource": "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject"
```

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

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

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

```
"Resource": [
  "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject",
  "arn:aws:codebuild:us-east-2:123456789012:project/myOtherBuildProject"
]
```

CodeBuild 提供了一组使用 CodeBuild 资源的操作。有关列表，请参阅[Amazon CodeBuild 权限参考](auth-and-access-control-permissions-reference.md)。

## 了解资源所有权


该 Amazon 账户拥有在账户中创建的资源，无论谁创建了这些资源。具体而言，资源所有者是对 Amazon 资源创建请求进行身份验证的[委托人实体](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)（即根账户、用户或 IAM 角色）的账户。以下示例说明了它的工作原理：
+ 如果您使用账户的根账户证书创建规则，则您的 Amazon 账户就是该 CodeBuild 资源的所有者。 Amazon 
+ 如果您在 Amazon 账户中创建用户并向该用户授予创建 CodeBuild 资源的权限，则该用户可以创建 CodeBuild 资源。但是，该用户所属的您的 Amazon 账户拥有这些 CodeBuild资源。
+ 如果您在 Amazon 账户中创建具有创建 CodeBuild 资源权限的 IAM 角色，则任何能够担任该角色的人都可以创建 CodeBuild资源。该角色所属的 Amazon 账户拥有这些 CodeBuild资源。

## 管理对 资源的访问


权限策略规定谁可以访问哪些资源。

**注意**  
本节讨论如何在 Amazon CodeBuild中使用 IAM。这里不提供有关 IAM 服务的详细信息。有关完整的 IAM 文档，请参阅《IAM 用户指南》中的[什么是 IAM？](https://docs.amazonaws.cn/IAM/latest/UserGuide/introduction.html)。有关 IAM 策略语法和说明的信息，请参阅《IAM 用户指南》中的 [Amazon IAM 策略参考](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies.html)。

附加到 IAM 身份的策略称为基于身份的策略（IAM 策略）。附加到资源的策略称为基于资源的策略。 CodeBuild 支持基于身份的策略，以及 APIs 出于跨账户资源共享目的的某些只读策略和基于资源的策略。

### 对 S3 存储桶的安全访问


我们强烈建议您在您的 IAM 角色中包含以下权限，以验证与您的 CodeBuild 项目关联的 S3 存储桶是否归您或您信任的人所有。这些权限不包含在 Amazon 托管策略和角色中。您必须自行添加。
+  `s3:GetBucketAcl` 
+  `s3:GetBucketLocation` 

如果您的项目使用的 S3 存储桶的拥有者发生更改，则必须验证您是否仍拥有存储桶，如果没有，请更新您的 IAM 角色的权限。有关更多信息，请参阅[允许用户与之互动 CodeBuild](setting-up-service-permissions-group.md)和[CodeBuild 允许与其他 Amazon 服务进行交互](setting-up-service-role.md)。

## 指定策略元素：操作、效果和主体


对于每种 Amazon CodeBuild 资源，该服务都定义了一组 API 操作。要授予这些 API 操作的权限，请 CodeBuild 定义一组可在策略中指定的操作。某些 API 操作可能需要多个操作的权限才能执行 API 操作。有关更多信息，请参阅[Amazon CodeBuild 资源和运营](#arn-formats)和[Amazon CodeBuild 权限参考](auth-and-access-control-permissions-reference.md)。

以下是基本的策略元素：
+ **资源** – 您使用 Amazon 资源名称 (ARN) 来标识策略应用到的资源。
+ **操作** – 您可以使用操作关键字来标识要允许或拒绝的资源操作。例如，`codebuild:CreateProject` 权限授予用户执行 `CreateProject` 操作的权限。
+ **效果** – 用于指定当用户请求操作时的效果（可以是允许或拒绝）。如果没有显式授予（允许）对资源的访问权限，则隐式拒绝访问。您也可显式拒绝对资源的访问。您可以执行此操作，以确保用户无法访问资源，即使有其他策略授予了访问权限也是如此。
+ **主体** – 在基于身份的策略（IAM 策略）中，附加了策略的用户是隐式主体。对于基于资源的策略，您可以指定您希望将权限授予的用户、账户、服务或其他实体。

有关 IAM 策略语法和介绍的更多信息，请参阅《IAM 用户指南》中的 [Amazon IAM 策略参考](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies.html)。

有关显示所有 CodeBuild API 操作及其适用的资源的表格，请参阅[Amazon CodeBuild 权限参考](auth-and-access-control-permissions-reference.md)。