管理 CodePipeline 服务角色 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

管理 CodePipeline 服务角色

CodePipeline 服务角色配置了一个或多个策略,用于控制对管道所用 Amazon 资源的访问权限。您可能需要为该角色附加更多策略,编辑附加到该角色的策略,或者在中为其他服务角色配置策略 Amazon。在配置对管道的跨账户访问时,您可能还需要将策略附加到角色。

重要

修改策略语句或向角色附加其他策略可能会导致您的管道无法运行。在以任何方式修改的服务角色之前,请务必了解 CodePipeline 其含义。对服务角色进行任何更改后,确保测试管道。

注意

在控制台中,使用名称 oneClick_AWS-CodePipeline-Service_ID-Number 创建 2018 年 9 月之前创建的服务角色。

2018 年 9 月之后创建的服务角色使用服务角色名称格式 AWSCodePipelineServiceRole-Region-Pipeline_Name。例如,对于 eu-west-2 区域中名为 MyFirstPipeline 的管道,控制台会将角色和策略命名为 AWSCodePipelineServiceRole-eu-west-2-MyFirstPipeline

CodePipeline 服务角色策略

CodePipeline 服务角色策略声明包含管理管道的最低权限。您可以编辑服务角色语句以删除或添加对不使用的资源的访问权限。有关每个操作所需的最低权限 CodePipeline 使用情况,请参阅相应的操作参考。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3BucketAccess", "Effect": "Allow", "Action": [ "s3:GetBucketVersioning", "s3:GetBucketAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::[[pipeArtifactBucketNames]]" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" } } }, { "Sid": "AllowS3ObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectVersion", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::[[pipeArtifactBucketNames]]/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" } } } ] }
注意

在该策略中,当您的源存储桶中的 S3 对象中包含标签时,需要以下权限:

s3:PutObjectTagging s3:GetObjectTagging s3:GetObjectVersionTagging

从 CodePipeline 服务角色删除权限

您可以编辑服务角色语句以删除对不使用的资源的访问权限。例如,如果您的所有管道均不包括 Elastic Beanstalk,您可以编辑策略语句以移除授权访问 Elastic Beanstalk 资源的部分。

同样,如果您的所有管道都不包含 CodeDeploy,则可以编辑策略声明以删除授予 CodeDeploy 资源访问权限的部分:

{ "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetApplicationRevision", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:RegisterApplicationRevision" ], "Resource": "*", "Effect": "Allow" },

向 CodePipeline 服务角色添加权限

您必须使用尚未包含在默认服务角色策略语句中的 Amazon Web Services 服务 的权限更新服务角色策略语句,然后才能在管道中使用它。

如果您用于管道的服务角色是在向 CodePipeline 添加支持之前创建的,则这一点尤其重要 Amazon Web Services 服务。

下表显示了添加对其他 Amazon Web Services 服务的支持的时间。

Amazon Web Services 服务 CodePipeline 支持日期
CodePipeline 添加了调用操作支持。请参阅 CodePipeline 调用操作的服务角色策略权限 2025 年 3 月 14 日
EC2添加了动作支持。请参阅 EC2 部署操作的服务角色策略权限 2025年2月21日
EKS添加了动作支持。请参阅服务角色策略权限 2025 年 2 月 20 日
添加了 Amazon 弹性容器注册表ECRBuildAndPublish操作支持。请参阅服务角色权限:ECRBuildAndPublish操作 2024 年 11 月 22 日
添加了 Amaz InspectorScan on Inspector 操作支持。请参阅服务角色权限:InspectorScan操作 2024 年 11 月 22 日
添加了命令操作支持。请参阅服务角色权限:命令操作 2024 年 10 月 3 日
Amazon CloudFormation 添加了动作支持。请参阅 服务角色权限:CloudFormationStackSet操作服务角色权限:CloudFormationStackInstances操作 2020 年 12 月 30 日
CodeCommit 添加了对完整克隆输出构件格式操作的支持。请参阅服务角色权限: CodeCommit 操作 2020 年 11 月 11 日
CodeBuild 添加了批量生成操作支持。请参阅服务角色权限: CodeCommit 操作 2020 年 7 月 30 日
Amazon AppConfig 添加了操作支持。请参阅服务角色权限:AppConfig操作 2020 年 6 月 22 日
Amazon Step Functions 添加了动作支持。请参阅服务角色权限:StepFunctions操作 2020 年 5 月 27 日
AWS CodeStar 添加了连接操作支持。请参阅服务角色权限: CodeConnections操作 2019 年 12 月 18 日
添加了 S3 部署操作支持。请参阅服务角色权限:S3 部署操作 2019 年 1 月 16 日
添加了CodeDeployToECS动作动作支持。请参阅服务角色权限:CodeDeployToECS操作 2018 年 11 月 27 日
增加了亚马逊 ECR 操作支持。请参阅服务角色权限:Amazon ECR 操作 2018 年 11 月 27 日
添加了 Service Catalog 操作支持。请参阅服务角色权限:Service Catalog 操作 2018 年 10 月 16 日
Amazon Device Farm 添加了动作支持。请参阅服务角色权限: Amazon Device Farm 操作 2018 年 7 月 19 日
添加了 Amazon ECS 操作支持。请参阅服务角色权限:Amazon ECS 标准操作 2017 年 12 月 12 日/2017 年 7 月 21 日更新了选择加入标记授权的选项
CodeCommit 添加了动作支持。请参阅服务角色权限: CodeCommit 操作 2016 年 4 月 18 日
Amazon OpsWorks 添加了动作支持。请参阅服务角色权限: Amazon OpsWorks 操作 2016 年 6 月 2 日
Amazon CloudFormation 添加了动作支持。请参阅服务角色权限: Amazon CloudFormation 操作 2016 年 11 月 3 日
Amazon CodeBuild 添加了动作支持。请参阅服务角色权限: CodeBuild 操作 2016 年 12 月 1 日
添加了 Elastic Beanstalk 动作支持。请参阅服务角色权限:ElasticBeanstalk部署操作 首次服务发布
CodeDeploy 添加了动作支持。请参阅服务角色权限: Amazon CodeDeploy 操作 首次服务发布
添加了 S3 源操作支持。请参阅服务角色权限:S3 源操作 首次服务发布

请按照以下步骤添加受支持服务的权限:

  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/

  2. 在 IAM 角色控制台的导航窗格中,选择角色,然后从角色列表中选择您的 AWS-CodePipeline-Service 角色。

  3. 权限选项卡上的内联策略中,选择您的服务角色策略所在行中的编辑策略

  4. 策略文档框中添加所需权限。

    注意

    在您创建 IAM 策略时,请遵循授予最低权限这一标准安全建议,即仅授予执行任务所需的权限。某些 API 调用支持基于资源的权限并允许限制访问。例如,在这种情况下,要在调用 DescribeTasksListTasks 时限制权限,您可以将通配符(*)替换为资源 ARN 或包含通配符(*)的资源 ARN。有关创建策略以授予最低权限访问权限的更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#grant-least-privilege

  5. 选择查看策略以确保策略不包含错误。当策略正确无误时,选择应用策略