管理 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 为每个操作使用的最低必需权限,请参阅相应的操作参考。

JSON
{ "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 Elastic Container Registry ECRBuildAndPublish 操作支持。请参阅服务角色权限:ECRBuildAndPublish 操作 2024 年 11 月 22 日
添加了 Amazon Inspector InspectorScan 操作支持。请参阅服务角色权限:InspectorScan 操作 2024 年 11 月 22 日
添加了 Commands 操作支持。请参阅服务角色权限:Commands 操作 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 Connections 操作支持。请参阅服务角色权限:CodeConnections 操作 2019 年 12 月 18 日
添加了 S3 部署操作支持。请参阅服务角色权限:S3 部署操作 2019 年 1 月 16 日
添加了 CodeDeployToECS 操作支持。请参阅服务角色权限:CodeDeployToECS 操作 2018 年 11 月 27 日
添加了 Amazon 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 管理控制台,然后通过以下网址打开 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. 选择查看策略以确保策略不包含错误。当策略正确无误时,选择应用策略