本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CodePipeline
身分型政策範例
根據預設,IAM 使用者和角色沒有建立或修改 CodePipeline 資源的許可。他們也無法使用 AWS 管理主控台 AWS CLI或 AWS API 執行任務。IAM 管理員必須建立 IAM 政策,授予使用者和角色在指定資源上執行特定 API 作業的所需許可。管理員接著必須將這些政策連接至需要這些許可的 IAM 使用者或群組。
若要了解如何使用這些範例 JSON 原則文件建立 IAM 身分型原則,請參閱《IAM 使用者指南》中的在 JSON 標籤上建立原則。
若要了解如何建立使用其他帳戶資源的管道,以及相關範例政策,請參閱 在 CodePipeline 中建立使用其他 AWS 帳戶資源的管道。
客戶受管政策範例
在本節中,您可以找到授予各種 CodePipeline 動作許可的使用者政策範例。當您使用 CodePipeline API、 AWS SDKs或 時,這些政策即可運作 AWS CLI。當您使用主控台時,您必須對主控台授予特定的其他許可。如需詳細資訊,請參閱使用 CodePipeline 主控台所需的許可。
所有範例皆使用美國西部 (奧勒岡) 區域 (us-west-2) 及虛構帳戶 ID。
範例
範例 1:授予許可,取得管道的狀態
下列範例會授予許可,取得名為 MyFirstPipeline 的管道狀態:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:GetPipelineState"
],
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"
}
]
}
範例 2:授予許可,啟用和停用階段間的轉換
下列範例會授予許可,停用和啟用名為 MyFirstPipeline 的管道中所有階段間的轉換:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:DisableStageTransition",
"codepipeline:EnableStageTransition"
],
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*"
}
]
}
若要允許使用者停用和啟用管道中單一階段的轉換,您必須指定階段。例如,若要允許使用者在名為 MyFirstPipeline 的管道中,對名為 Staging 的階段啟用和停用轉換:
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging"
範例 3:授予許可,取得所有可用動作類型的清單
下列範例授予許可,以取得 us-west-2 區域中的管道可用的所有動作類型的清單:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:ListActionTypes"
],
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:actiontype:*"
}
]
}
範例 4:授予許可,核准或拒絕手動核准動作
下列範例授予許可,在名為 MyFirstPipeline 的管道中名為 Staging 階段內,核准或拒絕手動核准動作:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:PutApprovalResult"
],
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/Staging/*"
}
]
}
範例 5:授予許可,輪詢自訂動作的任務
下列範例授予許可,以輪詢名為 TestProvider 的自訂動作在所有管道中的任務,而該動作的第一個版本為 Test 動作類型:
自訂動作的任務工作者可以在不同的 AWS 帳戶下設定,或需要特定的 IAM 角色才能運作。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:PollForJobs"
],
"Resource": [
"arn:aws:codepipeline:us-west-2:111222333444:actionType:Custom/Test/TestProvider/1"
]
}
]
}
範例 6:連接或編輯 Jenkins 與 AWS CodePipeline 整合的政策
如果您將管道設定為使用 Jenkins 進行建置或測試,請為該整合建立單獨的身分,並連接具有 Jenkins 和 CodePipeline 之間整合所需最低許可的 IAM 政策。此政策與 AWSCodePipelineCustomActionAccess 受管政策相同。下列範例顯示 Jenkins 整合的政策:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:AcknowledgeJob",
"codepipeline:GetJobDetails",
"codepipeline:PollForJobs",
"codepipeline:PutJobFailureResult",
"codepipeline:PutJobSuccessResult"
],
"Resource": "*"
}
]
}
範例 7:設定管道的跨帳戶存取
您可以為另一個 AWS
帳戶中的使用者和群組設定管道存取。建議的方法是在建立管道的帳戶中建立角色。該角色應允許其他 AWS 帳戶的使用者擔任該角色並存取管道。如需詳細資訊,請參閱演練:使用角色進行跨帳戶存取。
下列範例顯示 80398EXAMPLE 帳戶中的政策,允許使用者在 CodePipeline 主控台MyFirstPipeline中檢視名為 的管道,但不能變更。此政策以 AWSCodePipeline_ReadOnlyAccess 受管政策為基礎,但因為是 MyFirstPipeline 管道所特有,因此無法直接使用受管政策。如果您不想將政策限制在特定管道,請考慮使用 CodePipeline 建立和維護的其中一個受管政策。如需詳細資訊,請參閱處理受管政策的相關文章。您必須將此政策連接至您為存取而建立的 IAM 角色,例如名為 的角色CrossAccountPipelineViewers:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codepipeline:GetPipeline",
"codepipeline:GetPipelineState",
"codepipeline:ListActionTypes",
"codepipeline:ListPipelines",
"iam:ListRoles",
"s3:GetBucketPolicy",
"s3:GetObject",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"codedeploy:GetApplication",
"codedeploy:GetDeploymentGroup",
"codedeploy:ListApplications",
"codedeploy:ListDeploymentGroups",
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEnvironments",
"lambda:GetFunctionConfiguration",
"lambda:ListFunctions"
],
"Resource": "arn:aws:codepipeline:us-east-2:111122223333:MyFirstPipeline"
}
]
}
建立此政策後,請在 80398EXAMPLE 帳戶中建立 IAM 角色,並將政策連接至該角色。在角色的信任關係中,您必須新增擔任此角色 AWS 的帳戶。
下列範例顯示在 111111111111 AWS 帳戶中建立的政策,允許使用者擔任 80398EXAMPLE 帳戶中名為 CrossAccountPipelineViewers 的角色:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::111122223333:role/CrossAccountPipelineViewers"
}
]
}