身分型政策 (IAM) 範例 - AWS CodePipeline

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

身分型政策 (IAM) 範例

您可以將政策連接至IAM身分。例如,您可以執行下列動作:

  • 將許可政策連接至您帳戶中的使用者或群組 – 若要授予使用者在 CodePipeline 主控台中檢視管道的許可,您可以將許可政策連接至使用者所屬的使用者或群組。

  • 將許可政策連接至角色 (授予跨帳戶許可) – 您可以將身分型許可政策連接至IAM角色,以授予跨帳戶許可。例如,帳戶 A 中的管理員可以建立角色,將跨帳戶許可授予另一個 AWS 帳戶 (例如帳戶 B) 或 AWS 服務 ,如下所示:

    1. 帳戶 A 管理員會建立IAM角色,並將許可政策附加至授予帳戶 A 中資源許可的角色。

    2. 帳戶 A 管理員將信任政策連接至該角色,識別帳戶 B 做為可擔任該角的委託人。

    3. 然後,帳戶 B 管理員可以將擔任角色的許可委派給帳戶 B 中的任何使用者。這樣做可讓帳戶 B 中的使用者在帳戶 A 中建立或存取資源。如果您想要授予擔任角色的 AWS 服務 許可,信任政策中的主體也可以是 AWS 服務 主體。

    如需使用 IAM 委派許可的詳細資訊,請參閱 IAM 使用者指南 中的存取管理

以下顯示許可政策的範例,授予許可,以停用和啟用 MyFirstPipeline 中名為 的管道中所有階段之間的轉換us-west-2 region

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

下列範例顯示 111222333444 帳戶中的政策,允許使用者檢視 CodePipeline 主控台MyFirstPipeline中名為 的管道,但不能變更。此政策以 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角色,並將政策連接至該角色。在角色的信任關係中,您必須新增將擔任此角色 AWS 的帳戶。下列範例顯示允許來自 的使用者的政策 111111111111 AWS 帳戶擔任 111222333444 帳戶中定義的角色:

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

下列範例顯示在 中建立的政策 111111111111 AWS 帳戶,允許使用者擔任名為 的角色 CrossAccountPipelineViewers 在 111222333444 帳戶中:

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

您可以建立IAM政策來限制您帳戶中使用者可存取的呼叫和資源,然後將這些政策連接至您的管理使用者。如需如何建立IAM角色和探索 範例IAM政策陳述式的詳細資訊 CodePipeline,請參閱 客戶受管政策範例