

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

# 将基于身份的策略用于 Amazon CodeBuild
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

本主题提供了基于身份的策略的示例，这些示例展示了账户管理员如何将权限策略附加到 IAM 身份（即用户、组和角色），从而授予对 Amazon CodeBuild 资源执行操作的权限。

**重要**  
我们建议您先阅读介绍性主题，这些主题解释了可用于管理 CodeBuild 资源访问权限的基本概念和选项。有关更多信息，请参阅 [管理您的访问权限概述 Amazon CodeBuild 资源](auth-and-access-control-iam-access-control-identity-based.md)。

**Topics**
+ [使用所需的权限 Amazon CodeBuild 控制台](#console-permissions)
+ [所需的权限 Amazon CodeBuild 连接到亚马逊弹性容器注册表](#ecr-policies)
+ [所需的权限 Amazon CodeBuild 用于连接源提供商的控制台](#console-policies)
+ [Amazon 的托管（预定义）策略 Amazon CodeBuild](#managed-policies)
+ [CodeBuild 托管策略和通知](#notifications-permissions)
+ [CodeBuild 更新到 Amazon 托管策略](#security-iam-awsmanpol-updates)
+ [Customer-managed 政策示例](#customer-managed-policies)

以下是一个权限策略示例，仅允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取任何以 `my` 名称开头的构建项目的相关信息：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetProjects",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my*"
    }
  ]
}
```

------

## 使用所需的权限 Amazon CodeBuild 控制台
<a name="console-permissions"></a>

使用 Amazon CodeBuild 控制台的用户必须拥有一组允许用户为 Amazon 账户描述其他 Amazon 资源的最低权限。您必须拥有来自以下服务的权限：
+ Amazon CodeBuild
+ 亚马逊 CloudWatch
+ CodeCommit （如果您将源代码存储在 Amazon CodeCommit 存储库中）
+ Amazon Elastic Container Registry (Amazon ECR)（如果您使用的构建环境依赖于 Amazon ECR 存储库中的 Docker 映像）
**注意**  
截至 2022 年 7 月 26 日，默认 IAM 政策已更新。有关更多信息，请参阅 [所需的权限 Amazon CodeBuild 连接到亚马逊弹性容器注册表](#ecr-policies)。
+ Amazon Elastic Container Service (Amazon ECS)（如果您使用的构建环境依赖于 Amazon ECR 存储库中的 Docker 映像）
+ Amazon Identity and Access Management (IAM)
+ Amazon Key Management Service (Amazon KMS)
+ Amazon Simple Storage Service（Amazon S3）

如果您创建比必需的最低权限更为严格的 IAM 策略，控制台将无法按预期正常运行。

## 所需的权限 Amazon CodeBuild 连接到亚马逊弹性容器注册表
<a name="ecr-policies"></a>

截至 2022 年 7 月 26 日， Amazon CodeBuild 已更新其亚马逊 ECR 权限的默认 IAM 政策。以下权限已从默认策略中删除：

```
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload"
```

对于 2022 年 7 月 26 日之前创建的 CodeBuild 项目，我们建议您使用以下亚马逊 ECR 政策更新您的政策：

```
"Action": [
    "ecr:BatchCheckLayerAvailability",
    "ecr:GetDownloadUrlForLayer",
    "ecr:BatchGetImage"
]
```

有关更新您的策略的更多信息，请参阅[允许用户与之互动 CodeBuild](setting-up-service-permissions-group.md)。

## 所需的权限 Amazon CodeBuild 用于连接源提供商的控制台
<a name="console-policies"></a>

 Amazon CodeBuild 控制台使用以下 API 操作连接到源提供商（例如， GitHub 存储库）。
+ `codebuild:ListConnectedOAuthAccounts`
+ `codebuild:ListRepositories`
+ `codebuild:PersistOAuthToken`
+ `codebuild:ImportSourceCredentials`

您可以使用 Amazon CodeBuild 控制台将源代码提供商（例如 GitHub 存储库）与您的构建项目关联起来。为此，您必须先将前面的 API 操作添加到与您用于访问 Amazon CodeBuild 控制台的用户关联的 IAM 访问策略中。

`ListConnectedOAuthAccounts`、`ListRepositories` 和 `PersistOAuthToken` API 操作不应由您的代码调用。因此，这些 API 操作不包含在 Amazon CLI 和 Amazon 软件开发工具包中。

## Amazon 的托管（预定义）策略 Amazon CodeBuild
<a name="managed-policies"></a>

Amazon 通过提供由创建和管理的独立 IAM 策略来解决许多常见用例 Amazon。这些 Amazon 托管策略为常见用例授予必要的权限，因此您可以避免调查需要哪些权限。的托管策略 CodeBuild 还提供在其他服务中执行操作的权限，例如IAM、 Amazon CodeCommit、Amazon EC2、Amazon ECR、Amazon SNS和Amazon E CloudWatch vents，以满足获得相关政策的用户的责任要求。例如，该`AWSCodeBuildAdminAccess`策略是一项管理级别的用户策略，它允许拥有此策略的用户创建和管理项目构建 CloudWatch的事件规则，创建和管理有关项目相关事件（名称前缀为的主题`arn:aws:codebuild:`）通知的 Amazon SNS 主题，以及管理中的项目和报告组。 CodeBuild有关更多信息，请参阅《IAM 用户指南》**中的 [Amazon 托管式策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

您可以将以下 Amazon 托管策略附加到账户中的用户，这些策略是特定的 Amazon CodeBuild。

**AWSCodeBuildAdminAccess**  
提供 CodeBuild 包括管理 CodeBuild 构建项目的权限的完全访问权限。

**AWSCodeBuildDeveloperAccess**  
提供对构建项目管理的访问权限 CodeBuild ，但不允许进行编译项目管理。

**AWSCodeBuildReadOnlyAccess**  
提供对的只读访问权限 CodeBuild。

要访问 CodeBuild 创建的生成输出对象，还必须附加名为的 Amazon 托管策略`AmazonS3ReadOnlyAccess`。

要创建和管理 CodeBuild 服务角色，还必须附加名为的 Amazon 托管策略`IAMFullAccess`。

此外，您还可以创建您自己的自定义 IAM policy，以授予 CodeBuild 操作和资源的相关权限。您可以将这些自定义策略附加到需要这些权限的 用户或组。

**Topics**
+ [AWSCodeBuildAdminAccess](#admin-access-policy)
+ [AWSCodeBuildDeveloperAccess](#developer-access-policy)
+ [AWSCodeBuildReadOnlyAccess](#read-only-access-policy)

### AWSCodeBuildAdminAccess
<a name="admin-access-policy"></a>

该`AWSCodeBuildAdminAccess`策略提供对的完全访问权限 CodeBuild，包括管理 CodeBuild 构建项目的权限。仅将此政策应用于管理员级别的用户，以授予他们对您 Amazon 账户中的 CodeBuild 项目、报告组和相关资源的完全控制权，包括删除项目和报告组的权限。

有关完整的托管策略，请参阅 IAM 托管策略参考[ AWSCodeBuildAdminAccess](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AWSCodeBuildAdminAccess.html)中的内容。

### AWSCodeBuildDeveloperAccess
<a name="developer-access-policy"></a>

该`AWSCodeBuildDeveloperAccess`政策允许访问所有功能以及与项目 CodeBuild 和报告组相关的资源。此政策不允许用户删除 CodeBuild 项目或报告组或其他 Amazon 服务（例如 CloudWatch 活动）中的相关资源。建议对大多数用户应用此策略。

有关完整的托管策略，请参阅 IAM 托管策略参考[ AWSCodeBuildDeveloperAccess](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AWSCodeBuildDeveloperAccess.html)中的内容。

### AWSCodeBuildReadOnlyAccess
<a name="read-only-access-policy"></a>

该`AWSCodeBuildReadOnlyAccess`政策授予对其他 Amazon 服务中的 CodeBuild 相关资源的只读访问权限。将此策略应用于可以查看和运行构建、查看项目和查看报告组但无法对它们作出任何更改的用户。

有关完整的托管策略，请参阅 IAM 托管策略参考[ AWSCodeBuildReadOnlyAccess](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AWSCodeBuildReadOnlyAccess.xml)中的内容。

## CodeBuild 托管策略和通知
<a name="notifications-permissions"></a>

CodeBuild 支持通知，它可以将构建项目的重要更改通知用户。的托管策略 CodeBuild 包括通知功能的策略声明。有关更多信息，请参阅[什么是通知？](https://docs.amazonaws.cn/codestar-notifications/latest/userguide/welcome.html)。

### 只读托管策略中的通知的相关权限
<a name="notifications-readonly"></a>

`AWSCodeBuildReadOnlyAccess` 托管策略包含以下语句，以允许对通知进行只读访问。应用此托管策略的用户可以查看资源的通知，但无法创建、管理或订阅这些通知。

```
   {
        "Sid": "CodeStarNotificationsPowerUserAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:DescribeNotificationRule"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*:*:project/*"}
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListEventTypes",
            "codestar-notifications:ListTargets"
        ],
        "Resource": "*"
    }
```

### 其他托管策略中的通知的相关权限
<a name="notifications-otheraccess"></a>

`AWSCodeBuildDeveloperAccess` 托管策略包含以下语句，以允许用户创建、编辑和订阅通知。用户无法删除通知规则或管理资源的标签。

```
    {
        "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:codebuild:*:*:project/*"}
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "SNSTopicListAccess",
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

有关 IAM 和通知的更多信息，请参阅[用于 AWS CodeStar 通知的 Identity and Access Management](https://docs.amazonaws.cn/codestar-notifications/latest/userguide/security-iam.html)。

## CodeBuild 更新到 Amazon 托管策略
<a name="security-iam-awsmanpol-updates"></a>

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




| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
| `AWSCodeBuildAdminAccess` 和 `AWSCodeBuildDeveloperAccess` – 现有策略的更新 | CodeBuild 为这些策略添加了`ssmmessages:OpenDataChannel`权限以支持会话管理器交互式编译调试。<br />`AWSCodeBuildAdminAccess`和`AWSCodeBuildDeveloperAccess`策略现在包括会话管理器会话资源 (`arn:aws:ssm:*:*:session/*`) 的`ssmmessages:OpenDataChannel`操作，以支持在此 WebSocket API 上执行 SigV4。 | 2025 年 12 月 1 日 | 
| `AWSCodeBuildAdminAccess`、`AWSCodeBuildDeveloperAccess` 和 `AWSCodeBuildReadOnlyAccess` – 现有策略更新 | CodeBuild 更新了这些政策的资源。<br />`AWSCodeBuildAdminAccess`、`AWSCodeBuildDeveloperAccess` 和 `AWSCodeBuildReadOnlyAccess` 策略已更改为更新一个现有资源。原始资源 `arn:aws:codebuild:*` 已更新为 `arn:aws:codebuild:*:*:project/*`。 | 2024 年 11 月 15 日 | 
| `AWSCodeBuildAdminAccess`、`AWSCodeBuildDeveloperAccess` 和 `AWSCodeBuildReadOnlyAccess` – 现有策略更新 | CodeBuild 为这些政策添加了资源以支持 Amazon CodeConnections 品牌重塑。<br />`AWSCodeBuildAdminAccess`、`AWSCodeBuildDeveloperAccess` 和 `AWSCodeBuildReadOnlyAccess` 策略已更改为添加一项资源，`arn:aws:codeconnections:*:*:*`。 | 2024 年 4 月 18 日 | 
| `AWSCodeBuildAdminAccess` 和 `AWSCodeBuildDeveloperAccess` – 现有策略更新 | CodeBuild 为这些政策添加了权限，以支持在聊天应用程序中使用 Amazon Q Developer 的其他通知类型。<br />`AWSCodeBuildAdminAccess` 和 `AWSCodeBuildDeveloperAccess` 策略已经过更改，来添加权限 `chatbot:ListMicrosoftTeamsChannelConfigurations`。 | 2023 年 5 月 16 日 | 
| CodeBuild 已开始跟踪更改 | CodeBuild 开始跟踪其 Amazon 托管策略的更改。 | 2023 年 5 月 16 日 | 

## Customer-managed 政策示例
<a name="customer-managed-policies"></a>

本节的用户策略示例介绍如何授予执行 Amazon CodeBuild 操作的权限。这些策略在您使用 CodeBuild API、 Amazon SDK 或 Amazon CLI时起作用。当您使用控制台时，您必须授予特定于控制台的其他权限。有关信息，请参阅[使用所需的权限 Amazon CodeBuild 控制台](#console-permissions)。

您可以使用以下示例 IAM 策略来限制您的用户和角色的 CodeBuild 访问权限。

**Topics**
+ [允许用户获取有关构建项目的信息](#customer-managed-policies-example-batch-get-projects)
+ [允许用户获取有关实例集的信息](#customer-managed-policies-get-information-about-fleets)
+ [允许用户获取有关报告组的信息](#customer-managed-policies-get-information-about-report-group)
+ [允许用户获取有关报告的信息](#customer-managed-policies-get-information-about-reports)
+ [允许用户创建构建项目](#customer-managed-policies-example-create-project)
+ [允许用户创建实例集](#customer-managed-policies-example-create-fleet)
+ [允许用户创建报告组](#customer-managed-policies-example-create-report-group)
+ [允许用户删除实例集](#customer-managed-policies-example-delete-fleet)
+ [允许用户删除报告组](#customer-managed-policies-example-delete-report-group)
+ [允许用户删除报告](#customer-managed-policies-example-delete-report)
+ [允许用户删除构建项目](#customer-managed-policies-example-delete-project)
+ [允许用户获取构建项目名称的列表](#customer-managed-policies-example-list-projects)
+ [允许用户更改有关构建项目的信息](#customer-managed-policies-example-update-project)
+ [允许用户更改实例集](#customer-managed-policies-example-change-fleet)
+ [允许用户更改报告组](#customer-managed-policies-example-change-report-group)
+ [允许用户获取有关构建的信息](#customer-managed-policies-example-batch-get-builds)
+ [允许用户获取构建项目的构建 ID 的列表](#customer-managed-policies-example-list-builds-for-project)
+ [允许用户获取构建 ID 的列表](#customer-managed-policies-example-list-builds)
+ [允许用户获取实例集列表](#customer-managed-policies-example-get-list-of-fleets)
+ [允许用户获取报告组列表](#customer-managed-policies-example-get-list-of-report-groups)
+ [允许用户获取报告列表](#customer-managed-policies-example-get-list-of-reports)
+ [允许用户获取报告组的报告列表](#customer-managed-policies-example-get-list-of-reports-for-report-group)
+ [允许用户获取报告的测试用例的列表](#customer-managed-policies-example-get-list-of-test-cases-for-report)
+ [允许用户开始运行构建](#customer-managed-policies-example-start-build)
+ [允许用户尝试停止构建](#customer-managed-policies-example-stop-build)
+ [允许用户尝试删除构建](#customer-managed-policies-example-delete-builds)
+ [允许用户获取有关由管理的 Docker 镜像的信息 CodeBuild](#customer-managed-policies-example-list-curated-environment-images)
+ [允许用户为实例集服务角色添加权限策略](#customer-managed-policies-example-permission-policy-fleet-service-role)
+ [允许 CodeBuild 访问 Amazon 创建 VPC 网络接口所需的服务](#customer-managed-policies-example-create-vpc-network-interface)
+ [使用拒绝语句来防止 Amazon CodeBuild 避免断开与源提供商的连接](#customer-managed-policies-example-deny-disconnect)

### 允许用户获取有关构建项目的信息
<a name="customer-managed-policies-example-batch-get-projects"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取任何以名称 `my` 开头的构建项目的信息：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetProjects",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my*"      
    }
  ]
}
```

------

### 允许用户获取有关实例集的信息
<a name="customer-managed-policies-get-information-about-fleets"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取有关实例集的信息：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetFleets",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:fleet/*"
    }
  ]
}
```

------

### 允许用户获取有关报告组的信息
<a name="customer-managed-policies-get-information-about-report-group"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取有关报告组的信息：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetReportGroups",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:report-group/*"
    }
  ]
}
```

------

### 允许用户获取有关报告的信息
<a name="customer-managed-policies-get-information-about-reports"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取有关报告的信息：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetReports",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:report-group/*"
    }
  ]
}
```

------

### 允许用户创建构建项目
<a name="customer-managed-policies-example-create-project"></a>

以下示例政策声明允许用户使用任何名称创建构建项目，但只能在账户`us-east-2`区域中创建构建项目，`123456789012`并且只能使用指定的 CodeBuild 服务角色：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateProject",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::{{111122223333}}:role/CodeBuildServiceRole"
    }
  ]
}
```

------

以下示例政策声明允许用户使用任何名称创建构建项目，但只能在账户`us-east-2`区域中创建构建项目，`123456789012`并且只能使用指定的 CodeBuild 服务角色。它还强制用户只能将指定的服务角色与任何其他服务一起使用 Amazon CodeBuild ，不能使用任何其他 Amazon 服务。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateProject",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::{{111122223333}}:role/CodeBuildServiceRole",
      "Condition": {
          "StringEquals": {"iam:PassedToService": "codebuild.amazonaws.com"}
      }
    }
  ]
}
```

------

### 允许用户创建实例集
<a name="customer-managed-policies-example-create-fleet"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中创建实例集：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateFleet",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:fleet/*"
    }
  ]
}
```

------

### 允许用户创建报告组
<a name="customer-managed-policies-example-create-report-group"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中创建报告组：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:report-group/*"
    }
  ]
}
```

------

### 允许用户删除实例集
<a name="customer-managed-policies-example-delete-fleet"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中删除实例集：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteFleet",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:fleet/*"
    }
  ]
}
```

------

### 允许用户删除报告组
<a name="customer-managed-policies-example-delete-report-group"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中删除报告组：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:report-group/*"
    }
  ]
}
```

------

### 允许用户删除报告
<a name="customer-managed-policies-example-delete-report"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中删除报告：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteReport",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:report-group/*"
    }
  ]
}
```

------

### 允许用户删除构建项目
<a name="customer-managed-policies-example-delete-project"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中删除任何以名称 `my` 开头的构建项目：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteProject",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my*"
    }
  ]
}
```

------

### 允许用户获取构建项目名称的列表
<a name="customer-managed-policies-example-list-projects"></a>

以下示例策略语句允许用户获取同一账户的构建项目名称的列表：

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

****  

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

------

### 允许用户更改有关构建项目的信息
<a name="customer-managed-policies-example-update-project"></a>

以下示例策略语句仅允许用户在 `123456789012` 账户的 `us-east-2` 区域中更改有关使用任何名称的构建项目的信息，并且只能使用指定的 Amazon CodeBuild 服务角色：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateProject",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::{{111122223333}}:role/CodeBuildServiceRole"
    }
  ]
}
```

------

### 允许用户更改实例集
<a name="customer-managed-policies-example-change-fleet"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中更改实例集：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateFleet",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:fleet/*"
    }
  ]
}
```

------

### 允许用户更改报告组
<a name="customer-managed-policies-example-change-report-group"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中更改报告组：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:report-group/*"
    }
  ]
}
```

------

### 允许用户获取有关构建的信息
<a name="customer-managed-policies-example-batch-get-builds"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取名为 `my-build-project` 和 `my-other-build-project` 的构建项目的信息：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetBuilds",
      "Resource": [
        "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my-build-project",
        "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my-other-build-project"
      ]
    }
  ]
}
```

------

### 允许用户获取构建项目的构建 ID 的列表
<a name="customer-managed-policies-example-list-builds-for-project"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取名为 `my-build-project` 和 `my-other-build-project` 的构建项目的构建 ID 列表：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListBuildsForProject",
      "Resource": [
        "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my-build-project",
        "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my-other-build-project"
      ]
    }
  ]
}
```

------

### 允许用户获取构建 ID 的列表
<a name="customer-managed-policies-example-list-builds"></a>

以下示例策略语句允许用户获取同一账户的所有构建 ID 的列表：

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

****  

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

------

### 允许用户获取实例集列表
<a name="customer-managed-policies-example-get-list-of-fleets"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取有关实例集的列表：

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

****  

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

------

### 允许用户获取报告组列表
<a name="customer-managed-policies-example-get-list-of-report-groups"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取有关报告组的列表：

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

****  

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

------

### 允许用户获取报告列表
<a name="customer-managed-policies-example-get-list-of-reports"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取有关报告的列表：

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

****  

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

------

### 允许用户获取报告组的报告列表
<a name="customer-managed-policies-example-get-list-of-reports-for-report-group"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取报告组的报告列表：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListReportsForReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:report-group/*"
    }
  ]
}
```

------

### 允许用户获取报告的测试用例的列表
<a name="customer-managed-policies-example-get-list-of-test-cases-for-report"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中获取报告的测试用例列表：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DescribeTestCases",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:report-group/*"
    }
  ]
}
```

------

### 允许用户开始运行构建
<a name="customer-managed-policies-example-start-build"></a>

以下示例策略语句允许用户在 `123456789012` 账户的 `us-east-2` 区域中运行任何以名称 `my` 开头的构建项目：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:StartBuild",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my*"
    }
  ]
}
```

------

### 允许用户尝试停止构建
<a name="customer-managed-policies-example-stop-build"></a>

以下示例策略语句仅允许用户在 `123456789012` 账户的 `us-east-2` 区域中尝试停止任何以名称 `my` 开头的运行中构建项目：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:StopBuild",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my*"
    }
  ]
}
```

------

### 允许用户尝试删除构建
<a name="customer-managed-policies-example-delete-builds"></a>

以下示例策略语句仅允许用户在 `123456789012` 账户的 `us-east-2` 区域中尝试为任何以名称 `my` 开头的构建项目删除构建：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchDeleteBuilds",
      "Resource": "arn:aws:codebuild:us-east-2:{{111122223333}}:project/my*"
    }
  ]
}
```

------

### 允许用户获取有关由管理的 Docker 镜像的信息 CodeBuild
<a name="customer-managed-policies-example-list-curated-environment-images"></a>

以下示例策略语句允许用户获取有关由 CodeBuild 管理的所有 Docker 映像的信息：

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

****  

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

------

### 允许用户为实例集服务角色添加权限策略
<a name="customer-managed-policies-example-permission-policy-fleet-service-role"></a>

以下示例资源策略语句允许用户为实例集服务角色添加 VPC 权限策略：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeBuildFleetVpcCreateNI",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface"
            ],
            "Resource": [
                "arn:aws:ec2:{{us-west-2}}:{{111122223333}}:subnet/subnet-id-1",
                "arn:aws:ec2:{{us-west-2}}:{{111122223333}}:security-group/security-group-id-1",
                "arn:aws:ec2:{{us-west-2}}:{{111122223333}}:network-interface/*"
            ]
        },
        {
            "Sid": "CodeBuildFleetVpcPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CodeBuildFleetVpcNIPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterfacePermission"
            ],
            "Resource": "arn:aws:ec2:{{us-west-2}}:{{111122223333}}:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:Subnet": [
                        "arn:aws:ec2:{{us-west-2}}:{{111122223333}}:subnet/subnet-id-1"
                    ]
                }
            }
        }
    ]
}
```

------

以下示例资源策略语句允许用户为实例集服务角色添加自定义 Amazon 托管的映像（AMI）权限策略：

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

****  

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

------

以下示例信任策略语句允许用户为实例集服务角色添加权限策略：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CodeBuildFleetVPCTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "codebuild.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{{111122223333}}"
        }
      }
    }
  ]
}
```

------

### 允许 CodeBuild 访问 Amazon 创建 VPC 网络接口所需的服务
<a name="customer-managed-policies-example-create-vpc-network-interface"></a>

以下示例策略声明 Amazon CodeBuild 授予在具有两个子网的 VPC 中创建网络接口的权限：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterfacePermission"
            ],
            "Resource": "arn:aws:ec2:{{us-west-2}}:{{111122223333}}:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:AuthorizedService": "codebuild.amazonaws.com"
                },
                "ArnEquals": {
                    "ec2:Subnet": [
                        "arn:aws:ec2:{{us-west-2}}:{{111122223333}}:subnet/subnet-id-1",
                        "arn:aws:ec2:{{us-west-2}}:{{111122223333}}:subnet/subnet-id-2"
                    ]
                }
            }
        }
    ]
}
```

------

### 使用拒绝语句来防止 Amazon CodeBuild 避免断开与源提供商的连接
<a name="customer-managed-policies-example-deny-disconnect"></a>

 以下示例策略语句使用 Deny 语句阻止 Amazon CodeBuild 与源提供商断开连接。它使用 `codebuild:DeleteOAuthToken`（`codebuild:PersistOAuthToken` 和 `codebuild:ImportSourceCredentials` 的倒数）连接到源提供商。有关更多信息，请参阅 [所需的权限 Amazon CodeBuild 用于连接源提供商的控制台](#console-policies)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "codebuild:DeleteOAuthToken",
      "Resource": "*"
    }
  ]
}
```

------