基于身份的策略 (IAM) 示例 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

基于身份的策略 (IAM) 示例

您可以向 IAM 身份附加策略。例如,您可以执行以下操作:

  • 将@@ 权限策略附加到您账户中的用户或群组-要授予用户在 CodePipeline 控制台中查看管道的权限,您可以将权限策略附加到该用户所属的用户或群组。

  • 向角色附加权限策略(授予跨帐户权限) – 您可以向 IAM 角色附加基于身份的权限策略,以授予跨帐户的权限。例如,账户 A 中的管理员可以创建一个角色来向另一个 Amazon 账户(例如账户 B)或授予跨账户权限, Amazon Web Service 如下所示:

    1. 账户 A 管理员可以创建一个 IAM 角色,然后向该角色附加授予其访问账户 A 中资源的权限策略。

    2. 账户 A 管理员可以把信任策略附加至用来标识账户 B 的角色,账户 B 由此可以作为主体代入该角色。

    3. 然后,账户 B 管理员可以将代入该角色的权限委托给账户 B 中的任何用户。这样,账户 B 中的用户就可以创建或访问账户 A 中的资源。如果您想授予担任该角色的 Amazon Web Service 权限,则信任策略中的 Amazon Web Service 委托人也可以是委托人。

    有关使用 IAM 委托权限的更多信息,请参阅 IAM 用户指南中的访问权限管理

下面显示了一个权限策略的示例,该策略可以授权启用和禁用 us-west-2 region 区域名为 MyFirstPipeline 的管道中所有阶段之间的转换:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codepipeline:EnableStageTransition", "codepipeline:DisableStageTransition" ], "Resource" : [ "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*" ] } ] }

以下示例显示了 111222333444 账户中的一项策略,该策略允许用户查看但不能更改控制台中命名的管道。MyFirstPipeline CodePipeline 该策略基于 AWSCodePipeline_ReadOnlyAccess 托管策略,但由于它特定于 MyFirstPipeline 管道,因此无法直接使用托管策略。如果您不想将策略限制在特定的管道中,请考虑使用由创建和维护的托管策略之一 CodePipeline。有关更多信息,请参阅使用管理的策略。您必须将该策略附加到您为进行访问而创建的 IAM 角色,例如名为 CrossAccountPipelineViewers 的角色:

{ "Statement": [ { "Action": [ "codepipeline:GetPipeline", "codepipeline:GetPipelineState", "codepipeline:GetPipelineExecution", "codepipeline:ListPipelineExecutions", "codepipeline:ListActionExecutions", "codepipeline:ListActionTypes", "codepipeline:ListPipelines", "codepipeline:ListTagsForResource", "iam:ListRoles", "s3:ListAllMyBuckets", "codecommit:ListRepositories", "codedeploy:ListApplications", "lambda:ListFunctions", "codestar-notifications:ListNotificationRules", "codestar-notifications:ListEventTypes", "codestar-notifications:ListTargets" ], "Effect": "Allow", "Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline" }, { "Action": [ "codepipeline:GetPipeline", "codepipeline:GetPipelineState", "codepipeline:GetPipelineExecution", "codepipeline:ListPipelineExecutions", "codepipeline:ListActionExecutions", "codepipeline:ListActionTypes", "codepipeline:ListPipelines", "codepipeline:ListTagsForResource", "iam:ListRoles", "s3:GetBucketPolicy", "s3:GetObject", "s3:ListBucket", "codecommit:ListBranches", "codedeploy:GetApplication", "codedeploy:GetDeploymentGroup", "codedeploy:ListDeploymentGroups", "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEnvironments", "lambda:GetFunctionConfiguration", "opsworks:DescribeApps", "opsworks:DescribeLayers", "opsworks:DescribeStacks" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "CodeStarNotificationsReadOnlyAccess", "Effect": "Allow", "Action": [ "codestar-notifications:DescribeNotificationRule" ], "Resource": "*", "Condition": { "StringLike": { "codestar-notifications:NotificationsForResource": "arn:aws:codepipeline:*" } } } ], "Version": "2012-10-17" }

创建此策略后,在 111222333444 账户中创建 IAM 角色,并将策略附加到该角色。在角色的信任关系中,您必须添加将担任此角色的 Amazon 账户。以下示例显示了一项策略,该策略允许来自 111111111111 账户的用户担任在 1112223334 Amazon 44 账户中定义的角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:root" }, "Action": "sts:AssumeRole" } ] }

以下示例显示了在 111111111111 账户中创建的策略,该策略允许用户代入 1112 22333444 Amazon 账户中指定的CrossAccountPipelineViewers角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111222333444:role/CrossAccountPipelineViewers" } ] }

您可以创建 IAM 策略来限制您账户中的用户有权访问的调用和资源,然后将这些策略与管理用户相关联。有关如何创建 IAM 角色以及浏览的 IAM 策略声明示例 CodePipeline,请参阅客户管理型策略示例