

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

# AWS CodePipeline 身分型政策範例
<a name="security_iam_id-based-policy-examples"></a>

根據預設，IAM 使用者和角色沒有建立或修改 CodePipeline 資源的許可。他們也無法使用 AWS 管理主控台 AWS CLI或 AWS API 執行任務。IAM 管理員必須建立 IAM 政策，授予使用者和角色在指定資源上執行特定 API 作業的所需許可。管理員接著必須將這些政策連接至需要這些許可的 IAM 使用者或群組。

若要了解如何使用這些範例 JSON 原則文件建立 IAM 身分型原則，請參閱《*IAM 使用者指南*》中的[在 JSON 標籤上建立原則](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)。

若要了解如何建立使用其他帳戶資源的管道，以及相關範例政策，請參閱 [在 CodePipeline 中建立使用其他 AWS 帳戶資源的管道](pipelines-create-cross-account.md)。

**Topics**
+ [政策最佳實務](security_iam_service-with-iam-policy-best-practices.md)
+ [在主控台檢視資源](security-iam-resources-console.md)
+ [允許使用者檢視他們自己的許可](security_iam_id-based-policy-examples-view-own-permissions.md)
+ [身分型政策 (IAM) 範例](security-iam-id-policies-examples.md)
+ [使用標籤控制 CodePipeline 資源的存取](tag-based-access-control.md)
+ [使用主控台所需的許可](security-iam-permissions-console.md)
+ [在主控台中檢視運算日誌所需的許可](security-iam-permissions-console-logs.md)
+ [AWS 的 受管政策 AWS CodePipeline](managed-policies.md)
+ [客戶管理政策範例](#customer-managed-policies)

## 客戶管理政策範例
<a name="customer-managed-policies"></a>

在本節中，您可以找到授予各種 動作之許可的使用者政策範例。這些政策會在您使用 API、 AWS SDKs或 時運作 AWS CLI。當您使用主控台時，您必須對主控台授予特定的其他許可。如需詳細資訊，請參閱[使用主控台所需的許可](security-iam-permissions-console.md)。

**注意**  
所有範例皆使用美國西部 (奧勒岡) 區域 (`us-west-2`) 及虛構帳戶 ID。

**範例**
+ [範例 1：授予許可，取得管道的狀態](#identity-based-policies-example-1)
+ [範例 2：授予許可，啟用和停用階段間的轉換](#identity-based-policies-example-2)
+ [範例 3：授予許可，取得所有可用動作類型的清單](#identity-based-policies-example-3)
+ [範例 4：授予許可，核准或拒絕手動核准動作](#identity-based-policies-example-4)
+ [範例 5：授予許可，輪詢自訂動作的任務](#identity-based-policies-example-5)
+ [範例 6：連接或編輯 Jenkins 與 AWS CodePipeline 整合的政策](#identity-based-policies-example-6)
+ [範例 7：設定管道的跨帳戶存取](#identity-based-policies-example-7)

### 範例 1：授予許可，取得管道的狀態
<a name="identity-based-policies-example-1"></a>

下列範例會授予許可，取得名為 `MyFirstPipeline` 的管道狀態：

------
#### [ JSON ]

****  

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

------

### 範例 2：授予許可，啟用和停用階段間的轉換
<a name="identity-based-policies-example-2"></a>

下列範例會授予許可，停用和啟用名為 `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：授予許可，取得所有可用動作類型的清單
<a name="identity-based-policies-example-3"></a>

下列範例授予許可，以取得 `us-west-2` 區域中的管道可用的所有動作類型的清單：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:ListActionTypes"
            ],
            "Resource": "arn:aws:codepipeline:us-west-2:111222333444:actiontype:*"
        }
    ]
}
```

------

### 範例 4：授予許可，核准或拒絕手動核准動作
<a name="identity-based-policies-example-4"></a>

下列範例授予許可，在名為 `MyFirstPipeline` 的管道中名為 `Staging` 階段內，核准或拒絕手動核准動作：

------
#### [ JSON ]

****  

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

------

### 範例 5：授予許可，輪詢自訂動作的任務
<a name="identity-based-policies-example-5"></a>

下列範例授予許可，以輪詢名為 `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 整合的政策
<a name="identity-based-policies-example-6"></a>

如果您將管道設定為使用 Jenkins 進行建置或測試，請為該整合建立單獨的身分，並連接具有 Jenkins 和 之間整合所需最低許可的 IAM 政策。此政策與 `AWSCodePipelineCustomActionAccess` 受管政策相同。下列範例顯示 Jenkins 整合的政策：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 

    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:AcknowledgeJob",
                "codepipeline:GetJobDetails",
                "codepipeline:PollForJobs",
                "codepipeline:PutJobFailureResult",
                "codepipeline:PutJobSuccessResult"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### 範例 7：設定管道的跨帳戶存取
<a name="identity-based-policies-example-7"></a>

您可以為另一個 AWS 帳戶中的使用者和群組設定管道存取。建議的方法是在建立管道的帳戶中建立角色。該角色應允許其他 AWS 帳戶的使用者擔任該角色並存取管道。如需詳細資訊，請參閱[演練：使用角色進行跨帳戶存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/walkthru_cross-account-with-roles.html)。

下列範例顯示 80398EXAMPLE 帳戶中的政策，允許使用者在 主控台`MyFirstPipeline`中檢視名為 的管道，但不能變更。此政策以 `AWSCodePipeline_ReadOnlyAccess` 受管政策為基礎，但因為是 `MyFirstPipeline` 管道所特有，因此無法直接使用受管政策。若您不希望將政策限制在特定管道，請考慮使用 所建立及維護的其中一個受管政策。如需詳細資訊，請參閱[處理受管政策的相關文章](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html)。您必須將此政策連接至您為存取而建立的 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}}"
        }
    ]
}
```

------