允许用户与 CodeBuild 进行交互
如果您首次按照通过控制台开始使用中的步骤操作来访问 AWS CodeBuild,则很可能不需要本主题中的信息。但随着您继续使用 CodeBuild,您可能想要执行一些操作,例如让您组织内的其他用户和组能够提供与 CodeBuild 进行交互。
要允许 IAM 用户或组与 AWS CodeBuild 交互,您必须向他们授予 CodeBuild 的访问权限。本节介绍了如何使用 IAM 控制台或 AWS CLI 完成此操作。
如果以 AWS 根账户(不推荐)或 AWS 账户中的管理员用户身份访问 CodeBuild,则无需遵循这些说明。
有关 AWS 根账户和管理员用户的信息,请参阅《用户指南》中的AWS 账户 根用户和创建您的第一个 AWS 账户 根用户和组。
为 IAM 组或用户添加 CodeBuild 访问权限(控制台)
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 您应该已使用以下任一身份登录到 AWS Management Console:
-
您的 AWS 根账户。我们不建议这么做。有关更多信息,请参阅《用户指南》中的 AWS 账户 根用户。
-
AWS 账户中的管理员用户。有关更多信息,请参阅《用户指南》中的创建您的第一个 AWS 账户 根用户和组。
-
AWS 账户中的用户,具有执行以下最基本操作的权限:
iam:AttachGroupPolicy iam:AttachUserPolicy iam:CreatePolicy iam:ListAttachedGroupPolicies iam:ListAttachedUserPolicies iam:ListGroups iam:ListPolicies iam:ListUsers
有关更多信息,请参阅《用户指南》中的 IAM 策略概述。
-
-
在导航窗格中,选择策略。
-
要为 IAM 组或 IAM 用户添加一组自定义的 AWS CodeBuild 访问权限,请向前跳到此过程的第 4 步。
要向 IAM 组或 IAM 用户添加一组默认的 CodeBuild 访问权限,请依次选择策略类型、AWS 托管,然后执行以下操作:
-
要添加 CodeBuild 的完全访问权限,请选中名为 AWSCodeBuildAdminAccess 的框,选择策略操作,然后选择附加。选中目标 IAM 组或用户旁的框,然后选择附加策略。对名为 AmazonS3ReadOnlyAccess 和 IAMFullAccess 的策略重复执行此操作。
-
要为除构建项目管理之外的所有内容添加对 CodeBuild 的访问权限,请选中名为 AWSCodeBuildDeveloperAccess 的框,然后依次选择策略操作和附加。选中目标 IAM 组或用户旁的框,然后选择附加策略。对名为 AmazonS3ReadOnlyAccess 的策略重复执行此操作。
-
要添加对 CodeBuild 的只读访问权限,请选中名为 AWSCodeBuildReadOnlyAccess 的框。选中目标 IAM 组或用户旁的框,然后选择附加策略。对名为 AmazonS3ReadOnlyAccess 的策略重复执行此操作。
现在,您已经为 IAM 组或用户添加了一组默认的 CodeBuild 访问权限。跳过此过程中的其余步骤。
-
-
请选择创建策略。
-
在创建策略页面上的创建您自己的策略旁,选择选择。
-
在审查策略页面上,为策略名称输入策略的名称(例如,
CodeBuildAccessPolicy
)。如果您使用其他名称,请确保在本过程中始终使用它。 -
对于策略文档,输入以下内容,然后选择创建策略。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildAccessPolicy", "Effect": "Allow", "Action": [ "codebuild:*" ], "Resource": "*" }, { "Sid": "CodeBuildRolePolicy", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::
account-ID
: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。要限制对特定 AWS 资源的访问权限,请更改Resource
对象的值。有关更多信息,请参阅 Identity and Access Management。 -
在导航窗格中,选择组或用户。
-
在组或用户列表中,选择要向其添加 CodeBuild 访问权限的 IAM 组或 IAM 用户的名称。
-
对于组,在组设置页面上的权限选项卡上,展开托管策略,然后选择附加策略。
对于用户,在用户设置页面上的权限选项卡上,选择添加权限。
-
对于组,在附加策略页面上,选择 CodeBuildAccessPolicy,然后选择附加策略。
对于用户,在添加权限页面上,选择直接附加现有策略。依次选择 CodeBuildAccessPolicy、下一步:审核和添加权限。
为 IAM 组或用户添加 CodeBuild 访问权限 (AWS CLI)
-
如前面的过程所述,确保您已为 AWS CLI 配置了与某个 IAM 实体相对应的 AWS 访问密钥和 AWS 秘密访问密钥。有关更多信息,请参阅《AWS Command Line Interface 用户指南》中的开始设置 AWS Command Line Interface。
-
要为 IAM 组或 IAM 用户添加一组自定义的 AWS CodeBuild 访问权限,请跳至本过程中的步骤 3。
要为 IAM 组或 IAM 用户添加一组默认的 CodeBuild 访问权限,请执行以下操作:
运行以下任一命令,具体取决于您是否要为 IAM 组或用户添加权限:
aws iam attach-group-policy --group-name
group-name
--policy-arnpolicy-arn
aws iam attach-user-policy --user-nameuser-name
--policy-arnpolicy-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 访问权限。跳过此过程中的其余步骤。
-
-
在安装 AWS CLI 的本地工作站或实例上的空目录中,创建名为
put-group-policy.json
或put-user-policy.json
的文件。如果您使用其他文件名,请确保在本过程中始终使用它。{ "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildAccessPolicy", "Effect": "Allow", "Action": [ "codebuild:*" ], "Resource": "*" }, { "Sid": "CodeBuildRolePolicy", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::
account-ID
: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。要限制对特定 AWS 资源的访问权限,请更改相关Resource
对象的值。有关更多信息,请参阅Identity and Access Management或特定 AWS 服务的安全文档。 -
切换到您保存该文件的目录,然后运行以下任一命令。您可以为
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 组或用户的名称。