

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

# 允许用户与之互动 CodeBuild
<a name="setting-up-service-permissions-group"></a>

如果您按照中的[通过控制台开始使用](getting-started-overview.md#getting-started)步骤 Amazon CodeBuild 进行首次访问，则很可能不需要本主题中的信息。但是，当您继续使用时 CodeBuild，您可能需要做一些事情，例如让组织中的其他用户和群组能够与之交互 CodeBuild。

要允许 IAM 用户或群组与之交互 Amazon CodeBuild，您必须向他们授予访问权限 CodeBuild。本节介绍了如何使用 IAM 控制台或 Amazon CLI完成此操作。

如果您要 CodeBuild 使用 Amazon 根账户（不推荐）或 Amazon 账户中的管理员用户进行访问，则无需按照以下说明进行操作。

有关 Amazon 根账户和管理员用户的信息，请参阅用户指南[[中的 Amazon Web Services 账户 root 用户](https://docs.amazonaws.cn/IAM/latest/UserGuide/getting-started_create-admin-group.html)和](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_root-user.html)创建您的第一个 Amazon Web Services 账户 root * 用户和群组*。<a name="setting-up-service-permissions-group-console"></a>

**向 IAM 群组或用户添加 CodeBuild 访问权限（控制台）**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 打开 IAM 控制台。

   您应该已经使用以下任一 Amazon Web Services 管理控制台 方式登录了：
   + 您的 Amazon 根账号。我们不建议这么做。有关更多信息，请参阅《用户指南》**中的 [Amazon Web Services 账户 根用户](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_root-user.html)。
   + 您 Amazon 账户中的管理员用户。有关更多信息，请参阅用户指南[中的](https://docs.amazonaws.cn/IAM/latest/UserGuide/getting-started_create-admin-group.html)创建您的第一个 Amazon Web Services 账户 root * 用户和群组*。
   + 您 Amazon 账户中有权执行以下最低限度操作的用户：

     ```
     iam:AttachGroupPolicy
     iam:AttachUserPolicy
     iam:CreatePolicy
     iam:ListAttachedGroupPolicies
     iam:ListAttachedUserPolicies
     iam:ListGroups
     iam:ListPolicies
     iam:ListUsers
     ```

     有关更多信息，请参阅《用户指南》**中的 [IAM 策略概述](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies.html)。

1. 在导航窗格中，选择**策略**。

1. 要向 IAM 群组或 IAM 用户添加一组自定义 Amazon CodeBuild 访问权限，请直接跳至本过程中的步骤 4。

   要向 IAM 群组或 IAM 用户添加一组默认 CodeBuild 访问权限，请选择**策略类型****、**Amazon 托管，然后执行以下操作：
   + 要向添加完全访问权限 CodeBuild，请选中名为的复选框 ** AWSCodeBuildAdminAccess**，选择 “**策略操作”**，然后选择 “**附加” **。选中目标 IAM 组或用户旁的框，然后选择**附加策略**。对名为 **AmazonS3ReadOnlyAccess** 和 **IAMFullAccess** 的策略重复执行此操作。
   + 要 CodeBuild 为除构建项目管理之外的所有内容添加访问权限，请选中名为的复选框 ** AWSCodeBuildDeveloperAccess**，选择 “**策略操作”**，然后选择 “**附加” **。选中目标 IAM 组或用户旁的框，然后选择**附加策略**。对名为 **AmazonS3ReadOnlyAccess** 的策略重复执行此操作。
   + 要向添加只读访问权限 CodeBuild，请选中名为的复选框**AWSCodeBuildReadOnlyAccess**。选中目标 IAM 组或用户旁的框，然后选择**附加策略**。对名为 **AmazonS3ReadOnlyAccess** 的策略重复执行此操作。

   现在，您已向 IAM 群组或用户添加了一组默认 CodeBuild 访问权限。跳过此过程中的其余步骤。

1. 请选择**创建策略**。

1. 在**创建策略**页面上的**创建您自己的策略**旁，选择**选择**。

1. 在**审查策略**页面上，为**策略名称**输入策略的名称（例如，**CodeBuildAccessPolicy**）。如果您使用其他名称，请确保在本过程中始终使用它。

1. 对于**策略文档**，输入以下内容，然后选择**创建策略**。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CodeBuildAccessPolicy",
               "Effect": "Allow",
               "Action": [
                   "codebuild:*"
               ],
               "Resource": "*"
           },
           {
               "Sid": "CodeBuildRolePolicy",
               "Effect": "Allow",
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::{{111122223333}}:role/{{role-name}}"
           },
           {
               "Sid": "CloudWatchLogsAccessPolicy",
               "Effect": "Allow",
               "Action": [
                   "logs:FilterLogEvents",
                   "logs:GetLogEvents"
               ],
               "Resource": "*"
           },
           {
               "Sid": "S3AccessPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:CreateBucket",
                   "s3:GetObject",
                   "s3:List*",
                   "s3:PutObject"
               ],
               "Resource": "*"
           },
           {
               "Sid": "S3BucketIdentity",
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**注意**  
此策略允许访问所有 CodeBuild 操作和可能的大量 Amazon 资源。要限制特定 CodeBuild操作的权限，请更改 CodeBuild 政策声明`codebuild:*`中的值。有关更多信息，请参阅 [Identity and access management](auth-and-access-control.md)。要限制对特定 Amazon 资源的访问权限，请更改`Resource`对象的值。有关更多信息，请参阅 [Identity and access management](auth-and-access-control.md)。

1. 在导航窗格中，选择**组**或**用户**。

1. 在群组或用户列表中，选择要添加 CodeBuild 访问权限的 IAM 群组或 IAM 用户的名称。

1. 对于组，在组设置页面上的**权限**选项卡上，展开**托管策略**，然后选择**附加策略**。

   对于用户，在用户设置页面上的**权限**选项卡上，选择**添加权限**。

1. 对于群组，在 “**连接策略” ** 页面上，选择 ** CodeBuildAccessPolicy**，然后选择 “**连接策略” **。

   对于用户，在**添加权限**页面上，选择**直接附加现有策略**。选择 ** CodeBuildAccessPolicy**，选择 “**下一步：审阅”**，然后选择 “**添加权限” **。<a name="setting-up-service-permissions-group-cli"></a>

**为 IAM 群组或用户添加 CodeBuild 访问权限 (Amazon CLI)**

1. 如前面的过程所述，确保您已 Amazon 使用 Amazon CLI 与其中一个 IAM 实体对应的访问 Amazon 密钥和私有访问密钥进行配置。有关更多信息，请参阅《 Amazon Command Line Interface用户指南》中的[开始设置Amazon Command Line Interface](https://docs.amazonaws.cn/cli/latest/userguide/cli-chap-getting-set-up.html)。

1. 要向 IAM 群组或 IAM 用户添加一组自定义 Amazon CodeBuild 访问权限，请跳到本过程中的步骤 3。

   要向 IAM 群组或 IAM 用户添加一组默认 CodeBuild 访问权限，请执行以下操作：

   运行以下任一命令，具体取决于您是否要为 IAM 组或用户添加权限：

   ```
   aws iam attach-group-policy --group-name {{group-name}} --policy-arn {{policy-arn}}
   
   aws iam attach-user-policy --user-name {{user-name}} --policy-arn {{policy-arn}}
   ```

   您必须运行该命令三次，将{{group-name}}或{{user-name}}替换为 IAM 组名称或用户名，并为以下每项策略 Amazon 资源名称 (ARN) 替换{{policy-arn}}一次：
   + 要向添加完全访问权限 CodeBuild，请使用以下策略 ARN：
     + `arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess`
     + `arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess`
     + `arn:aws:iam::aws:policy/IAMFullAccess`
   + 要 CodeBuild 为除构建项目管理之外的所有内容添加访问权限，请使用以下策略 ARN：
     + `arn:aws:iam::aws:policy/AWSCodeBuildDeveloperAccess`
     + `arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess`
   + 要向添加只读访问权限 CodeBuild，请使用以下策略 ARN：
     + `arn:aws:iam::aws:policy/AWSCodeBuildReadOnlyAccess`
     + `arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess`

   现在，您已向 IAM 群组或用户添加了一组默认 CodeBuild 访问权限。跳过此过程中的其余步骤。

1. 在安装的本地工作站或实例的空目录中 Amazon CLI ，创建名为`put-group-policy.json`或的文件`put-user-policy.json`。如果您使用其他文件名，请确保在本过程中始终使用它。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CodeBuildAccessPolicy",
               "Effect": "Allow",
               "Action": [
                   "codebuild:*"
               ],
               "Resource": "*"
           },
           {
               "Sid": "CodeBuildRolePolicy",
               "Effect": "Allow",
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::{{111122223333}}:role/{{role-name}}"
           },
           {
               "Sid": "CloudWatchLogsAccessPolicy",
               "Effect": "Allow",
               "Action": [
                   "logs:FilterLogEvents",
                   "logs:GetLogEvents"
               ],
               "Resource": "*"
           },
           {
               "Sid": "S3AccessPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:CreateBucket",
                   "s3:GetObject",
                   "s3:List*",
                   "s3:PutObject"
               ],
               "Resource": "*"
           },
           {
               "Sid": "S3BucketIdentity",
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**注意**  
此策略允许访问所有 CodeBuild 操作和可能的大量 Amazon 资源。要限制特定 CodeBuild操作的权限，请更改 CodeBuild 政策声明`codebuild:*`中的值。有关更多信息，请参阅 [Identity and access management](auth-and-access-control.md)。要限制对特定 Amazon 资源的访问权限，请更改相关`Resource`对象的值。有关更多信息，请参阅[Identity and access management](auth-and-access-control.md)或特定 Amazon 服务的安全文档。

1. 切换到您保存该文件的目录，然后运行以下任一命令。您可以为 `CodeBuildGroupAccessPolicy` 和 `CodeBuildUserAccessPolicy` 使用不同的值。如果您使用其他值，请确保在此处使用它们。

   对于 IAM 组：

   ```
   aws iam put-group-policy --group-name {{group-name}} --policy-name CodeBuildGroupAccessPolicy --policy-document file://put-group-policy.json
   ```

   对于用户：

   ```
   aws iam put-user-policy --user-name {{user-name}} --policy-name CodeBuildUserAccessPolicy --policy-document file://put-user-policy.json
   ```

   在前面的命令中，将{{group-name}}或{{user-name}}替换为目标 IAM 组或用户的名称。