

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

# 管理 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)。