

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

# 中的身分和存取管理 AWS CodeBuild
<a name="auth-and-access-control"></a>

存取 AWS CodeBuild 需要登入資料。這些登入資料必須具有存取 AWS 資源的許可，例如在 S3 儲存貯體中存放和擷取組建成品，以及檢視組建的 Amazon CloudWatch Logs。下列各節說明如何使用 [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)(IAM) 和 CodeBuild 來協助安全存取您的 資源：

# 管理 AWS CodeBuild 資源存取許可的概觀
<a name="auth-and-access-control-iam-access-control-identity-based"></a>

每個 AWS 資源都由 AWS 帳戶擁有，而建立或存取資源的許可是由許可政策管理。帳戶管理員可以將許可政策連接到 IAM 身分 (即使用者、群組和角色)。

**注意**  
帳戶管理員 (或管理員使用者) 是具有管理員權限的使用者。如需詳細資訊，請參《[IAM 使用者指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)》中的 *IAM 最佳實務*。

當您授予許可時，您要決定取得許可的人員、其可存取的資源、以及可對這些資源執行的動作。

**Topics**
+ [AWS CodeBuild 資源和操作](#arn-formats)
+ [了解資源所有權](#understanding-resource-ownership)
+ [管理 資源的存取](#managing-access-resources)
+ [指定政策元素：動作、效果和委託人](#actions-effects-principals)

## AWS CodeBuild 資源和操作
<a name="arn-formats"></a>

在 中 AWS CodeBuild，主要資源是建置專案。在政策中，您使用 Amazon Resource Name (ARN) 來識別要套用政策的資源。組建也是資源，並且有與其關聯的 ARN。如需詳細資訊，請參閱 中的 [Amazon Resource Names (ARN) AWS 和服務命名空間](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)*Amazon Web Services 一般參考*。


| Resource Type (資源類型) | ARN 格式 | 
| --- | --- | 
| 組建專案 |  `arn:aws:codebuild:region-ID:account-ID:project/project-name`  | 
| 建置 |  `arn:aws:codebuild:region-ID:account-ID:build/build-ID`  | 
| 報告群組 | arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name | 
| 報告 | arn:aws:codebuild:region-ID:account-ID:report/report-ID | 
| 機群 |  `arn:aws:codebuild:region-ID:account-ID:fleet/fleet-ID`  | 
|  所有 CodeBuild 資源  |  `arn:aws:codebuild:*`  | 
|  指定 AWS 區域中指定帳戶擁有的所有 CodeBuild 資源  |  `arn:aws:codebuild:region-ID:account-ID:*`  | 

**重要**  
使用預留容量功能時，同一帳戶中的其他專案可以存取機群執行個體上快取的資料，包括來源檔案、Docker layer 和 buildspec 中指定的快取目錄。這是根據設計，並允許相同帳戶中的專案共用機群執行個體。

**注意**  
大多數 AWS 服務會將冒號 (：) 或正斜線 (/) 視為 ARNs中的相同字元。不過，CodeBuild 在資源模式和規則中使用完全相符的項目。在建立事件模式時，請務必使用正確的字元，使這些字元符合資源中的 ARN 語法。

例如，您可以在陳述式中使用其 ARN 指定特定的組建專案 (*myBuildProject*)，如下所示：

```
"Resource": "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject"
```

若要指定所有資源，或如果 API 動作不支援 ARN，請在 `Resource` 元素中使用萬用字元 (\$1)，如下所示：

```
"Resource": "*"
```

有些 CodeBuild API 動作接受多個資源 （例如 `BatchGetProjects`)。若要在單一陳述式中指定多個資源，請用逗號分隔他們的 ARN，如下所示：

```
"Resource": [
  "arn:aws:codebuild:us-east-2:123456789012:project/myBuildProject",
  "arn:aws:codebuild:us-east-2:123456789012:project/myOtherBuildProject"
]
```

CodeBuild 提供一組操作來使用 CodeBuild 資源。如需清單，請參閱[AWS CodeBuild 許可參考](auth-and-access-control-permissions-reference.md)。

## 了解資源所有權
<a name="understanding-resource-ownership"></a>

無論誰建立資源， AWS 帳戶都會擁有在帳戶中建立的資源。具體而言，資源擁有者是驗證資源建立請求的[委託人實體](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) AWS 帳戶 （即根帳戶、 使用者或 IAM 角色）。下列範例說明其如何運作：
+ 如果您使用 AWS 帳戶的根帳戶登入資料來建立規則， AWS 您的帳戶即為 CodeBuild 資源的擁有者。
+ 如果您在 AWS 帳戶中建立 使用者，並將建立 CodeBuild 資源的許可授予該使用者，則使用者可以建立 CodeBuild 資源。不過，使用者所屬 AWS 的帳戶擁有 CodeBuild 資源。
+ 如果您在 AWS 帳戶中建立具有建立 CodeBuild 資源許可的 IAM 角色，則任何可以擔任該角色的人都可以建立 CodeBuild 資源。該角色所屬 AWS 的帳戶擁有 CodeBuild 資源。

## 管理 資源的存取
<a name="managing-access-resources"></a>

許可政策說明誰可以存取哪些資源。

**注意**  
本節討論如何在 AWS CodeBuild中使用 IAM。它不提供 IAM 服務的詳細資訊。如需完整的 IAM 文件，請參閱*IAM 使用者指南*中的[什麼是 IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。如需有關 IAM 政策語法和說明的資訊，請參閱*IAM 使用者指南*中的 [AWS IAM 政策參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

連接到 IAM 身分的政策稱為身分類型政策 (IAM 政策)。連接到資源的政策稱為資源型政策。CodeBuild 支援特定唯讀 APIs 的身分型政策和資源型政策，以用於跨帳戶資源共用。

### 安全存取 S3 儲存貯體
<a name="secure-s3-buckets"></a>

我們強烈建議您在 IAM 角色中包含下列許可，以確認與您 CodeBuild 專案相關聯的 S3 儲存貯體由您或您信任的人擁有。這些許可不包含在 AWS 受管政策和角色中。您必須自行新增這些許可。
+  `s3:GetBucketAcl` 
+  `s3:GetBucketLocation` 

如果專案使用的 S3 儲存貯體擁有者變更，您必須驗證您仍然擁有儲存貯體，如果沒有，則必須更新 IAM 角色中的許可。如需詳細資訊，請參閱[允許使用者與 CodeBuild 互動](setting-up-service-permissions-group.md)及[允許 CodeBuild 與其他 AWS 服務互動](setting-up-service-role.md)。

## 指定政策元素：動作、效果和委託人
<a name="actions-effects-principals"></a>

對於每個 AWS CodeBuild 資源，服務會定義一組 API 操作。若要授予這些 API 操作的許可，CodeBuild 會定義一組您可以在政策中指定的動作。為了執行 API 操作，某些 API 操作可能需要多個動作的許可。如需詳細資訊，請參閱[AWS CodeBuild 資源和操作](#arn-formats)及[AWS CodeBuild 許可參考](auth-and-access-control-permissions-reference.md)。

以下是基本的政策元素：
+ **資源** - 您使用 Amazon Resource Name (ARN) 識別欲套用政策的資源。
+ **動作** – 您可以使用動作關鍵字來識別您要允許或拒絕的資源操作。例如，`codebuild:CreateProject` 許可授予使用者執行 `CreateProject` 操作的許可。
+ **效果** – 當使用者請求 動作時，您可以指定允許或拒絕效果。如果您未明確授予存取 (允許) 資源，則隱含地拒絕存取。您也可以明確拒絕存取資源。您可以明確拒絕以確定即使其他政策授予存取權，使用者仍無法存取資源。
+ **主體** – 在以身分為基礎的政策 (IAM 政策） 中，附加政策的使用者是隱含主體。對於以資源為基礎的政策，您可以指定希望獲得許可的使用者、帳戶、服務或其他實體。

如需進一步了解有關 IAM 政策語法和說明的詳細資訊，請參閱《IAM 使用者指南》** 中的 [AWS IAM 政策參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

如需顯示所有 CodeBuild API 動作及其適用的資源的表格，請參閱 [AWS CodeBuild 許可參考](auth-and-access-control-permissions-reference.md)。

# 使用 的身分型政策 AWS CodeBuild
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

本主題提供身分類型政策範例，示範帳戶管理員如何將許可政策連接至 IAM 身分 (即使用者、群組和角色)，並藉此授予許可，以對 AWS CodeBuild 資源執行操作。

**重要**  
建議您先檢閱簡介主題，說明可用於管理 CodeBuild 資源存取權的基本概念和選項。如需詳細資訊，請參閱[管理 AWS CodeBuild 資源存取許可的概觀](auth-and-access-control-iam-access-control-identity-based.md)。

**Topics**
+ [使用 AWS CodeBuild 主控台所需的許可](#console-permissions)
+ [AWS CodeBuild 連線至 Amazon Elastic Container Registry 所需的許可](#ecr-policies)
+ [AWS CodeBuild 主控台連線至來源提供者所需的許可](#console-policies)
+ [AWS 的 受管 （預先定義） 政策 AWS CodeBuild](#managed-policies)
+ [CodeBuild 受管政策和通知](#notifications-permissions)
+ [CodeBuild 受 AWS 管政策的更新](#security-iam-awsmanpol-updates)
+ [客戶受管政策範例](#customer-managed-policies)

以下顯示的許可政策範例，可讓使用者取得組建專案的相關資訊，僅針對 `us-east-2` 區域的帳戶 `123456789012` 中名稱開頭為 `my` 的組建專案：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetProjects",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

## 使用 AWS CodeBuild 主控台所需的許可
<a name="console-permissions"></a>

使用 AWS CodeBuild 主控台的使用者必須擁有一組最低許可，以允許使用者描述 AWS 帳戶的其他 AWS 資源。您必須具備下列服務的許可：
+ AWS CodeBuild
+ Amazon CloudWatch
+ CodeCommit （如果您將原始程式碼存放在 AWS CodeCommit 儲存庫）
+ Amazon Elastic Container Registry (Amazon ECR) （如果您使用的是依賴 Amazon ECR 儲存庫中 Docker 映像的建置環境）
**注意**  
截至 2022 年 7 月 26 日，預設 IAM 政策已更新。如需詳細資訊，請參閱[AWS CodeBuild 連線至 Amazon Elastic Container Registry 所需的許可](#ecr-policies)。
+ Amazon Elastic Container Service (Amazon ECS) （如果您使用的是依賴 Amazon ECR 儲存庫中 Docker 映像的建置環境）
+ AWS Identity and Access Management (IAM)
+ AWS Key Management Service (AWS KMS)
+ Amazon Simple Storage Service (Amazon S3)

如果您建立比最低必要許可更嚴格的 IAM 政策，主控台將無法如預期般運作。

## AWS CodeBuild 連線至 Amazon Elastic Container Registry 所需的許可
<a name="ecr-policies"></a>

自 2022 年 7 月 26 日起， AWS CodeBuild 已更新其 Amazon ECR 許可的預設 IAM 政策。下列許可已從預設政策中移除：

```
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload"
```

對於 2022 年 7 月 26 日之前建立的 CodeBuild 專案，我們建議您使用下列 Amazon ECR 政策更新您的政策：

```
"Action": [
    "ecr:BatchCheckLayerAvailability",
    "ecr:GetDownloadUrlForLayer",
    "ecr:BatchGetImage"
]
```

如需更新政策的詳細資訊，請參閱 [允許使用者與 CodeBuild 互動](setting-up-service-permissions-group.md)。

## AWS CodeBuild 主控台連線至來源提供者所需的許可
<a name="console-policies"></a>

 AWS CodeBuild 主控台使用以下 API 動作連線至來源提供者 （例如 GitHub 儲存庫）。
+ `codebuild:ListConnectedOAuthAccounts`
+ `codebuild:ListRepositories`
+ `codebuild:PersistOAuthToken`
+ `codebuild:ImportSourceCredentials`

您可以使用 AWS CodeBuild 主控台將來源提供者 （例如 GitHub 儲存庫） 與建置專案建立關聯。若要這樣做，您必須先將上述 API 動作新增至與您用來存取 AWS CodeBuild 主控台的使用者相關聯的 IAM 存取政策。

`ListConnectedOAuthAccounts`、`ListRepositories` 和 `PersistOAuthToken` API 動作不是為了供您的程式碼呼叫。因此，這些 API 動作不包含在 AWS CLI 和 AWS SDKs中。

## AWS 的 受管 （預先定義） 政策 AWS CodeBuild
<a name="managed-policies"></a>

AWS 提供由 建立和管理的獨立 IAM 政策，以解決許多常見的使用案例 AWS。這些 AWS 受管政策會授予常見使用案例的必要許可，因此您可以避免調查需要哪些許可。CodeBuild 的受管政策也提供在其他 服務中執行操作的許可，例如 IAM AWS CodeCommit、Amazon EC2、Amazon ECR、Amazon SNS 和 Amazon CloudWatch Events，以滿足已授予相關政策之使用者的責任所需。例如，`AWSCodeBuildAdminAccess`政策是一種管理層級使用者政策，可讓使用者使用此政策來建立和管理專案組建的 CloudWatch Events 規則，以及針對專案相關事件 （名稱字首為 的主題`arn:aws:codebuild:`) 通知的 Amazon SNS 主題，以及在 CodeBuild 中管理專案和報告群組。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

下列 AWS 受管政策是特定的，您可以連接到您帳戶中的使用者 AWS CodeBuild。

**AWSCodeBuildAdminAccess**  
提供 CodeBuild 的完整存取權，包括管理 CodeBuild 組建專案的許可。

**AWSCodeBuildDeveloperAccess**  
提供 CodeBuild 的存取權，但不允許組建專案管理。

**AWSCodeBuildReadOnlyAccess**  
提供 CodeBuild 的唯讀存取權。

若要存取 CodeBuild 建立的建置輸出成品，您還必須連接名為 的 AWS 受管政策`AmazonS3ReadOnlyAccess`。

若要建立和管理 CodeBuild 服務角色，您還必須連接名為 的 AWS 受管政策`IAMFullAccess`。

您也可以建立自己的自訂 IAM 政策，以允許 CodeBuild 動作和資源的許可。您可以將這些自訂政策連接至需要這些許可的使用者或群組。

**Topics**
+ [AWSCodeBuildAdminAccess](#admin-access-policy)
+ [AWSCodeBuildDeveloperAccess](#developer-access-policy)
+ [AWSCodeBuildReadOnlyAccess](#read-only-access-policy)

### AWSCodeBuildAdminAccess
<a name="admin-access-policy"></a>

此`AWSCodeBuildAdminAccess`政策提供 CodeBuild 的完整存取權，包括管理 CodeBuild 組建專案的許可。僅將此政策套用至管理層級使用者，以授予他們對 AWS 帳戶中 CodeBuild 專案、報告群組和相關資源的完整控制權，包括刪除專案和報告群組的能力。

如需完整的受管政策，請參閱 IAM 受管政策參考中的 [ AWSCodeBuildAdminAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildAdminAccess.html)。

### AWSCodeBuildDeveloperAccess
<a name="developer-access-policy"></a>

此`AWSCodeBuildDeveloperAccess`政策允許存取 CodeBuild 的所有功能，以及專案和報告群組相關資源。此政策不允許使用者刪除 CodeBuild 專案或報告群組，或其他 AWS 服務中的相關資源，例如 CloudWatch Events。建議將此政策套用到大多數使用者。

如需完整的受管政策，請參閱 IAM 受管政策參考中的 [ AWSCodeBuildDeveloperAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildDeveloperAccess.html)。

### AWSCodeBuildReadOnlyAccess
<a name="read-only-access-policy"></a>

此`AWSCodeBuildReadOnlyAccess`政策授予對 CodeBuild 和其他 AWS 服務中相關資源的唯讀存取權。將此政策套用至可檢視和執行組建、檢視專案，以及檢視報告群組，但無法對其進行任何變更的使用者。

如需完整的受管政策，請參閱 IAM 受管政策參考中的 [ AWSCodeBuildReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCodeBuildReadOnlyAccess.xml)。

## CodeBuild 受管政策和通知
<a name="notifications-permissions"></a>

CodeBuild 支援通知，可通知使用者建置專案的重要變更。CodeBuild 的受管政策包含通知功能的政策陳述式。如需詳細資訊，請參閱[什麼是通知？](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html)。

### 唯讀受管政策中的通知相關許可
<a name="notifications-readonly"></a>

`AWSCodeBuildReadOnlyAccess` 受管政策包含下列陳述式，允許對通知的唯讀存取權限。適用此受管政策的使用者可以檢視資源的通知，但無法建立、管理或訂閱通知。

```
   {
        "Sid": "CodeStarNotificationsPowerUserAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:DescribeNotificationRule"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*:*:project/*"}
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListEventTypes",
            "codestar-notifications:ListTargets"
        ],
        "Resource": "*"
    }
```

### 其他受管政策中的通知相關許可
<a name="notifications-otheraccess"></a>

`AWSCodeBuildDeveloperAccess` 受管政策包含下列陳述式，允許使用者建立、編輯和訂閱通知。使用者無法刪除通知規則或管理資源的標籤。

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "ArnLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codebuild:*:*:project/*"}
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "SNSTopicListAccess",
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

如需 IAM 和通知的詳細資訊，請參閱 [Identity and Access Management 以取得AWS CodeStar通知](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html)。

## CodeBuild 受 AWS 管政策的更新
<a name="security-iam-awsmanpol-updates"></a>

檢視自此服務開始追蹤這些變更以來 CodeBuild AWS 受管政策更新的詳細資訊。如需此頁面變更的自動提醒，請訂閱 上的 RSS 摘要[AWS CodeBuild 使用者指南文件歷史記錄](history.md)。




| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  `AWSCodeBuildAdminAccess` 和 `AWSCodeBuildDeveloperAccess` – 更新現有政策  |  CodeBuild 新增了這些政策的`ssmmessages:OpenDataChannel`許可，以支援 Session Manager 互動式建置偵錯。 `AWSCodeBuildAdminAccess` 和 `AWSCodeBuildDeveloperAccess`政策現在包含 Session Manager 工作階段資源 (`arn:aws:ssm:*:*:session/*`) `ssmmessages:OpenDataChannel`的動作，以支援此 WebSocket API 上的 SigV4 強制執行。  | 2025 年 12 月 1 日 | 
|  `AWSCodeBuildAdminAccess`、 `AWSCodeBuildDeveloperAccess`和 `AWSCodeBuildReadOnlyAccess` – 更新現有政策  |  CodeBuild 已更新這些政策的資源。 `AWSCodeBuildAdminAccess`、 `AWSCodeBuildDeveloperAccess`和 `AWSCodeBuildReadOnlyAccess`政策已變更為更新現有資源。原始資源`arn:aws:codebuild:*`已更新為 `arn:aws:codebuild:*:*:project/*`。  | 2024 年 11 月 15 日 | 
|  `AWSCodeBuildAdminAccess`、 `AWSCodeBuildDeveloperAccess`和 `AWSCodeBuildReadOnlyAccess` – 更新現有政策  |  CodeBuild 已將資源新增至這些政策，以支援品牌 AWS CodeConnections 重塑。 `AWSCodeBuildAdminAccess`、 `AWSCodeBuildDeveloperAccess`和 `AWSCodeBuildReadOnlyAccess`政策已變更為新增資源 `arn:aws:codeconnections:*:*:*`。  | 2024 年 4 月 18 日 | 
|  `AWSCodeBuildAdminAccess` 和 `AWSCodeBuildDeveloperAccess` – 更新現有政策  |  CodeBuild 新增了這些政策的許可，以支援在聊天應用程式中使用 Amazon Q Developer 的其他通知類型。 `AWSCodeBuildAdminAccess` 和 `AWSCodeBuildDeveloperAccess`政策已變更為新增許可 `chatbot:ListMicrosoftTeamsChannelConfigurations`。  | 2023 年 5 月 16 日 | 
|  CodeBuild 已開始追蹤變更  |  CodeBuild 開始追蹤其 AWS 受管政策的變更。  | 2021 年 5 月 16 日 | 

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

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

您可以使用下列範例 IAM 政策來限制使用者和角色的 CodeBuild 存取。

**Topics**
+ [允許使用者取得建置專案的相關資訊](#customer-managed-policies-example-batch-get-projects)
+ [允許使用者取得機群的相關資訊](#customer-managed-policies-get-information-about-fleets)
+ [允許使用者取得報告群組的相關資訊](#customer-managed-policies-get-information-about-report-group)
+ [允許使用者取得報告的相關資訊](#customer-managed-policies-get-information-about-reports)
+ [允許使用者建立建置專案](#customer-managed-policies-example-create-project)
+ [允許使用者建立機群](#customer-managed-policies-example-create-fleet)
+ [允許使用者建立報告群組](#customer-managed-policies-example-create-report-group)
+ [允許使用者刪除機群](#customer-managed-policies-example-delete-fleet)
+ [允許使用者刪除報告群組](#customer-managed-policies-example-delete-report-group)
+ [允許使用者刪除報告](#customer-managed-policies-example-delete-report)
+ [允許使用者刪除建置專案](#customer-managed-policies-example-delete-project)
+ [允許使用者取得建置專案名稱的清單](#customer-managed-policies-example-list-projects)
+ [允許使用者變更建置專案的相關資訊](#customer-managed-policies-example-update-project)
+ [允許使用者變更機群](#customer-managed-policies-example-change-fleet)
+ [允許使用者變更報告群組](#customer-managed-policies-example-change-report-group)
+ [允許使用者取得建置的相關資訊](#customer-managed-policies-example-batch-get-builds)
+ [允許使用者取得建置專案之建置 ID 的清單](#customer-managed-policies-example-list-builds-for-project)
+ [允許使用者取得建置 ID 的清單](#customer-managed-policies-example-list-builds)
+ [允許使用者取得機群清單](#customer-managed-policies-example-get-list-of-fleets)
+ [允許使用者取得報告群組的清單](#customer-managed-policies-example-get-list-of-report-groups)
+ [允許使用者取得報告的清單](#customer-managed-policies-example-get-list-of-reports)
+ [允許使用者取得報告群組的報告清單](#customer-managed-policies-example-get-list-of-reports-for-report-group)
+ [允許使用者取得報告的測試案例清單](#customer-managed-policies-example-get-list-of-test-cases-for-report)
+ [允許使用者開始執行建置](#customer-managed-policies-example-start-build)
+ [允許使用者嘗試停止建置](#customer-managed-policies-example-stop-build)
+ [允許使用者嘗試刪除建置](#customer-managed-policies-example-delete-builds)
+ [允許使用者取得 CodeBuild 管理之 Docker 映像的相關資訊](#customer-managed-policies-example-list-curated-environment-images)
+ [允許使用者新增機群服務角色的許可政策](#customer-managed-policies-example-permission-policy-fleet-service-role)
+ [允許 CodeBuild 存取建立 VPC 網路介面所需的 AWS 服務](#customer-managed-policies-example-create-vpc-network-interface)
+ [使用拒絕陳述式來 AWS CodeBuild 防止 中斷與來源提供者的連線](#customer-managed-policies-example-deny-disconnect)

### 允許使用者取得建置專案的相關資訊
<a name="customer-managed-policies-example-batch-get-projects"></a>

以下顯示的政策陳述式範例，會允許使用者取得組建專案的相關資訊，針對 `us-east-2` 區域的帳戶 `123456789012` 中名稱開頭為 `my` 的組建專案：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetProjects",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"      
    }
  ]
}
```

------

### 允許使用者取得機群的相關資訊
<a name="customer-managed-policies-get-information-about-fleets"></a>

下列範例政策陳述式可讓使用者取得帳戶 `us-east-2`區域中機群的相關資訊`123456789012`：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetFleets",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### 允許使用者取得報告群組的相關資訊
<a name="customer-managed-policies-get-information-about-report-group"></a>

以下顯示的政策陳述式範例，會允許使用者取得帳戶 `123456789012` 在 `us-east-2` 區域的相關報告群組資訊：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetReportGroups",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 允許使用者取得報告的相關資訊
<a name="customer-managed-policies-get-information-about-reports"></a>

以下顯示的政策陳述式範例，會允許使用者取得帳戶 `123456789012` 在 `us-east-2` 區域的相關報告資訊：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetReports",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 允許使用者建立建置專案
<a name="customer-managed-policies-example-create-project"></a>

下列範例政策陳述式允許使用者建立具有任何名稱的組建專案，但僅限於帳戶 `us-east-2`區域中`123456789012`，且僅使用指定的 CodeBuild 服務角色：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/CodeBuildServiceRole"
    }
  ]
}
```

------

下列範例政策陳述式允許使用者建立任何名稱的組建專案，但僅限於 帳戶的 `us-east-2` 區域中`123456789012`，且只能使用指定的 CodeBuild 服務角色。它也會強制使用者只能搭配 使用指定的服務角色 AWS CodeBuild ，而非任何其他 AWS 服務。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/CodeBuildServiceRole",
      "Condition": {
          "StringEquals": {"iam:PassedToService": "codebuild.amazonaws.com"}
      }
    }
  ]
}
```

------

### 允許使用者建立機群
<a name="customer-managed-policies-example-create-fleet"></a>

下列範例政策陳述式允許使用者在 `us-east-2` 區域中為帳戶 建立機群`123456789012`：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### 允許使用者建立報告群組
<a name="customer-managed-policies-example-create-report-group"></a>

以下顯示的政策陳述式範例，會允許使用者建立帳戶 `123456789012` 在 `us-east-2` 區域中的報告群組：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:CreateReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 允許使用者刪除機群
<a name="customer-managed-policies-example-delete-fleet"></a>

下列範例政策陳述式允許使用者刪除帳戶 `us-east-2`區域中的機群`123456789012`：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### 允許使用者刪除報告群組
<a name="customer-managed-policies-example-delete-report-group"></a>

以下顯示的政策陳述式範例，會允許使用者刪除帳戶 `123456789012` 在 `us-east-2` 區域中的報告群組：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 允許使用者刪除報告
<a name="customer-managed-policies-example-delete-report"></a>

以下顯示的政策陳述式範例，會允許使用者刪除帳戶 `123456789012` 在 `us-east-2` 區域中的報告：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteReport",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 允許使用者刪除建置專案
<a name="customer-managed-policies-example-delete-project"></a>

以下顯示的政策陳述式範例，會允許使用者刪除組建專案，針對 `us-east-2` 區域的帳戶 `123456789012` 中名稱開頭為 `my` 的組建專案：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DeleteProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

### 允許使用者取得建置專案名稱的清單
<a name="customer-managed-policies-example-list-projects"></a>

下列政策陳述式的範例，會允許使用者取得相同帳戶之組建專案名稱的清單：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListProjects",
      "Resource": "*"
    }
  ]
}
```

------

### 允許使用者變更建置專案的相關資訊
<a name="customer-managed-policies-example-update-project"></a>

以下顯示的政策陳述式範例，會允許使用者變更使用任何名稱組建專案的相關資訊，但只能針對 `us-east-2` 區域中的帳戶 `123456789012`，並只能使用指定的 AWS CodeBuild 服務角色：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateProject",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/CodeBuildServiceRole"
    }
  ]
}
```

------

### 允許使用者變更機群
<a name="customer-managed-policies-example-change-fleet"></a>

下列範例政策陳述式允許使用者變更帳戶 `us-east-2`區域中的機群`123456789012`：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateFleet",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:fleet/*"
    }
  ]
}
```

------

### 允許使用者變更報告群組
<a name="customer-managed-policies-example-change-report-group"></a>

以下顯示的政策陳述式範例，會允許使用者變更帳戶 `123456789012` 在 `us-east-2` 區域中的報告群組：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:UpdateReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 允許使用者取得建置的相關資訊
<a name="customer-managed-policies-example-batch-get-builds"></a>

以下顯示的政策陳述式範例，會允許使用者取得組建的相關資訊，針對 `us-east-2` 區域的帳戶 `123456789012` 中名稱為 `my-build-project` 和 `my-other-build-project` 的組建專案：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchGetBuilds",
      "Resource": [
        "arn:aws:codebuild:us-east-2:111122223333:project/my-build-project",
        "arn:aws:codebuild:us-east-2:111122223333:project/my-other-build-project"
      ]
    }
  ]
}
```

------

### 允許使用者取得建置專案之建置 ID 的清單
<a name="customer-managed-policies-example-list-builds-for-project"></a>

以下顯示的政策陳述式範例，會允許使用者取得組建 ID 的清單，針對 `us-east-2` 區域的帳戶 `123456789012` 中名稱為 `my-build-project` 和 `my-other-build-project` 的組建專案：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListBuildsForProject",
      "Resource": [
        "arn:aws:codebuild:us-east-2:111122223333:project/my-build-project",
        "arn:aws:codebuild:us-east-2:111122223333:project/my-other-build-project"
      ]
    }
  ]
}
```

------

### 允許使用者取得建置 ID 的清單
<a name="customer-managed-policies-example-list-builds"></a>

下列政策陳述式的範例，會允許使用者取得相同帳戶之所有組建 ID 的清單：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListBuilds",
      "Resource": "*"
    }
  ]
}
```

------

### 允許使用者取得機群清單
<a name="customer-managed-policies-example-get-list-of-fleets"></a>

下列範例政策陳述式允許使用者取得帳戶 `us-east-2`區域中機群的清單`123456789012`：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListFleets",
      "Resource": "*"
    }
  ]
}
```

------

### 允許使用者取得報告群組的清單
<a name="customer-managed-policies-example-get-list-of-report-groups"></a>

以下顯示的政策陳述式範例，會允許使用者取得帳戶 `123456789012` 在 `us-east-2` 區域的報告群組清單：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListReportGroups",
      "Resource": "*"
    }
  ]
}
```

------

### 允許使用者取得報告的清單
<a name="customer-managed-policies-example-get-list-of-reports"></a>

以下顯示的政策陳述式範例，會允許使用者取得帳戶 `123456789012` 在 `us-east-2` 區域的報告清單：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListReports",
      "Resource": "*"
    }
  ]
}
```

------

### 允許使用者取得報告群組的報告清單
<a name="customer-managed-policies-example-get-list-of-reports-for-report-group"></a>

以下顯示的政策陳述式範例，會允許使用者取得帳戶 `123456789012` 在 `us-east-2` 區域中報告群組的報告清單：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListReportsForReportGroup",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 允許使用者取得報告的測試案例清單
<a name="customer-managed-policies-example-get-list-of-test-cases-for-report"></a>

以下顯示的政策陳述式範例，會允許使用者取得帳戶 `123456789012` 在 `us-east-2` 區域中報告的測試案例清單：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:DescribeTestCases",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:report-group/*"
    }
  ]
}
```

------

### 允許使用者開始執行建置
<a name="customer-managed-policies-example-start-build"></a>

以下顯示的政策陳述式範例，會允許使用者執行組建，針對 `us-east-2` 區域的帳戶 `123456789012` 中名稱開頭為 `my` 的組建專案：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:StartBuild",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

### 允許使用者嘗試停止建置
<a name="customer-managed-policies-example-stop-build"></a>

以下顯示的政策陳述式範例，會允許使用者嘗試停止執行中的組建，僅針對 `us-east-2` 區域的帳戶 `123456789012` 中名稱開頭為 `my` 的組建專案：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:StopBuild",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

### 允許使用者嘗試刪除建置
<a name="customer-managed-policies-example-delete-builds"></a>

以下顯示的政策陳述式範例，會允許使用者嘗試刪除建置，僅針對 `us-east-2` 區域的帳戶 `123456789012` 中名稱開頭為 `my` 的建置專案：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:BatchDeleteBuilds",
      "Resource": "arn:aws:codebuild:us-east-2:111122223333:project/my*"
    }
  ]
}
```

------

### 允許使用者取得 CodeBuild 管理之 Docker 映像的相關資訊
<a name="customer-managed-policies-example-list-curated-environment-images"></a>

下列範例政策陳述式允許使用者取得 CodeBuild 管理之所有 Docker 映像的相關資訊：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codebuild:ListCuratedEnvironmentImages",
      "Resource": "*"
    }
  ]
}
```

------

### 允許使用者新增機群服務角色的許可政策
<a name="customer-managed-policies-example-permission-policy-fleet-service-role"></a>

下列範例資源政策陳述式允許使用者為機群服務角色新增 VPC 許可政策：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeBuildFleetVpcCreateNI",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface"
            ],
            "Resource": [
                "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1",
                "arn:aws:ec2:us-west-2:111122223333:security-group/security-group-id-1",
                "arn:aws:ec2:us-west-2:111122223333:network-interface/*"
            ]
        },
        {
            "Sid": "CodeBuildFleetVpcPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CodeBuildFleetVpcNIPermission",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterfacePermission"
            ],
            "Resource": "arn:aws:ec2:us-west-2:111122223333:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:Subnet": [
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1"
                    ]
                }
            }
        }
    ]
}
```

------

下列範例資源政策陳述式允許使用者為機群服務角色新增自訂 Amazon Managed Image (AMI) 許可政策：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeImages",
            "Resource": "*"
        } 
    ]
}
```

------

下列信任政策陳述式範例允許使用者新增機群服務角色的許可政策：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CodeBuildFleetVPCTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "codebuild.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

------

### 允許 CodeBuild 存取建立 VPC 網路介面所需的 AWS 服務
<a name="customer-managed-policies-example-create-vpc-network-interface"></a>

下列範例政策陳述式授予在具有兩個子網路的 VPC 中建立網路介面的 AWS CodeBuild 許可：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DescribeDhcpOptions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterfacePermission"
            ],
            "Resource": "arn:aws:ec2:us-west-2:111122223333:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:AuthorizedService": "codebuild.amazonaws.com"
                },
                "ArnEquals": {
                    "ec2:Subnet": [
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-1",
                        "arn:aws:ec2:us-west-2:111122223333:subnet/subnet-id-2"
                    ]
                }
            }
        }
    ]
}
```

------

### 使用拒絕陳述式來 AWS CodeBuild 防止 中斷與來源提供者的連線
<a name="customer-managed-policies-example-deny-disconnect"></a>

 以下範例政策陳述式會使用拒絕陳述式，以防止 AWS CodeBuild 中斷與來源提供者的連接。它使用 `codebuild:DeleteOAuthToken` (與 `codebuild:PersistOAuthToken` 和 `codebuild:ImportSourceCredentials` 相反) 與來源供應商連接。如需詳細資訊，請參閱[AWS CodeBuild 主控台連線至來源提供者所需的許可](#console-policies)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "codebuild:DeleteOAuthToken",
      "Resource": "*"
    }
  ]
}
```

------

# AWS CodeBuild 許可參考
<a name="auth-and-access-control-permissions-reference"></a>

您可以在 AWS CodeBuild 政策中使用 AWS整體條件索引鍵來表達條件。如需清單，請參閱《*IAM 使用者指南*》中的[可用金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。

您可以在政策的 `Action` 欄位中指定動作。若要指定動作，請使用 `codebuild:` 字首，後面接著 API 操作名稱 (例如 `codebuild:CreateProject` 和 `codebuild:StartBuild`)。若要在單一陳述式中指定多個動作，請用逗號加以分隔 (例如 `"Action": [ "codebuild:CreateProject", "codebuild:StartBuild" ]`)。

**使用萬用字元**

您可以使用或不使用萬用字元 (\$1)，指定 ARN 做為政策之 `Resource` 欄位中的資源值。您可以使用萬用字元指定多個動作或資源。例如， `codebuild:*`會指定所有 CodeBuild 動作，並`codebuild:Batch*`指定以字詞 開頭的所有 CodeBuild 動作`Batch`。以下範例會對名稱開頭為 `my` 之所有組建專案授予存取權：

```
arn:aws:codebuild:us-east-2:123456789012:project/my*
```<a name="actions-related-to-objects-table"></a>CodeBuild API 操作和動作的必要許可

BatchDeleteBuilds  
 **動作：**`codebuild:BatchDeleteBuilds`  
必須具備才能刪除組建。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

BatchGetBuilds  
 **動作：**`codebuild:BatchGetBuilds`  
必須具備才能取得組建的相關資訊。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

BatchGetProjects  
 **動作：**`codebuild:BatchGetProjects`  
必須具備才能取得組建專案的相關資訊。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

BatchGetReportGroups  
 **動作：**`codebuild:BatchGetReportGroups`  
必須具備才能取得報告群組的相關資訊。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

BatchGetReports  
 **動作：**`codebuild:BatchGetReports`  
必須具備才能取得報告的相關資訊。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

BatchPutTestCases 1  
 **動作：**`codebuild:BatchPutTestCases`  
建立或更新測試報告時需要。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

CreateProject  
 **動作：**`codebuild:CreateProject`、`iam:PassRole`  
必須具備才能建立組建專案。  
 **資源：**  
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

CreateReport 1  
 **動作：**`codebuild:CreateReport`  
建立測試報告時需要。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

CreateReportGroup  
 **動作：**`codebuild:CreateReportGroup`  
必須具備才能建立報告群組。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

CreateWebhook  
 **動作：**`codebuild:CreateWebhook`  
必須具備才能建立 Webhook。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

DeleteProject  
 **動作：**`codebuild:DeleteProject`  
刪除 CodeBuild 專案時需要。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

DeleteReport  
 **動作：**`codebuild:DeleteReport`  
必須具備才能刪除報告。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

DeleteReportGroup  
 **動作：**`codebuild:DeleteReportGroup`  
必須具備才能刪除報告群組。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

DeleteSourceCredentials  
 **動作：**`codebuild:DeleteSourceCredentials`  
必須具備才能刪除包含 GitHub、GitHub Enterprise Server 或 Bitbucket 儲存庫適用登入資料的一組 `SourceCredentialsInfo` 物件。  
 **資源：**`*`

DeleteWebhook  
 **動作：**`codebuild:DeleteWebhook`  
必須具備才能建立 Webhook。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

DescribeTestCases  
 **動作：**`codebuild:DescribeTestCases`  
必須具備才能傳回測試案例的分頁清單。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

ImportSourceCredentials  
 **動作：**`codebuild:ImportSourceCredentials`  
必須具備才能匯入包含 GitHub、GitHub Enterprise 或 Bitbucket 儲存庫適用登入資料的一組 `SourceCredentialsInfo` 物件。  
 **資源：**`*`

InvalidateProjectCache  
 **動作：**`codebuild:InvalidateProjectCache`  
必須具備才能重設專案的快取。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

ListBuildBatches  
 **動作：**`codebuild:ListBuildBatches`  
取得組建批次 IDs清單時需要。  
 **資源：**`*`

ListBuildBatchesForProject  
 **動作：**`codebuild:ListBuildBatchesForProject`  
取得特定專案的建置批次 IDs清單時需要。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name`

ListBuilds  
 **動作：**`codebuild:ListBuilds`  
必須具備才能取得組建 ID 的清單。  
 **資源：**`*`

ListBuildsForProject  
 **動作：**`codebuild:ListBuildsForProject`  
必須具備才能取得組建專案的組建 ID 清單。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

ListCuratedEnvironmentImages  
 **動作：**`codebuild:ListCuratedEnvironmentImages`  
必須具備才能取得 AWS CodeBuild管理之所有 Docker 影像的相關資訊。  
 **資源：**`*` (必要，但並未參考可定址的 AWS 資源) 

ListProjects  
 **動作：**`codebuild:ListProjects`  
必須具備才能取得組建專案名稱的清單。  
 **資源：**`*`

ListReportGroups  
 **動作：**`codebuild:ListReportGroups`  
必須具備才能取得報告群組的清單。  
 **資源：**`*`

ListReports  
 **動作：**`codebuild:ListReports`  
必須具備才能取得報告清單。  
 **資源：**`*`

ListReportsForReportGroup  
 **動作：**`codebuild:ListReportsForReportGroup`  
必須具備才能取得報告群組的報告清單。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

RetryBuild  
**動作：**`codebuild:RetryBuild`  
重試組建時需要。  
**資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

StartBuild  
 **動作：**`codebuild:StartBuild`  
必須具備才能開始執行組建。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

StopBuild  
 **動作：**`codebuild:StopBuild`  
必須具備才能停止執行組建。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

UpdateProject  
 **動作：**`codebuild:UpdateProject`、`iam:PassRole`  
必須具備才能變更組建的相關資訊。  
 **資源：**  
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

UpdateProjectVisibility  <a name="UpdateProjectVisibility"></a>
 **動作：**`codebuild:UpdateProjectVisibility`、`iam:PassRole`  
變更專案建置的公有可見性時需要。  
 **資源：**  
+  `arn:aws:codebuild:region-ID:account-ID:project/project-name ` 
+  `arn:aws:iam::account-ID:role/role-name ` 

UpdateReport 1  
 **動作：**`codebuild:UpdateReport`  
建立或更新測試報告時需要。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

UpdateReportGroup  
 **動作：**`codebuild:UpdateReportGroup`  
必須具備才能更新報告群組。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:report-group/report-group-name `

UpdateWebhook  
 **動作：**`codebuild:UpdateWebhook`  
必須具備才能更新 Webhook。  
 **資源：**`arn:aws:codebuild:region-ID:account-ID:project/project-name `

1 僅用於許可。此動作沒有 API。

# 使用標籤控制對 AWS CodeBuild 資源的存取
<a name="auth-and-access-control-using-tags"></a>

IAM 政策陳述式中的條件是語法的一部分，可用來指定 CodeBuild 專案型動作的許可。您可以建立政策，允許或拒絕根據與這些專案相關聯的標籤對專案執行動作，然後將這些政策套用到您為管理使用者設定的 IAM 群組。如需使用 主控台或 將標籤套用至專案的資訊 AWS CLI，請參閱 [在 中建立建置專案 AWS CodeBuild](create-project.md)。如需有關使用 CodeBuild SDK 套用標籤的資訊，請參閱 *CodeBuild API 參考*中的 [CreateProject ](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_CreateProject.html#API_CreateProject_RequestSyntax) [和標籤](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_Tag.html)。如需有關使用標籤控制 AWS 資源存取的資訊，請參閱《*IAM 使用者指南*》中的[使用資源標籤控制 AWS 資源的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。

**重要**  
使用預留容量功能時，同一帳戶中的其他專案可以存取機群執行個體上快取的資料，包括來源檔案、Docker layer 和 buildspec 中指定的快取目錄。這是根據設計，並允許相同帳戶中的專案共用機群執行個體。

**Example 範例 1：根據資源標籤限制 CodeBuild 專案動作**  
 以下範例會在以索引鍵為 `Environment` 且索引鍵值為 `Production` 標記的專案上，拒絕所有 `BatchGetProjects` 動作：除了受管使用者政策外，使用者的管理員還必須將此 IAM 政策連接到未經授權的使用者。`aws:ResourceTag` 條件索引鍵用於依據其標籤來控制資源的存取。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:BatchGetProjects"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:ResourceTag/Environment": "Production"
        }
      }
    }
  ]
}
```

**Example 範例 2：根據請求標籤限制 CodeBuild 專案動作**  
如果請求包含索引鍵為 `Environment` 且索引鍵值為 `Production` 的標籤，則下列政策會拒絕使用者對 `CreateProject` 動作的許可。此外，如果請求包含索引鍵為 `Environment` 的標籤，則政策會使用 `aws:TagKeys` 條件索引鍵來不允許 `UpdateProject`，防止未授權的使用者修改專案。除了 受管使用者政策之外，管理員還必須將此 IAM 政策連接到無權執行這些動作的使用者。`aws:RequestTag` 條件索引鍵用於控制哪些標籤可以在 IAM 請求中傳遞    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:CreateProject"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:RequestTag/Environment": "Production"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:UpdateProject"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": ["Environment"]
        }
      }
    }
  ]
}
```

**Example 範例 3：根據資源標籤拒絕或允許報告群組上的動作**  
您可以根據與這些資源相關聯的 AWS 標籤，建立允許或拒絕 CodeBuild 資源 （專案和報告群組） 動作的政策，然後將這些政策套用至您為管理使用者所設定的 IAM 群組。例如，您可以建立一個政策，以拒絕具有 AWS 標籤索引鍵`Status`和 索引鍵值的任何報告群組上的 CodeBuild 動作`Secret`，然後將該政策套用到您為一般開發人員 (*開發人員*) 建立的 IAM 群組。然後，您需要確保處理這些標記報告群組的開發人員不是該一般*開發人員*群組的成員，而是屬於未套用限制性政策的不同 IAM 群組 (`SecretDevelopers`)。  
下列範例會拒絕標記 索引鍵`Status`和 索引鍵值之報告群組的所有 CodeBuild 動作`Secret`：    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codebuild:BatchGetReportGroups",
        "codebuild:CreateReportGroup",
        "codebuild:DeleteReportGroup",
        "codebuild:ListReportGroups",
        "codebuild:ListReportsForReportGroup",
        "codebuild:UpdateReportGroup"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:RequestedRegion": "us-east-1"
        }
      }
    }
  ]
}
```

**Example 範例 4：根據資源標籤將 CodeBuild 動作限制為 AWSCodeBuildDeveloperAccess**  
您可以建立政策，允許 CodeBuild 對所有未加上特定標籤的報告群組和專案執行動作。例如，以下政策允許對所有報告群組和專案擁有同等的 [AWSCodeBuildDeveloperAccess](auth-and-access-control-iam-identity-based-access-control.md#developer-access-policy) 許可，但以特定標籤標記的專案除外：    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "codebuild:StartBuild",
            "codebuild:StopBuild",
            "codebuild:BatchGet*",
            "codebuild:GetResourcePolicy",
            "codebuild:DescribeTestCases",
            "codebuild:List*",
            "codecommit:GetBranch",
            "codecommit:GetCommit",
            "codecommit:GetRepository",
            "codecommit:ListBranches",
            "cloudwatch:GetMetricStatistics",
            "events:DescribeRule",
            "events:ListTargetsByRule",
            "events:ListRuleNamesByTarget",
            "logs:GetLogEvents",
            "s3:GetBucketLocation",
            "s3:ListAllMyBuckets"
         ],
         "Resource": "*",
         "Condition": {
            "StringNotEquals": {
               "aws:ResourceTag/Status": "Secret",
               "aws:ResourceTag/Team": "Saanvi"
            }
         }
      }
   ]
}
```

# 在主控台檢視資源
<a name="console-resources"></a>

 AWS CodeBuild 主控台需要 `ListRepositories`許可，才能顯示您登入 AWS 區域中 AWS 帳戶的儲存庫清單。主控台還包含 **Go to resource (移至資源)** 功能，可快速執行不區分大小寫的資源搜尋。此搜尋會在您登入的 AWS 區域中的帳戶中 AWS 執行。將會跨以下服務來顯示以下資源：
+ AWS CodeBuild：組建專案
+ AWS CodeCommit：儲存庫
+ AWS CodeDeploy：應用程式
+ AWS CodePipeline：管道

若要跨所有服務中的資源執行此搜尋，您必須擁有以下許可：
+ CodeBuild：`ListProjects`
+ CodeCommit：`ListRepositories`
+ CodeDeploy：`ListApplications`
+ CodePipeline：`ListPipelines`

如果您沒有某項服務的許可，則不會傳回該服務之資源的結果。即使您有許可來檢視資源，但如果有明確的 `Deny` 而無法檢視部分資源，則不會傳回這些資源。