管理 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 服务角色删除权限

您可以编辑服务角色语句以删除对不使用的资源的访问权限。例如,如果您的所有管道均不包括 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 支持日期
EC2添加了动作支持。请参阅 EC2 部署操作的服务角色策略权限 2025年2月21日
CodePipeline 添加了调用操作支持。请参阅 CodePipeline 调用操作的服务角色策略权限 2025年3月14日
EKS添加了动作支持。请参阅 服务角色策略权限 2025 年 2 月 20 日
添加了 Amazon 弹性容器注册表ECRBuildAndPublish操作支持。请参阅 服务角色权限:ECRBuildAndPublish操作 2024 年 11 月 22 日
添加了 Amaz InspectorScan on Inspector 操作支持。请参阅 服务角色权限:InspectorScan操作 2024 年 11 月 22 日
添加了命令操作支持。请参阅 服务角色权限:Commands操作 2024 年 10 月 3 日
Amazon CloudFormation 添加了动作支持。请参阅 服务角色权限:CloudFormationStackSet操作服务角色权限:CloudFormationStackInstances操作 2020 年 12 月 30 日
CodeCommit 添加了对完整克隆输出构件格式操作的支持。请参阅 服务角色权限:完整克隆的 CodeCommit操作支持 2020 年 11 月 11 日
CodeBuild 添加了批量生成操作支持。请参阅 服务角色权限:批量构建的 CodeBuild 操作支持 2020 年 7 月 30 日
Amazon AppConfig添加了动作支持。请参阅 服务角色权限:AppConfig操作 2020 年 6 月 22 日
Amazon Step Functions 添加了动作支持。请参阅 服务角色权限:StepFunctions操作 2020 年 5 月 27 日
AWS CodeStar 添加了连接操作支持。请参阅 服务角色权限: CodeConnections操作 2019 年 12 月 18 日
添加了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部署操作 首次服务发布

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

  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. 选择查看策略以确保策略不包含错误。当策略正确无误时,选择应用策略

服务角色权限: CodeCommit操作

例如,为了获得 CodeCommit 支持,请在您的政策声明中添加以下内容:

{ "Effect": "Allow", "Action": [ "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:UploadArchive", "codecommit:GetUploadArchiveStatus", "codecommit:CancelUploadArchive" ], "Resource": "resource_ARN" },

有关此操作的更多信息,请参阅CodeCommit 源操作参考

服务角色权限: Amazon OpsWorks 操作

如需 Amazon OpsWorks 支持,请在您的政策声明中添加以下内容:

{ "Effect": "Allow", "Action": [ "opsworks:CreateDeployment", "opsworks:DescribeApps", "opsworks:DescribeCommands", "opsworks:DescribeDeployments", "opsworks:DescribeInstances", "opsworks:DescribeStacks", "opsworks:UpdateApp", "opsworks:UpdateStack" ], "Resource": "resource_ARN" },

服务角色权限: Amazon CloudFormation 操作

如需 Amazon CloudFormation 支持,请在您的政策声明中添加以下内容:

{ "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStacks", "cloudformation:UpdateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteChangeSet", "cloudformation:DescribeChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:SetStackPolicy", "cloudformation:ValidateTemplate", "iam:PassRole" ], "Resource": "resource_ARN" },

请注意,该 cloudformation:DescribeStackEvents 权限是可选的。它允许 Amazon CloudFormation 操作显示更详细的错误消息。如果您不希望资源详细信息出现在管道错误消息中,可以撤销 IAM 角色的此权限。有关更多信息,请参阅 Amazon CloudFormation 部署操作参考

注意

后来又添加了对批量构建的支持。有关向服务角色添加的批量构建权限,请参阅步骤 11。

服务角色权限: CodeBuild 操作

如需 CodeBuild 支持,请在您的政策声明中添加以下内容:

{ "Effect": "Allow", "Action": [ "codebuild:BatchGetBuilds", "codebuild:StartBuild" ], "Resource": "resource_ARN" },
注意

后来又添加了对批量构建的支持。有关向服务角色添加的批量构建权限,请参阅步骤 11。

有关此操作的更多信息,请参阅Amazon CodeBuild 生成和测试操作参考

服务角色权限: Amazon Device Farm 操作

如需 Amazon Device Farm 支持,请在您的政策声明中添加以下内容:

{ "Effect": "Allow", "Action": [ "devicefarm:ListProjects", "devicefarm:ListDevicePools", "devicefarm:GetRun", "devicefarm:GetUpload", "devicefarm:CreateUpload", "devicefarm:ScheduleRun" ], "Resource": "resource_ARN" },

有关此操作的更多信息,请参阅Amazon Device Farm 测试操作参考

服务角色权限:Service Catalog 操作

对于 Service Catalog 支持,请将以下内容添加到策略语句中:

{ "Effect": "Allow", "Action": [ "servicecatalog:ListProvisioningArtifacts", "servicecatalog:CreateProvisioningArtifact", "servicecatalog:DescribeProvisioningArtifact", "servicecatalog:DeleteProvisioningArtifact", "servicecatalog:UpdateProduct" ], "Resource": "resource_ARN" }, { "Effect": "Allow", "Action": [ "cloudformation:ValidateTemplate" ], "Resource": "resource_ARN" }

服务角色权限:Amazon ECR 操作

对于 Amazon ECR 支持,请将以下内容添加到策略语句中:

{ "Effect": "Allow", "Action": [ "ecr:DescribeImages" ], "Resource": "resource_ARN" },

有关此操作的更多信息,请参阅Amazon ECR 源操作参考

服务角色权限:Amazon ECS 标准操作

对于 Amazon ECS,以下是创建具有 Amazon ECS 部署操作的管道所需的最低权限。

{ "Effect": "Allow", "Action": [ "ecs:DescribeServices", "ecs:DescribeTaskDefinition", "ecs:DescribeTasks", "ecs:ListTasks", "ecs:RegisterTaskDefinition", "ecs:TagResource", "ecs:UpdateService" ], "Resource": "resource_ARN" },

您可以选择加入以使用 Amazon ECS 中的标记授权。选择加入后,您必须授予以下权限:ecs:TagResource。有关如何选择加入以及如何确定是否需要权限和是否强制执行标记授权的更多信息,请参阅《Amazon Elastic Container Service 开发者指南》中的标记授权时间表

您还必须添加 iam:PassRole 权限以使用任务 IAM 角色。有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色任务 IAM 角色。使用以下策略文本。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::aws_account_ID:role/ecsTaskExecutionRole_or_TaskRole_name" ] } ] }

有关此操作的更多信息,请参阅Amazon Elastic Container Service 部署操作参考

服务角色权限:CodeDeployToECS操作

对于CodeDeployToECS操作(blue/green deployments), the following are the minimum permissions needed to create pipelines with a CodeDeploy to Amazon ECS blue/green部署操作)。

{ "Effect": "Allow", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetApplication", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:GetDeploymentConfig", "ecs:RegisterTaskDefinition", "ecs:TagResource" ], "Resource": "resource_ARN" },

您可以选择加入以使用 Amazon ECS 中的标记授权。选择加入后,您必须授予以下权限:ecs:TagResource。有关如何选择加入以及如何确定是否需要权限和是否强制执行标记授权的更多信息,请参阅《Amazon Elastic Container Service 开发者指南》中的标记授权时间表

您还必须添加 iam:PassRole 权限以使用任务 IAM 角色。有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色任务 IAM 角色。使用以下策略文本。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::aws_account_ID:role/ecsTaskExecutionRole_or_TaskRole_name" ] } ] }

您还可以将 ecs-tasks.amazonaws.com 添加到 iam:PassedToService 条件下的服务列表中,如本示例所示。

{ "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "resource_ARN", "Condition": { "StringEqualsIfExists": { "iam:PassedToService": [ "cloudformation.amazonaws.com", "elasticbeanstalk.amazonaws.com", "ec2.amazonaws.com", "ecs-tasks.amazonaws.com" ] } } },

有关此操作的更多信息,请参阅Amazon 弹性容器服务和 CodeDeploy 蓝绿色部署操作参考

服务角色权限: CodeConnections操作

对于 CodeConnections,需要以下权限才能使用使用连接的源(例如 Bitbucket Cloud)创建管道。

{ "Effect": "Allow", "Action": [ "codeconnections:UseConnection" ], "Resource": "resource_ARN" },

有关连接的 IAM 权限的更多信息,请参阅连接权限参考

有关此操作的更多信息,请参阅CodeStarSourceConnection 适用于 Bitbucket Cloud GitHub、、 GitHub 企业服务器、 GitLab .com 和 GitLab 自我管理的操作

服务角色权限:StepFunctions操作

对于 StepFunctions 操作,需要以下最低权限才能创建具有 Step Functions 调用操作的管道。

{ "Effect": "Allow", "Action": [ "states:DescribeStateMachine", "states:DescribeExecution", "states:StartExecution" ], "Resource": "resource_ARN" },

有关此操作的更多信息,请参阅Amazon Step Functions 调用操作参考

服务角色权限:AppConfig操作

对于该AppConfig操作,以下是使用 Amazon AppConfig 调用操作创建管道所需的最低权限。

{ "Effect": "Allow", "Action": [ "appconfig:StartDeployment", "appconfig:GetDeployment", "appconfig:StopDeployment" ], "Resource": "resource_ARN" },

有关此操作的更多信息,请参阅Amazon AppConfig 部署操作参考

服务角色权限:批量构建的 CodeBuild 操作支持

要 CodeBuild 支持批量构建,请在您的政策声明中添加以下内容:

{ "Effect": "Allow", "Action": [ "codebuild:BatchGetBuildBatches", "codebuild:StartBuildBatch" ], "Resource": "resource_ARN" },

有关此操作的更多信息,请参阅Amazon CodeBuild 生成和测试操作参考

服务角色权限:CloudFormationStackSet操作

对于 Amazon CloudFormation StackSets 操作,需要以下最低权限。

对于 CloudFormationStackSet 操作,请将以下内容添加到策略语句中:

{ "Effect": "Allow", "Action": [ "cloudformation:CreateStackSet", "cloudformation:UpdateStackSet", "cloudformation:CreateStackInstances", "cloudformation:DescribeStackSetOperation", "cloudformation:DescribeStackSet", "cloudformation:ListStackInstances" ], "Resource": "resource_ARN" },

有关此操作的更多信息,请参阅Amazon CloudFormation StackSets 部署操作参考

服务角色权限:CloudFormationStackInstances操作

对于 CloudFormationStackInstances 操作,请将以下内容添加到策略语句中:

{ "Effect": "Allow", "Action": [ "cloudformation:CreateStackInstances", "cloudformation:DescribeStackSetOperation" ], "Resource": "resource_ARN" },

有关此操作的更多信息,请参阅Amazon CloudFormation StackSets 部署操作参考

服务角色权限:完整克隆的 CodeCommit操作支持

要 CodeCommit 支持完整克隆选项,请在您的政策声明中添加以下内容:

{ "Effect": "Allow", "Action": [ "codecommit:GetRepository" ], "Resource": "resource_ARN" },
注意

为确保您的 CodeBuild 操作可以对 CodeCommit源使用完全克隆选项,您还必须在策略声明中添加项目 CodeBuild 服务角色的codecommit:GitPull权限。

有关此操作的更多信息,请参阅CodeCommit 源操作参考

服务角色权限:ElasticBeanstalk部署操作

对于 Elastic Beanstalk,需要以下最低权限才能创建具有 ElasticBeanstalk 部署操作的管道。

{ "Effect": "Allow", "Action": [ "elasticbeanstalk:*", "ec2:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "s3:*", "sns:*", "cloudformation:*", "rds:*", "sqs:*", "ecs:*" ], "Resource": "resource_ARN" },
注意

您应将资源策略中的通配符替换为要限制访问的账户资源。有关创建策略以授予最低权限访问权限的更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#grant-least-privilege

服务角色权限: CloudWatch 记录操作

对于要为 CloudWatch 日志配置的管道,以下是您需要向 CodePipeline 服务角色添加的最低权限。

{ "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:PutRetentionPolicy" ], "Resource": "resource_ARN" },
注意

您应将资源策略中的通配符替换为要限制访问的账户资源。有关创建策略以授予最低权限访问权限的更多信息,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html#grant-least-privilege

服务角色权限:Commands操作

对于 Commands 操作支持,请将以下内容添加到策略声明中:

{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME", "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*" ] }
注意

在服务角色策略声明中使用基于资源的权限,将权限范围缩小到管道资源级别。有关更多信息,请参阅服务角色策略权限中的策略示例。

有关此操作的更多信息,请参阅Commands 操作参考

服务角色权限:ECRBuildAndPublish操作

要获得ECRBuildAndPublish操作支持,请在您的政策声明中添加以下内容:

{ "Statement": [ { "Sid": "ECRRepositoryAllResourcePolicy", "Effect": "Allow", "Action": [ "ecr:DescribeRepositories", "ecr:GetAuthorizationToken", "ecr-public:DescribeRepositories", "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload", "ecr:PutImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability" ], "Resource": "PrivateECR_Resource_ARN" }, { "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken", "ecr-public:DescribeRepositories", "ecr-public:InitiateLayerUpload", "ecr-public:UploadLayerPart", "ecr-public:CompleteLayerUpload", "ecr-public:PutImage", "ecr-public:BatchCheckLayerAvailability", "sts:GetServiceBearerToken" ], "Resource": "PublicECR_Resource_ARN" }, { "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" } ] }

此外,如果尚未为Commands操作添加以下权限,请向您的服务角色添加以下权限以查看 CloudWatch 日志。

{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "resource_ARN" },
注意

在服务角色策略声明中使用基于资源的权限,将权限范围缩小到管道资源级别。

有关此操作的更多信息,请参阅ECRBuildAndPublish构建操作参考

服务角色权限:InspectorScan操作

要获得InspectorScan操作支持,请在您的政策声明中添加以下内容:

{ "Effect": "Allow", "Action": "inspector-scan:ScanSbom", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "resource_ARN" },

此外,如果尚未为命令操作添加以下权限,请向您的服务角色添加以下权限以查看 CloudWatch 日志。

{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "resource_ARN" },
注意

在服务角色策略声明中使用基于资源的权限,将权限范围缩小到管道资源级别。

有关此操作的更多信息,请参阅亚马逊 Inspect InspectorScan or 调用操作参考