

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   现在，您已向 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 操作和潜在的大量 AWS 资源。要将权限限制为特定 CodeBuild操作，请在 CodeBuild 策略声明`codebuild:*`中更改的值。有关更多信息，请参阅 [Identity and access management](auth-and-access-control.md)。要限制对特定 AWS 资源的访问权限，请更改`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 访问权限 (AWS CLI)**

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

1. 要向 IAM 群组或 IAM 用户添加一组自定义 AWS 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 组名或用户名，然后为以下每项策略替换*policy-arn*一次 Amazon Resource Names (ARNs)：
   + 要向添加完全访问权限 CodeBuild，请使用以下策略 ARNs：
     + `arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess`
     + `arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess`
     + `arn:aws:iam::aws:policy/IAMFullAccess`
   + 要 CodeBuild 为除生成项目管理之外的所有内容添加访问权限，请使用以下策略 ARNs：
     + `arn:aws:iam::aws:policy/AWSCodeBuildDeveloperAccess`
     + `arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess`
   + 要向添加只读访问权限 CodeBuild，请使用以下策略 ARNs：
     + `arn:aws:iam::aws:policy/AWSCodeBuildReadOnlyAccess`
     + `arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess`

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

1. 在安装的本地工作站或实例的空目录中 AWS 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 操作和潜在的大量 AWS 资源。要将权限限制为特定 CodeBuild操作，请在 CodeBuild 策略声明`codebuild:*`中更改的值。有关更多信息，请参阅 [Identity and access management](auth-and-access-control.md)。要限制对特定 AWS 资源的访问权限，请更改相关`Resource`对象的值。有关更多信息，请参阅[Identity and access management](auth-and-access-control.md)或特定 AWS 服务的安全文档。

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 组或用户的名称。