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

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

身分型政策 (IAM) 範例

您可以將原則附加至IAM身分識別。例如,您可以執行下列動作:

  • 權限原則附加至帳戶中的使用者或群組 — 若要授與使用者在 CodePipeline 主控台中檢視管道的權限,您可以將權限原則附加至使用者所屬的使用者或群組。

  • 權限原則附加至角色 (授與跨帳戶權限) — 您可以將以身分為基礎的權限原則附加至IAM角色,以授與跨帳戶權限。例如,帳戶 A 中的系統管理員可以建立角色,將跨帳戶權限授與另一個 AWS 帳戶 (例如,帳戶 B), AWS 服務 如下所示:

    1. 帳號系統管理員建立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 帳戶中的政策,可讓使用者檢視 (但不能變更) 在主控台中命名的管線。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角色,並將策略附加至該角色。在角色的信任關係中,您必須新增將擔任此角色的 AWS 帳戶。下列範例顯示允許使用者 111111111111 AWS 用於假設在 111222333444 帳戶中定義的角色的帳戶:

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

下列範例顯示在 111111111111 AWS 允許使用者承擔名為的角色的帳戶 CrossAccountPipelineViewers 在一二二三三四四四帳戶中:

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

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