

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

# 中的安全性 AWS CodeCommit
<a name="security"></a>

的雲端安全 AWS 是最高優先順序。身為 AWS 客戶，您可以受益於資料中心和網路架構，這些架構專為滿足最安全敏感組織的需求而建置。

安全是 AWS 與您之間的共同責任。[共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)將其描述為雲端*的*安全性和雲端*中*的安全性：
+ **雲端的安全性** – AWS 負責保護在 AWS Cloud 中執行 AWS 服務的基礎設施。 AWS 也為您提供可安全使用的服務。在[AWS 合規計畫](https://aws.amazon.com/compliance/programs/)中，第三方稽核人員會定期測試和驗證我們安全的有效性。若要了解適用的合規計劃 AWS CodeCommit，請參閱合規[AWS 計劃的 服務範圍合規](https://aws.amazon.com/compliance/services-in-scope/)。
+ **雲端的安全性** – 您的責任取決於您使用 AWS 的服務。您也必須對其他因素負責，包括資料的機密性、您公司的要求和適用法律和法規。

本文件可協助您了解如何在使用 CodeCommit 時套用共同責任模型。下列主題說明如何設定 CodeCommit 以符合您的安全與合規目標。您也會了解如何使用其他 AWS 服務來協助您監控和保護 CodeCommit 資源。

**Topics**
+ [中的資料保護 AWS CodeCommit](data-protection.md)
+ [的 Identity and Access Management AWS CodeCommit](security-iam.md)
+ [中的彈性 AWS CodeCommit](disaster-recovery-resiliency.md)
+ [中的基礎設施安全 AWS CodeCommit](infrastructure-security.md)

# 中的資料保護 AWS CodeCommit
<a name="data-protection"></a>

作為受管服務， 受到 AWS 全球網路安全的保護。如需 AWS 安全服務以及如何 AWS 保護基礎設施的資訊，請參閱[AWS 雲端安全](https://aws.amazon.com/security/)。若要使用基礎設施安全的最佳實務來設計您的 AWS 環境，請參閱*安全支柱 AWS Well-Architected Framework* 中的[基礎設施保護](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 發佈的 API 呼叫，透過網路存取 。使用者端必須支援下列專案：
+ Transport Layer Security (TLS)。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 具備完美轉送私密(PFS)的密碼套件，例如 DHE (Ephemeral Diffie-Hellman)或 ECDHE (Elliptic Curve Ephemeral Diffie-Hellman)。現代系統(如 Java 7 和更新版本)大多會支援這些模式。

CodeCommit 儲存庫會在靜態時自動加密。不需要客戶動作。CodeCommit 也會加密傳輸中的儲存庫資料。您可以搭配 CodeCommit 儲存庫使用 HTTPS 通訊協定、SSH 通訊協定或兩者。如需詳細資訊，請參閱[設定 AWS CodeCommit](setting-up.md)。您也可以設定 CodeCommit 儲存庫的[跨帳戶存取權](cross-account.md)。

**Topics**
+ [AWS Key Management Service 和 AWS CodeCommit 儲存庫的加密](encryption.md)
+ [使用輪換憑證連線至 AWS CodeCommit 儲存庫](temporary-access.md)

# AWS Key Management Service 和 AWS CodeCommit 儲存庫的加密
<a name="encryption"></a>

CodeCommit 儲存庫中的資料會在傳輸中和靜態時加密。當資料推送到 CodeCommit 儲存庫時 （例如，透過呼叫 **git push**)，CodeCommit 會在接收到的資料存放在儲存庫時加密。從 CodeCommit 儲存庫提取資料時 （例如，透過呼叫 **git pull**)，CodeCommit 會解密資料，然後將資料傳送給發起人。這會假設與推送或提取請求相關聯的 IAM 使用者已通過身分驗證 AWS。傳送或接收的資料是利用 HTTPS 或 SSH 加密網路通訊協定來傳輸。

您可以使用 AWS 受管金鑰 或客戶受管金鑰來加密和解密儲存庫中的資料。如需客戶受管金鑰和 之間差異的詳細資訊 AWS 受管金鑰，請參閱[客戶受管金鑰和 AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)。如果您未指定客戶受管金鑰，CodeCommit 將使用 AWS 受管金鑰 來加密和解密儲存庫中的資料。這是自動為您在 中 AWS 受管金鑰 建立的 AWS 帳戶。第一次在 Amazon Web Services 帳戶中的新 AWS 區域 中建立 CodeCommit 儲存庫時，如果您未指定客戶受管金鑰，CodeCommit 會在相同的 AWS 區域 in AWS 受管金鑰 () 中建立 AWS Key Management Service (`aws/codecommit`金鑰）AWS KMS。此`aws/codecommit`金鑰僅供 CodeCommit 使用。它存放在您的 Amazon Web Services 帳戶中。根據您指定的內容，CodeCommit 會使用客戶受管金鑰或 AWS 受管金鑰 來加密和解密儲存庫中的資料。

**重要**  
 CodeCommit 會對用於加密和解密儲存庫中資料的 AWS KMS 金鑰執行下列 AWS KMS 動作。如果您使用的是 AWS 受管金鑰，則使用者不需要這些動作的明確許可，但使用者不得有任何連接政策拒絕`aws/codecommit`金鑰的這些動作。如果您使用的是 AWS 帳戶 ID 設定為該金鑰政策主體的客戶受管金鑰，這些許可必須明確設定為 `allow`。具體而言，當您建立第一個儲存庫時，如果您更新儲存庫的金鑰，`deny`如果您使用 ，則不得將下列任何許可設定為 AWS 受管金鑰，`allow`如果您使用具有政策主體的客戶受管金鑰，則必須將 設定為 ：  
`"kms:Encrypt"`
`"kms:Decrypt"`
`"kms:ReEncrypt"` （視內容而定，這可能需要 `kms:ReEncryptFrom`、  
`kms:ReEncryptTo`，或未`kms:ReEncrypt*`設定為拒絕）
`"kms:GenerateDataKey"`
`"kms:GenerateDataKeyWithoutPlaintext"`
`"kms:DescribeKey"`

如果您想要使用自己的客戶受管金鑰，金鑰必須在儲存 AWS 區域 庫所在的 中可用。CodeCommit 支援使用單一和多區域客戶受管金鑰。雖然支援所有金鑰材料來源類型，但建議使用預設 **KMS** 選項。使用**外部金鑰存放**區選項的客戶可能會遇到來自其存放區提供者的延遲。此外。CodeCommit 對客戶受管金鑰有下列需求：
+ CodeCommit 僅支援使用對稱金鑰。
+ 金鑰用量類型必須設定為**加密和解密**。

如需建立客戶受管金鑰的詳細資訊，請參閱[概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)和[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

若要查看 CodeCommit AWS 受管金鑰 產生之 的相關資訊，請執行下列動作：

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 的 AWS Key Management Service (AWS KMS) 主控台。

1. 若要變更 AWS 區域，請使用頁面右上角的區域選擇器。

1. 在服務導覽窗格中，選擇 **AWS 受管金鑰**。請確定您已登入要檢閱金鑰 AWS 區域 的 。

1. 在加密金鑰清單中，選擇 AWS 受管金鑰 具有別名 **aws/codecommit** 的 。 AWS 擁有的金鑰 隨即顯示 的基本資訊。

您無法變更或刪除此項目 AWS 受管金鑰。

## 如何使用加密演算法來加密儲存庫資料
<a name="encryption-algorithms"></a>

CodeCommit 使用兩種不同的方法來加密資料。小於 6 MB 的個別 Git 物件是使用 AES-GCM-256 進行加密，此方法會提供資料完整性驗證。介於 6 MB 和單一 Blob 最大 2 GB 之間的物件會使用 AES-CBC-256 加密。CodeCommit 一律驗證加密內容。

## 加密內容
<a name="encryption-context"></a>

與 整合的每個服務都會 AWS KMS 指定加密和解密操作的加密內容。加密環境是 AWS KMS 用來檢查資料完整性的額外驗證資訊。如果為加密操作指定，則在解密操作中也必須指定。否則，解密會失敗。CodeCommit 會將 CodeCommit 儲存庫 ID 用於加密內容。您可以使用 **get-repository**命令或 CodeCommit 主控台來尋找儲存庫 ID。在 AWS CloudTrail 日誌中搜尋 CodeCommit 儲存庫 ID，以了解在 CodeCommit 儲存庫中 AWS KMS 要加密或解密資料的 金鑰所採取的加密操作。

如需 的詳細資訊 AWS KMS，請參閱 [AWS Key Management Service 開發人員指南](https://docs.aws.amazon.com/kms/latest/developerguide/)。

# 使用輪換憑證連線至 AWS CodeCommit 儲存庫
<a name="temporary-access"></a>

您可以讓使用者存取您的 AWS CodeCommit 儲存庫，而無需為其設定 IAM 使用者或使用存取金鑰和私密金鑰。若要將許可指派給聯合身分，您可以建立角色並定義角色的許可。當聯合身分進行身分驗證時，該身分會與角色建立關聯，並獲授予由角色定義的許可。如需有關聯合角色的相關資訊，請參閱《*IAM 使用者指南*》中的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)。如果您使用 IAM Identity Center，則需要設定許可集。為控制身分驗證後可以存取的內容，IAM Identity Center 將許可集與 IAM 中的角色相關聯。如需有關許可集的資訊，請參閱《*AWS IAM Identity Center 使用者指南*》中的[許可集](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)。您也可以為 IAM 使用者設定角色型存取，以存取個別 Amazon Web Services 帳戶中的 CodeCommit 儲存庫 （稱為*跨帳戶存取*的技術）。如需設定儲存庫跨帳戶存取的逐步解說，請參閱 [使用 角色設定 AWS CodeCommit 儲存庫的跨帳戶存取權](cross-account.md)。

您可以為想要或必須透過下列方法來驗證身分的使用者設定存取：
+ 安全性聲明標記語言 (SAML)
+ 多重要素驗證 (MFA)
+ 聯合
+ 登入 Amazon
+ Amazon Cognito
+ Facebook
+ Google
+ OpenID Connect (OIDC) 相容的身分提供者

**注意**  
下列資訊僅適用於使用 **git-remote-codecommit**或 AWS CLI 登入資料協助程式連線到 CodeCommit 儲存庫。由於建議的 CodeCommit 暫時或聯合存取方法是設定 **git-remote-codecommit**，因此本主題提供使用該公用程式的範例。如需詳細資訊，請參閱[AWS CodeCommit 使用 git-remote-codecommit 對 HTTPS 連線的設定步驟](setting-up-git-remote-codecommit.md)。  
您無法使用 SSH 或 Git 登入資料和 HTTPS，透過輪換或暫時存取登入資料來連線至 CodeCommit 儲存庫。

如果符合下列所有要求，您不需要完成這些步驟：
+ 您已登入 Amazon EC2 執行個體。
+ 您使用 Git 和 HTTPS 搭配 AWS CLI 登入資料協助程式，從 Amazon EC2 執行個體連線至 CodeCommit 儲存庫。
+ Amazon EC2 執行個體具有連接的 IAM 執行個體描述檔，其中包含 [對於 Linux、macOS 或 Unix 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線](setting-up-https-unixes.md)或 中所述的存取許可[對於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線](setting-up-https-windows.md)。
+ 您已在 Amazon EC2 執行個體上安裝並設定 Git 登入資料協助程式，如 [對於 Linux、macOS 或 Unix 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線](setting-up-https-unixes.md)或 中所述[對於 Windows 上使用 AWS CLI 登入資料協助程式的 HTTPS 連線](setting-up-https-windows.md)。

符合上述要求的 Amazon EC2 執行個體已設定為代表您將臨時存取憑證傳達給 CodeCommit。

**注意**  
您可以在 Amazon EC2 執行個體**git-remote-codecommit**上設定和使用 。

若要讓使用者暫時存取 CodeCommit 儲存庫，請完成下列步驟。



## 步驟 1：完成先決條件
<a name="temporary-access-prerequisites"></a>

完成設定步驟，以提供使用者使用輪換憑證存取 CodeCommit 儲存庫：
+ 如需跨帳戶存取權，請參閱[演練：使用 IAM 角色委派跨 Amazon Web Services 帳戶的存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-walkthrough-crossacct.html)和 [使用 角色設定 AWS CodeCommit 儲存庫的跨帳戶存取權](cross-account.md)。
+ 對於 SAML 和聯合身分，請參閱[使用組織的身分驗證系統授予對 AWS 資源的存取權](https://docs.aws.amazon.com/STS/latest/UsingSTS/STSUseCases.html#IdentityBrokerApplication)和[關於以 AWS STS SAML 2.0 為基礎的聯合身分](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html)。
+ 對於 MFA，請參閱[搭配 Multi-Factor Authentication (MFA) 裝置 AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html)和[建立暫時安全登入資料，以啟用 IAM 使用者的存取](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSessionTokens.html)。
+ 對於 Login with Amazon、Amazon Cognito、Facebook、Google 或任何 OIDC 相容身分提供者，請參閱[關於 AWS STS Web Identity Federation](https://docs.aws.amazon.com/STS/latest/UsingSTS/web-identity-federation.html)。

使用 中的資訊[的身分驗證和存取控制 AWS CodeCommit](auth-and-access-control.md)來指定您要授予使用者的 CodeCommit 許可。

## 步驟 2：取得角色名稱或存取登入資料
<a name="temporary-access-get-credentials"></a>

如果您要讓使用者擔任角色以存取儲存庫，請提供使用者該角色的 Amazon Resource Name (ARN)。否則，根據您設定存取的方式而定，使用者可以透過下列其中一種方法取得輪換登入資料：
+ 如需跨帳戶存取，請呼叫 the AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 命令或呼叫 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API。
+ 對於 SAML，請呼叫 the AWS CLI [assume-role-with-saml](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) 命令或 AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API。
+ 對於聯合，請呼叫 the AWS CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 或 [get-federation-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html) 命令或 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 或 [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) APIs。
+ 對於 MFA，請呼叫 AWS CLI [get-session-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html) 命令或 AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) API。
+ 對於 Login with Amazon、Amazon Cognito、Facebook、Google 或任何 OIDC 相容身分提供者，請呼叫 AWS CLI [assume-role-with-web-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) 命令或 AWS STS [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) API。



## 步驟 3：安裝 git-remote-codecommit 並設定 AWS CLI
<a name="temporary-access-configure-credentials"></a>

您必須在 中安裝[https://pypi.org/project/git-remote-codecommit/](https://pypi.org/project/git-remote-codecommit/)和設定設定檔，將本機電腦設定為使用存取憑證 AWS CLI。

1. 遵循[設定 ](setting-up.md)中的指示來設定 AWS CLI。使用 **aws configure** 命令設定一或多個描述檔。當您使用輪換憑證連線至 CodeCommit 儲存庫時，請考慮建立要使用的具名設定檔。

1. 您可以透過下列其中一種方式，將登入資料與使用者的 AWS CLI 具名設定檔建立關聯。
   + 如果您擔任角色來存取 CodeCommit，請使用擔任該角色所需的資訊來設定具名設定檔。例如，如果您想要在 Amazon Web Services 帳戶 111111111111 中擔任名為 *CodeCommitAccess* 的角色，您可以設定預設描述檔，以便在使用其他 AWS 資源時使用 ，以及在擔任該角色時使用的具名描述檔。下列命令會建立名為 *CodeAccess* 的具名設定檔，擔任名為 *CodeCommitAccess* 的角色。Maria*\$1Garcia* 使用者名稱與工作階段相關聯，且預設設定檔設定為其 AWS 登入資料的來源：

     ```
     aws configure set role_arn arn:aws:iam::111111111111:role/CodeCommitAccess --profile CodeAccess
     aws configure set source_profile default --profile CodeAccess
     aws configure set role_session_name "Maria_Garcia" --profile CodeAccess
     ```

     若要驗證變更，請手動檢視或編輯 `~/.aws/config` 檔案 (若為 Linux) 或 `%UserProfile%.aws\config` 檔案 (若為 Windows)，並檢閱具名描述檔下的資訊。例如，您的檔案看起來可能會類似以下內容：

     ```
     [default]
     region = us-east-1
     output = json
     
     [profile CodeAccess]
     source_profile = default
     role_session_name = Maria_Garcia
     role_arn = arn:aws:iam::111111111111:role/CodeCommitAccess
     ```

      設定具名設定檔之後，您可以使用具名設定檔，透過 **git-remote-codecommit**公用程式複製 CodeCommit 儲存庫。例如，若要複製名為 *MyDemoRepo* 的儲存庫：

     ```
     git clone codecommit://CodeAccess@MyDemoRepo
     ```
   + 如果您使用的是 Web 聯合身分和 OpenID Connect (OIDC)，請設定具名設定檔，以代表您進行 AWS Security Token Service (AWS STS) `AssumeRoleWithWebIdentity` API 呼叫來重新整理臨時憑證。使用 **aws configure set**命令或手動編輯 `~/.aws/credentials` 檔案 （適用於 Linux) 或 `%UserProfile%.aws\credentials` 檔案 （適用於 Windows)，以新增具有所需設定值的 AWS CLI 具名設定檔。例如，若要建立擔任 *CodeCommitAccess* 角色並使用 Web 身分字符檔案 \$1/*my-credentials**/my-token-file* 的設定檔：

     ```
     [CodeCommitWebIdentity]
     role_arn = arn:aws:iam::111111111111:role/CodeCommitAccess
     web_identity_token_file=~/my-credentials/my-token-file
     role_session_name = Maria_Garcia
     ```

   如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[設定 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 和[使用 IAM 角色 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)。

## 步驟 4：存取 CodeCommit 儲存庫
<a name="temporary-access-use-credentials"></a>

假設您的使用者已遵循 中的指示[連接到儲存庫](how-to-connect.md)連線至 CodeCommit 儲存庫，則使用者接著會使用 **git-remote-codecommit**和 Git 提供的擴充功能來呼叫 **git clone**、 **git push**和 ，**git pull**以複製、推送和提取其可存取的 CodeCommit 儲存庫。例如，若要複製儲存庫：

```
git clone codecommit://CodeAccess@MyDemoRepo
```

Git 遞交、推送和提取命令會使用常規 Git 語法。

當使用者使用 AWS CLI 並指定與輪換存取憑證相關聯的 AWS CLI 具名設定檔時，會傳回範圍限定於該設定檔的結果。



# 的 Identity and Access Management AWS CodeCommit
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) 是 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可控制誰可以*進行身分驗證* （登入） 和*授權* （具有許可），以使用 CodeCommit 資源。IAM 是 AWS 服務 您可以免費使用的 。

**Topics**
+ [目標對象](#security_iam_audience)
+ [使用身分驗證](#security_iam_authentication)
+ [使用政策管理存取權](#security_iam_access-manage)
+ [的身分驗證和存取控制 AWS CodeCommit](auth-and-access-control.md)
+ [AWS CodeCommit 如何使用 IAM](security_iam_service-with-iam.md)
+ [CodeCommit 資源型政策](#security_iam_service-with-iam-resource-based-policies)
+ [以 CodeCommit 標籤為基礎的授權](#security_iam_service-with-iam-tags)
+ [CodeCommit IAM 角色](#security_iam_service-with-iam-roles)
+ [AWS CodeCommit 身分型政策範例](#security_iam_id-based-policy-examples)
+ [對 AWS CodeCommit 身分和存取進行故障診斷](#security_iam_troubleshoot)

## 目標對象
<a name="security_iam_audience"></a>

使用方式 AWS Identity and Access Management (IAM) 會根據您的角色而有所不同：
+ **服務使用者** — 若無法存取某些功能，請向管理員申請所需許可 (請參閱 [對 AWS CodeCommit 身分和存取進行故障診斷](#security_iam_troubleshoot))
+ **服務管理員** — 負責設定使用者存取權並提交相關許可請求 (請參閱 [AWS CodeCommit 如何使用 IAM](security_iam_service-with-iam.md))
+ **IAM 管理員** — 撰寫政策以管理存取控制 (請參閱 [AWS CodeCommit 身分型政策範例](#security_iam_id-based-policy-examples))

## 使用身分驗證
<a name="security_iam_authentication"></a>

身分驗證是您 AWS 使用身分憑證登入 的方式。您必須以 AWS 帳戶根使用者、IAM 使用者或擔任 IAM 角色身分進行身分驗證。

您可以使用身分來源的登入資料，例如 AWS IAM Identity Center (IAM Identity Center)、單一登入身分驗證或 Google/Facebook 登入資料，以聯合身分的形式登入。如需有關登入的詳細資訊，請參閱《AWS 登入 使用者指南》**中的[如何登入您的 AWS 帳戶](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

對於程式設計存取， AWS 提供 SDK 和 CLI 以密碼編譯方式簽署請求。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [API 請求的AWS 第 4 版簽署程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 帳戶 根使用者
<a name="security_iam_authentication-rootuser"></a>

 當您建立 時 AWS 帳戶，您會從一個名為 AWS 帳戶 *theroot 使用者的*登入身分開始，該身分具有對所有 AWS 服務 和 資源的完整存取權。強烈建議不要使用根使用者來執行日常任務。有關需要根使用者憑證的任務，請參閱《IAM 使用者指南》**中的[需要根使用者憑證的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### IAM 使用者和群組
<a name="security_iam_authentication-iamuser"></a>

*IAM 使用者*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是一種身分具備單人或應用程式的特定許可權。建議以臨時憑證取代具備長期憑證的 IAM 使用者。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) 。

[IAM 群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)**會指定 IAM 使用者集合，使管理大量使用者的許可權更加輕鬆。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 使用者的使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*IAM 角色*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)的身分具有特定許可權，其可以提供臨時憑證。您可以透過[從使用者切換到 IAM 角色 （主控台） ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或呼叫 AWS CLI 或 AWS API 操作來擔任角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取權與跨服務存取，以及在 Amazon EC2 執行的應用程式。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用政策管理存取權
<a name="security_iam_access-manage"></a>

您可以透過建立政策並將其連接到身分或資源 AWS 來控制 AWS 中的存取。政策定義與身分或資源相關聯的許可。當委託人提出請求時 AWS ， 會評估這些政策。大多數政策會以 JSON 文件 AWS 的形式存放在 中。如需進一步了解 JSON 政策文件，請參閱《*IAM 使用者指南*》中的 [JSON 政策概觀](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理員會使用政策，透過定義哪些**主體**可在哪些**條件**下對哪些**資源**執行**動作**，以指定可存取的範圍。

預設情況下，使用者和角色沒有許可。IAM 管理員會建立 IAM 政策並將其新增至角色，供使用者後續擔任。IAM 政策定義動作的許可，無論採用何種方式執行。

### 身分型政策
<a name="security_iam_access-manage-id-based-policies"></a>

身分型政策是附加至身分 (使用者、使用者群組或角色) 的 JSON 許可政策文件。這類政策控制身分可對哪些資源執行哪些動作，以及適用的條件。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

身分型政策可分為*內嵌政策* (直接內嵌於單一身分) 與*受管政策* (可附加至多個身分的獨立政策)。如需了解如何在受管政策及內嵌政策之間做選擇，請參閱《IAM 使用者指南》**中的[在受管政策與內嵌政策之間選擇](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 資源型政策
<a name="security_iam_access-manage-resource-based-policies"></a>

資源型政策是附加到資源的 JSON 政策文件。範例包括 IAM *角色信任政策*與 Amazon S3 *儲存貯體政策*。在支援資源型政策的服務中，服務管理員可以使用它們來控制對特定資源的存取權限。您必須在資源型政策中[指定主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

資源型政策是位於該服務中的內嵌政策。您無法在資源型政策中使用來自 IAM 的 AWS 受管政策。

### 存取控制清單 (ACL)
<a name="security_iam_access-manage-acl"></a>

存取控制清單 (ACL) 可控制哪些主體 (帳戶成員、使用者或角色) 擁有存取某資源的許可。ACL 類似於資源型政策，但它們不使用 JSON 政策文件格式。

Amazon S3 AWS WAF和 Amazon VPC 是支援 ACLs的服務範例。如需進一步了解 ACL，請參閱《Amazon Simple Storage Service 開發人員指南》**中的[存取控制清單 (ACL) 概觀](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)。

### 其他政策類型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支援其他政策類型，可設定更多常見政策類型授予的最大許可：
+ **許可界限** — 設定身分型政策可授與 IAM 實體的最大許可。如需詳細資訊，請參閱《 IAM 使用者指南》**中的 [IAM 實體許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服務控制政策 (SCP)** — 為 AWS Organizations中的組織或組織單位指定最大許可。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **資源控制政策 (RCP)** — 設定您帳戶中資源可用許可的上限。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[資源控制政策 (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **工作階段政策** — 在以程式設計方式為角色或聯合身分使用者建立臨時工作階段時，以參數形式傳遞的進階政策。如需詳細資訊，請參《*IAM 使用者指南*》中的[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多種政策類型
<a name="security_iam_access-manage-multiple-policies"></a>

當多種類型的政策適用於請求時，產生的許可會更複雜而無法理解。若要了解如何 AWS 在涉及多種政策類型時決定是否允許請求，請參閱《*IAM 使用者指南*》中的[政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# 的身分驗證和存取控制 AWS CodeCommit
<a name="auth-and-access-control"></a>

存取 AWS CodeCommit 需要登入資料。這些登入資料必須具有存取 AWS 資源的許可，例如 CodeCommit 儲存庫，以及您用來管理 Git 登入資料或用於建立 Git 連線的 SSH 公有金鑰的 IAM 使用者。下列各節提供如何使用 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 和 CodeCommit 協助安全存取 資源的詳細資訊：
+ [身分驗證](#authentication)
+ [存取控制](#access-control)

## 身分驗證
<a name="authentication"></a>

由於 CodeCommit 儲存庫是以 Git 為基礎，並支援 Git 的基本功能，包括 Git 登入資料，我們建議您在使用 CodeCommit 時使用 IAM 使用者。您可以使用其他身分類型存取 CodeCommit，但其他身分類型會受到限制，如下所述。

身分類型：
+ **IAM 使用者** – [IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是您 Amazon Web Services 帳戶中具有特定自訂許可的身分。例如，IAM 使用者可以擁有建立和管理 Git 登入資料的許可，以存取 CodeCommit 儲存庫。**這是使用 CodeCommit 的建議使用者類型。**您可以使用 IAM 使用者名稱和密碼登入安全 AWS 網頁，例如 [AWS 管理主控台](https://console.aws.amazon.com/)、[AWS 開發論壇](https://forums.aws.amazon.com/)或 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)。

  您可以產生 Git 登入資料，或將 SSH 公有金鑰與 IAM 使用者建立關聯，也可以安裝和設定 **git-remote-codecommit**。這些是設定 Git 以使用 CodeCommit 儲存庫的最簡單方法。使用 [Git 登入](setting-up-gc.md)資料，您可以在 IAM 中產生靜態使用者名稱和密碼。然後，使用這些登入資料，對 Git 及支援 Git 使用者名稱和密碼身分驗證的任何第三方工具，建立 HTTPS 連線。使用 SSH 連接，您可以在本機電腦上建立 Git 和 CodeCommit 用於 SSH 身分驗證的公有和私有金鑰檔案。您可以將公有金鑰與 IAM 使用者建立關聯，並將私有金鑰存放在本機機器上。 **[git-remote-codecommit](setting-up-git-remote-codecommit.md)**會擴展 Git 本身，而且不需要為使用者設定 Git 憑證。

  此外，您可以為每個使用者產生[存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。當您透過[其中一個 AWS SDKs](https://aws.amazon.com/tools/) 或使用 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) 以程式設計方式存取 AWS 服務時，請使用存取金鑰。軟體開發套件和 CLI 工具會使用存取金鑰，以加密方式簽署您的請求。如果您不使用 AWS 工具，則必須自行簽署請求。CodeCommit 支援 *Signature 第 4 版*，這是用於驗證傳入 API 請求的通訊協定。如需有關驗證請求的詳細資訊，請參閱《AWS 一般參考》**中的 [Signature 第 4 版簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。
+ **Amazon Web Services 帳戶根使用者** – 當您註冊時 AWS，請提供與您的 Amazon Web Services 帳戶相關聯的電子郵件地址和密碼。這些是您的*根憑證*，可完整存取您的所有 AWS 資源。有些 CodeCommit 功能不適用於根帳戶使用者。此外，搭配根帳戶使用 Git 的唯一方法是安裝和設定 **git-remote-codecommit**（建議） 或設定 AWS 登入資料協助程式，這包含在 中 AWS CLI。Git 登入資料或 SSH 公有私有金鑰對不能與根帳戶使用者一起使用。基於這些原因，我們不建議您在與 CodeCommit 互動時使用根帳戶使用者。
**重要**  
基於安全理由，建議您只在建立*管理員使用者*時使用根憑證，這是擁有 AWS 帳戶完整許可的 *IAM 使用者*。然後，您可以使用此管理員使用者建立其他 IAM 使用者和角色，並授予有限許可。如需詳細資訊，請參閱《IAM 使用者指南》[https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users)中的[IAM 最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)和*建立 Admin (管理員) 使用者和群組*。
+ **IAM Identity Center 和 IAM Identity Center 中的使用者** – AWS IAM Identity Center 擴展 的功能 AWS Identity and Access Management ，以提供集中位置，將使用者的管理及其對 AWS 帳戶 和雲端應用程式的存取整合在一起。雖然建議大多數使用 的使用者採用最佳實務 AWS，但 IAM Identity Center 目前不提供 Git 登入資料或 SSH 金鑰對的機制。這些使用者可以安裝和設定 **git-remote-codecommit**以本機複製 CodeCommit 儲存庫，但並非所有整合的開發環境 (IDEs) 都支援使用 複製、推送或提取**git-remote-codecommit**。

  最佳實務是要求人類使用者使用聯合身分提供者，以 AWS 服務 使用臨時憑證存取 。

  *聯合身分*是您企業目錄、Web 身分提供者的使用者，或使用來自身分來源的 AWS 服務 憑證存取 Directory Service 。聯合身分會擔任角色，而該角色會提供臨時憑證。

  若需集中化管理存取權限，建議使用 AWS IAM Identity Center。如需詳細資訊，請參閱 *AWS IAM Identity Center 使用者指南*中的[什麼是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。
+ **IAM 角色** – 與 IAM 使用者一樣，[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是您可以在帳戶中建立的 IAM 身分，以授予特定許可。

  *IAM 角色*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)的身分具有特定許可權，其可以提供臨時憑證。您可以透過[從使用者切換到 IAM 角色 （主控台） ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或呼叫 AWS CLI 或 AWS API 操作來擔任角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

  IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取權與跨服務存取，以及在 Amazon EC2 執行的應用程式。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。
**注意**  
 Git 登入資料或 SSH 公有私有金鑰對不能與聯合身分使用者一起使用。此外，使用者偏好設定不適用於聯合身分使用者。如需如何使用聯合存取設定連線的相關資訊，請參閱[AWS CodeCommit 使用 git-remote-codecommit 對 HTTPS 連線的設定步驟](setting-up-git-remote-codecommit.md)。

## 存取控制
<a name="access-control"></a>

您可以擁有有效的登入資料來驗證請求，但除非您具有許可，否則無法建立或存取 CodeCommit 資源。例如，您必須有許可來檢視儲存庫、推送程式碼、建立和管理 Git 登入資料等等。

下列各節說明如何管理 CodeCommit 的許可。我們建議您先閱讀概觀。
+ [管理 CodeCommit 資源存取許可的概觀](#auth-and-access-control-iam-access-control-identity-based)
+ [針對 CodeCommit 使用身分型政策 (IAM 政策）](auth-and-access-control-iam-identity-based-access-control.md)
+ [CodeCommit 許可參考](auth-and-access-control-permissions-reference.md)

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

每個 AWS 資源都由 Amazon Web Services 帳戶擁有。建立或存取資源的許可由許可政策所控管。帳戶管理員可以將許可政策連接到 IAM 身分 (即使用者、群組和角色)。有些 服務，例如 AWS Lambda，也支援將許可政策連接至 資源。

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

授予許可時，您會決定誰取得許可、為了哪些資源而取得許可，以及您允許對這些資源進行的特定動作。

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

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

在 CodeCommit 中，主要資源是儲存庫。每個資源都有一個相關聯的唯一 Amazon Resource Name (ARN)。在政策中，您使用 Amazon Resource Name (ARN) 來識別要套用政策的資源。如需 ARN 的詳細資訊，請參閱《Amazon Web Services 一般參考》**中的 [Amazon Resource Name (ARN) 與 AWS 服務命名空間](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。CodeCommit 目前不支援其他資源類型，稱為子資源。

下表說明如何指定 CodeCommit 資源。


| 資源類型 | ARN 格式 | 
| --- | --- | 
| 儲存庫 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  所有 CodeCommit 儲存庫  |  arn:aws:codecommit:\$1  | 
|  指定 中指定帳戶擁有的所有 CodeCommit 儲存庫 AWS 區域  |  arn:aws:codecommit:*region*:*account-id*:\$1  | 

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

例如，您可以在陳述式中使用 ARN 指定特定的儲存庫 (*MyDemoRepo*)，如下所示：

```
"Resource": "arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo"
```

若要指定屬於特定帳戶的所有儲存庫，請使用萬用字元 (\$1)，如下所示：

```
"Resource": "arn:aws:codecommit:us-west-2:111111111111:*"
```

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

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

您也可以使用萬用字元 (\$1)，以指定與儲存庫名稱局部相符的所有資源。例如，下列 ARN 會指定任何以 名稱開頭，`MyDemo`並在 `111111111111`中向 Amazon Web Services 帳戶註冊的 CodeCommit `us-east-2` 儲存庫 AWS 區域：

```
arn:aws:codecommit:us-east-2:111111111111:MyDemo*
```

 如需使用 CodeCommit 資源的可用操作清單，請參閱 [CodeCommit 許可參考](auth-and-access-control-permissions-reference.md)。

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

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

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

若要管理對 AWS 資源的存取，您可以使用 許可政策。*許可政策*描述誰可以存取哪些資源。以下部分說明用來建立許可政策的選項。

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

連接至 IAM 身分的許可政策稱為以身分為基礎的政策 (IAM 政策）。連接到資源的許可政策稱為資源型政策。目前，CodeCommit 僅支援以身分為基礎的政策 (IAM 政策）。

**Topics**
+ [身分類型政策 (IAM 政策)](#identity-based-policies)
+ [資源型政策](#resource-based-policies-overview)

#### 身分類型政策 (IAM 政策)
<a name="identity-based-policies"></a>

若要管理對 AWS 資源的存取，請將許可政策連接至 IAM 身分。在 CodeCommit 中，您可以使用身分型政策來控制對儲存庫的存取。例如，您可以執行下列動作：
+ **將許可政策連接至您帳戶中的使用者或群組** – 若要授予使用者在 CodeCommit 主控台中檢視 CodeCommit 資源的許可，請將身分型許可政策連接至使用者或使用者所屬的群組。
+ **將許可政策連接至角色 （授予跨帳戶許可）** – 委派，例如當您想要授予跨帳戶存取權時，涉及在擁有資源的帳戶 （信任帳戶） 與包含需要存取資源之使用者的帳戶 （信任帳戶） 之間設定信任。許可政策授予角色的使用者對資源執行預定任務所需的許可。信任政策指定允許哪些受信任帳戶授予其使用者擔任角色的許可。如需詳細資訊，請參閱 [IAM 術語和概念](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)。

  若要授予跨帳戶許可，請將身分型許可政策連接至 IAM 角色。例如，帳戶 A 中的管理員可以建立角色，將跨帳戶許可授予另一個 Amazon Web Services 帳戶 （例如帳戶 B) 或 AWS 服務，如下所示：

  1. 帳戶 A 管理員建立 IAM 角色，並將許可政策連接到可授與帳戶 A 中資源許可的角色。

  1. 帳戶 A 管理員將信任政策連接至該角色，識別帳戶 B 做為可擔任該角的委託人。

  1. 帳戶 B 管理員接著可以將擔任該角色的許可委派給帳戶 B 中的任何使用者。這樣做可讓帳戶 B 中的使用者建立或存取帳戶 A 中的資源。如果您想要授予 AWS 服務擔任該角色的許可，信任政策中的委託人也可以是 AWS 服務委託人。如需詳細資訊，請參閱 [IAM 術語和概念](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)中的委派。

  如需使用 IAM 來委派許可的相關資訊，請參閱《IAM 使用者指南》**中的[存取管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。



下列範例政策允許使用者在名為 *MyDemoRepo* 的儲存庫中建立分支：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codecommit:CreateBranch"
      ],
      "Resource" : "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo"
    }
  ]
}
```

------

若要限制您帳戶中使用者可存取的呼叫和資源，請建立特定的 IAM 政策，然後將這些政策連接到 IAM 使用者。如需如何建立 IAM 角色和探索 CodeCommit 範例 IAM 政策陳述式的詳細資訊，請參閱 [客戶受管身分政策範例](customer-managed-policies.md#customer-managed-policies-identity)。

#### 資源型政策
<a name="resource-based-policies-overview"></a>

有些 服務，例如 Amazon S3，也支援以資源為基礎的許可政策。例如，您可以將資源型政策連接至 S3 儲存貯體，以管理該儲存貯體的存取許可。CodeCommit 不支援以資源為基礎的政策，但您可以使用標籤來識別資源，然後您可以在 IAM 政策中使用。如需以標籤為基礎的政策範例，請參閱[身分類型政策 (IAM 政策)](#identity-based-policies)。

### CodeCommit 中的資源範圍
<a name="resource-scoping"></a>

在 CodeCommit 中，您可以將身分型政策和許可範圍限定為 資源，如 中所述[CodeCommit 資源和操作](#arn-formats)。但是，您無法將 `ListRepositories` 許可的範圍限定於某個資源。反之，您必須將其範圍開放給所有資源 (使用萬用字元 `*`)。否則，動作會失敗。

所有其他 CodeCommit 許可都可以範圍限定為 資源。

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

您可以建立政策來允許或拒絕使用者存取資源，或允許或拒絕使用者對這些資源採取特定動作。CodeCommit 定義一組公有 API 操作，可定義使用者如何使用服務，無論是透過 CodeCommit 主控台、 SDKs AWS CLI、 還是直接呼叫這些 APIs。若要授予這些 API 操作的許可，CodeCommit 會定義一組您可以在政策中指定的動作。

某些 API 操作會需要多個動作的許可。如需資源與 API 操作的詳細資訊，請參閱 [CodeCommit 資源和操作](#arn-formats) 與 [CodeCommit 許可參考](auth-and-access-control-permissions-reference.md).

以下是政策的基本元素：
+ **資源** – 若要識別政策套用的資源，請使用 Amazon Resource Name (ARN)。如需詳細資訊，請參閱[CodeCommit 資源和操作](#arn-formats)。
+ **動作** – 若要識別您要允許或拒絕的資源操作，請使用動作關鍵字。例如，根據指定的 `Effect`， `codecommit:GetBranch`許可會允許或拒絕使用者執行 `GetBranch`操作，以取得 CodeCommit 儲存庫中分支的詳細資訊。
+ **效果** – 您可以指定當使用者請求特定動作時，允許或拒絕的效果。如果您未明確授予存取 (允許) 資源，則隱含地拒絕存取。您也可以明確拒絕存取資源，以確保即使另一個政策授予存取，使用者也無法存取該資源。
+ **委託人** – 在以身分為基礎的政策 (IAM 政策） 中，CodeCommit 支援的唯一政策類型，附加政策的使用者是隱含委託人。

若要進一步了解 IAM 政策語法，請參閱《IAM **[使用者指南》中的 IAM 政策參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

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

### 在政策中指定條件
<a name="policy-conditions"></a>

當您授予許可時，您可以使用 IAM 的存取政策語言來指定政策應生效的條件。例如，建議只在特定日期之後套用政策。如需以政策語言指定條件的詳細資訊，請參閱《*IAM 使用者指南*》中的[條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition)和[政策語法](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)。

欲表示條件，您可以使用預先定義的條件金鑰。CodeCommit 沒有特定的條件索引鍵。不過，您可以視需要使用 AWS全局條件索引鍵。如需 AWS全局金鑰的完整清單，請參閱《*IAM 使用者指南*》中的[條件的可用金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。

# 針對 CodeCommit 使用身分型政策 (IAM 政策）
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

下列身分型政策範例示範帳戶管理員如何將許可政策連接至 IAM 身分 （使用者、群組和角色），以授予對 CodeCommit 資源執行操作的許可。

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

**Topics**
+ [使用 CodeCommit 主控台所需的許可](#console-permissions)
+ [在主控台檢視資源](#console-resources)
+ [AWS CodeCommit 的 受管政策](security-iam-awsmanpol.md)
+ [客戶管理政策範例](customer-managed-policies.md)

以下是身分型許可政策範例：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codecommit:BatchGetRepositories"
      ],
      "Resource" : [
        "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo",
        "arn:aws:codecommit:us-east-2:111122223333:MyDemo*"
      ]
    }
  ]
}
```

------

此政策有一個陳述式，可讓使用者取得名為 的 CodeCommit 儲存庫，`MyDestinationRepo`以及`MyDemo`以 **us-east-2** 區域中名稱開頭的所有 CodeCommit 儲存庫的相關資訊。

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

若要查看每個 CodeCommit API 操作所需的許可，以及有關 CodeCommit 操作的詳細資訊，請參閱 [CodeCommit 許可參考](auth-and-access-control-permissions-reference.md)。

若要允許使用者使用 CodeCommit 主控台，管理員必須授予他們 CodeCommit 動作的許可。例如，您可以將 [AWSCodeCommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser) 受管政策或其同等政策新增至使用者或群組。

除了身分型政策授予使用者的許可之外，CodeCommit 還需要 AWS Key Management Service (AWS KMS) 動作的許可。IAM 使用者不需要這些動作的明確`Allow`許可，但使用者不得連接任何將下列許可設定為 的政策`Deny`：

```
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:DescribeKey"
```

如需加密和 CodeCommit 的詳細資訊，請參閱 [AWS KMS 和 加密](encryption.md)。

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

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

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

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

# AWS CodeCommit 的 受管政策
<a name="security-iam-awsmanpol"></a>

若要新增許可給使用者、群組和角色，使用 AWS 受管政策比自行撰寫政策更容易。建立 [IAM 客戶受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)需要時間和專業知識，而受管政策可為您的團隊提供其所需的許可。若要快速開始使用，您可以使用我們的 AWS 受管政策。這些政策涵蓋常見的使用案例，並可在您的 AWS 帳戶中使用。如需 AWS 受管政策的詳細資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

AWS 服務會維護和更新 AWS 受管政策。您無法變更 AWS 受管政策中的許可。服務偶爾會在 AWS 受管政策中新增其他許可以支援新功能。此類型的更新會影響已連接政策的所有身分識別 (使用者、群組和角色)。當新功能啟動或新操作可用時，服務很可能會更新 AWS 受管政策。服務不會從 AWS 受管政策中移除許可，因此政策更新不會破壞您現有的許可。

此外， AWS 支援跨多個 服務之任務函數的受管政策。例如，**ReadOnlyAccess** AWS 受管政策提供所有 AWS 服務和資源的唯讀存取權。當服務啟動新功能時， 會為新操作和資源 AWS 新增唯讀許可。如需任務職能政策的清單和說明，請參閱 *IAM 使用者指南*中[有關任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。

AWS 透過提供由 建立和管理的獨立 IAM 政策，解決許多常見的使用案例 AWS。這些 AWS 受管政策會授予常見使用案例所需的許可。CodeCommit 的受管政策也提供在其他 服務中執行操作的許可，例如 IAM、Amazon SNS 和 Amazon CloudWatch Events，以滿足已授予相關政策之使用者的責任所需。例如，AWSCodeCommitFullAccess 政策是一種管理層級使用者政策，可讓使用此政策的使用者建立和管理儲存庫的 CloudWatch Events 規則 （名稱字首為 的規則`codecommit`) 和 Amazon SNS 主題，以取得儲存庫相關事件的通知 （名稱字首為 的主題`codecommit`)，以及在 CodeCommit 中管理儲存庫。

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

**Topics**
+ [AWS 受管政策：AWSCodeCommitFullAccess](#managed-policies-full)
+ [AWS 受管政策：AWSCodeCommitPowerUser](#managed-policies-poweruser)
+ [AWS 受管政策：AWSCodeCommitReadOnly](#managed-policies-read)
+ [CodeCommit 受管政策和通知](#notifications-permissions)
+ [AWS CodeCommit 受管政策和 Amazon CodeGuru Reviewer](#codeguru-permissions)
+ [AWS 受管政策的 CodeCommit 更新](#security-iam-awsmanpol-updates)

## AWS 受管政策：AWSCodeCommitFullAccess
<a name="managed-policies-full"></a>

您可將 `AWSCodeCommitFullAccess` 政策連接到 IAM 身分。此政策授予 CodeCommit 的完整存取權。僅將此政策套用至您想要授予對 Amazon Web Services 帳戶中 CodeCommit 儲存庫和相關資源完全控制權的管理層級使用者，包括刪除儲存庫的能力。

AWSCodeCommitFullAccess 政策包含下列政策陳述式：

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

****  

```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "codecommit:*"
          ],
          "Resource": "*"
        },
        {
          "Sid": "CloudWatchEventsCodeCommitRulesAccess",
          "Effect": "Allow",
          "Action": [
            "events:DeleteRule",
            "events:DescribeRule",
            "events:DisableRule",
            "events:EnableRule",
            "events:PutRule",
            "events:PutTargets",
            "events:RemoveTargets",
            "events:ListTargetsByRule"
          ],
          "Resource": "arn:aws:events:*:*:rule/codecommit*"
        },
        {
          "Sid": "SNSTopicAndSubscriptionAccess",
          "Effect": "Allow",
          "Action": [
            "sns:CreateTopic",
            "sns:DeleteTopic",
            "sns:Subscribe",
            "sns:Unsubscribe",
            "sns:SetTopicAttributes"
          ],
          "Resource": "arn:aws:sns:*:*:codecommit*"
        },
        {
          "Sid": "SNSTopicAndSubscriptionReadAccess",
          "Effect": "Allow",
          "Action": [
            "sns:ListTopics",
            "sns:ListSubscriptionsByTopic",
            "sns:GetTopicAttributes"
          ],
          "Resource": "*"
        },
        {
          "Sid": "LambdaReadOnlyListAccess",
          "Effect": "Allow",
          "Action": [
            "lambda:ListFunctions"
          ],
          "Resource": "*"
        },
        {
          "Sid": "IAMReadOnlyListAccess",
          "Effect": "Allow",
          "Action": [
            "iam:ListUsers"
          ],
          "Resource": "*"
        },
        {
          "Sid": "IAMReadOnlyConsoleAccess",
          "Effect": "Allow",
          "Action": [
            "iam:ListAccessKeys",
            "iam:ListSSHPublicKeys",
            "iam:ListServiceSpecificCredentials"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "IAMUserSSHKeys",
          "Effect": "Allow",
          "Action": [
            "iam:DeleteSSHPublicKey",
            "iam:GetSSHPublicKey",
            "iam:ListSSHPublicKeys",
            "iam:UpdateSSHPublicKey",
            "iam:UploadSSHPublicKey"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "IAMSelfManageServiceSpecificCredentials",
          "Effect": "Allow",
          "Action": [
            "iam:CreateServiceSpecificCredential",
            "iam:UpdateServiceSpecificCredential",
            "iam:DeleteServiceSpecificCredential",
            "iam:ResetServiceSpecificCredential"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "CodeStarNotificationsReadWriteAccess",
          "Effect": "Allow",
          "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
          ],
          "Resource": "*",
          "Condition": {
            "ArnLike": {
              "codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*"
            }
          }
        },
        {
          "Sid": "CodeStarNotificationsListAccess",
          "Effect": "Allow",
          "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
          ],
          "Resource": "*"
        },
        {
          "Sid": "CodeStarNotificationsSNSTopicCreateAccess",
          "Effect": "Allow",
          "Action": [
            "sns:CreateTopic",
            "sns:SetTopicAttributes"
          ],
          "Resource": "arn:aws:sns:*:*:codestar-notifications*"
        },
        {
          "Sid": "AmazonCodeGuruReviewerFullAccess",
          "Effect": "Allow",
          "Action": [
            "codeguru-reviewer:AssociateRepository",
            "codeguru-reviewer:DescribeRepositoryAssociation",
            "codeguru-reviewer:ListRepositoryAssociations",
            "codeguru-reviewer:DisassociateRepository",
            "codeguru-reviewer:DescribeCodeReview",
            "codeguru-reviewer:ListCodeReviews"
          ],
          "Resource": "*"
        },
        {
          "Sid": "AmazonCodeGuruReviewerSLRCreation",
          "Action": "iam:CreateServiceLinkedRole",
          "Effect": "Allow",
          "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer",
          "Condition": {
            "StringLike": {
              "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com"
            }
          }
        },
        {
          "Sid": "CloudWatchEventsManagedRules",
          "Effect": "Allow",
          "Action": [
            "events:PutRule",
            "events:PutTargets",
            "events:DeleteRule",
            "events:RemoveTargets"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "events:ManagedBy": "codeguru-reviewer.amazonaws.com"
            }
          }
        },
        {
          "Sid": "CodeStarNotificationsChatbotAccess",
          "Effect": "Allow",
          "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
          "Resource": "*"
        },
        {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
      ]
    }
```

------

## AWS 受管政策：AWSCodeCommitPowerUser
<a name="managed-policies-poweruser"></a>

您可將 `AWSCodeCommitPowerUser` 政策連接到 IAM 身分。此政策允許使用者存取 CodeCommit 和儲存庫相關資源的所有功能，但不允許他們刪除 CodeCommit 儲存庫，或在其他 AWS 服務中建立或刪除儲存庫相關資源，例如 Amazon CloudWatch Events。建議將此政策套用到大多數使用者。

AWSCodeCommitPowerUser 政策包含下列政策陳述式：

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

****  

```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "codecommit:AssociateApprovalRuleTemplateWithRepository",
            "codecommit:BatchAssociateApprovalRuleTemplateWithRepositories",
            "codecommit:BatchDisassociateApprovalRuleTemplateFromRepositories",
            "codecommit:BatchGet*",
            "codecommit:BatchDescribe*",
            "codecommit:Create*",
            "codecommit:DeleteBranch",
            "codecommit:DeleteFile",
            "codecommit:Describe*",
            "codecommit:DisassociateApprovalRuleTemplateFromRepository",
            "codecommit:EvaluatePullRequestApprovalRules",
            "codecommit:Get*",
            "codecommit:List*",
            "codecommit:Merge*",
            "codecommit:OverridePullRequestApprovalRules",
            "codecommit:Put*",
            "codecommit:Post*",
            "codecommit:TagResource",
            "codecommit:Test*",
            "codecommit:UntagResource",
            "codecommit:Update*",
            "codecommit:GitPull",
            "codecommit:GitPush"
          ],
          "Resource": "*"
        },
        {
          "Sid": "CloudWatchEventsCodeCommitRulesAccess",
          "Effect": "Allow",
          "Action": [
            "events:DeleteRule",
            "events:DescribeRule",
            "events:DisableRule",
            "events:EnableRule",
            "events:PutRule",
            "events:PutTargets",
            "events:RemoveTargets",
            "events:ListTargetsByRule"
          ],
          "Resource": "arn:aws:events:*:*:rule/codecommit*"
        },
        {
          "Sid": "SNSTopicAndSubscriptionAccess",
          "Effect": "Allow",
          "Action": [
            "sns:Subscribe",
            "sns:Unsubscribe"
          ],
          "Resource": "arn:aws:sns:*:*:codecommit*"
        },
        {
          "Sid": "SNSTopicAndSubscriptionReadAccess",
          "Effect": "Allow",
          "Action": [
            "sns:ListTopics",
            "sns:ListSubscriptionsByTopic",
            "sns:GetTopicAttributes"
          ],
          "Resource": "*"
        },
        {
          "Sid": "LambdaReadOnlyListAccess",
          "Effect": "Allow",
          "Action": [
            "lambda:ListFunctions"
          ],
          "Resource": "*"
        },
        {
          "Sid": "IAMReadOnlyListAccess",
          "Effect": "Allow",
          "Action": [
            "iam:ListUsers"
          ],
          "Resource": "*"
        },
        {
          "Sid": "IAMReadOnlyConsoleAccess",
          "Effect": "Allow",
          "Action": [
            "iam:ListAccessKeys",
            "iam:ListSSHPublicKeys",
            "iam:ListServiceSpecificCredentials"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "IAMUserSSHKeys",
          "Effect": "Allow",
          "Action": [
            "iam:DeleteSSHPublicKey",
            "iam:GetSSHPublicKey",
            "iam:ListSSHPublicKeys",
            "iam:UpdateSSHPublicKey",
            "iam:UploadSSHPublicKey"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "IAMSelfManageServiceSpecificCredentials",
          "Effect": "Allow",
          "Action": [
            "iam:CreateServiceSpecificCredential",
            "iam:UpdateServiceSpecificCredential",
            "iam:DeleteServiceSpecificCredential",
            "iam:ResetServiceSpecificCredential"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "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:iam::*:role/Service*"
            }
          }
        },
        {
          "Sid": "CodeStarNotificationsListAccess",
          "Effect": "Allow",
          "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
          ],
          "Resource": "*"
        },
        {
          "Sid": "AmazonCodeGuruReviewerFullAccess",
          "Effect": "Allow",
          "Action": [
            "codeguru-reviewer:AssociateRepository",
            "codeguru-reviewer:DescribeRepositoryAssociation",
            "codeguru-reviewer:ListRepositoryAssociations",
            "codeguru-reviewer:DisassociateRepository",
            "codeguru-reviewer:DescribeCodeReview",
            "codeguru-reviewer:ListCodeReviews"
          ],
          "Resource": "*"
        },
        {
          "Sid": "AmazonCodeGuruReviewerSLRCreation",
          "Action": "iam:CreateServiceLinkedRole",
          "Effect": "Allow",
          "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer",
          "Condition": {
            "StringLike": {
              "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com"
            }
          }
        },
        {
          "Sid": "CloudWatchEventsManagedRules",
          "Effect": "Allow",
          "Action": [
            "events:PutRule",
            "events:PutTargets",
            "events:DeleteRule",
            "events:RemoveTargets"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "events:ManagedBy": "codeguru-reviewer.amazonaws.com"
            }
          }
        },
        {
          "Sid": "CodeStarNotificationsChatbotAccess",
          "Effect": "Allow",
          "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
          "Resource": "*"
        },
        {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
      ]
    }
```

------

## AWS 受管政策：AWSCodeCommitReadOnly
<a name="managed-policies-read"></a>

您可將 `AWSCodeCommitReadOnly` 政策連接到 IAM 身分。此政策授予對其他 AWS 服務中 CodeCommit 和儲存庫相關資源的唯讀存取權，以及能夠建立和管理自己的 CodeCommit 相關資源 （例如 Git 登入資料和 SSH 金鑰，供其 IAM 使用者在存取儲存庫時使用）。將此政策套用至使用者，以授予他們讀取儲存庫內容的權利 (但不得變更內容)。

AWSCodeCommitReadOnly 政策包含下列政策陳述式：

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

****  

```
    { 
       "Version":"2012-10-17",		 	 	 
       "Statement":[ 
          { 
             "Effect":"Allow",
             "Action":[ 
                "codecommit:BatchGet*",
                "codecommit:BatchDescribe*",
                "codecommit:Describe*",
                "codecommit:EvaluatePullRequestApprovalRules",
                "codecommit:Get*",
                "codecommit:List*",
                "codecommit:GitPull"
             ],
             "Resource":"*"
          },
          { 
             "Sid":"CloudWatchEventsCodeCommitRulesReadOnlyAccess",
             "Effect":"Allow",
             "Action":[ 
                "events:DescribeRule",
                "events:ListTargetsByRule"
             ],
             "Resource":"arn:aws:events:*:*:rule/codecommit*"
          },
          { 
             "Sid":"SNSSubscriptionAccess",
             "Effect":"Allow",
             "Action":[ 
                "sns:ListTopics",
                "sns:ListSubscriptionsByTopic",
                "sns:GetTopicAttributes"
             ],
             "Resource":"*"
          },
          { 
             "Sid":"LambdaReadOnlyListAccess",
             "Effect":"Allow",
             "Action":[ 
                "lambda:ListFunctions"
             ],
             "Resource":"*"
          },
          { 
             "Sid":"IAMReadOnlyListAccess",
             "Effect":"Allow",
             "Action":[ 
                "iam:ListUsers"
             ],
             "Resource":"*"
          },
          { 
             "Sid":"IAMReadOnlyConsoleAccess",
             "Effect":"Allow",
             "Action":[ 
                "iam:ListAccessKeys",
                "iam:ListSSHPublicKeys",
                "iam:ListServiceSpecificCredentials",
                "iam:GetSSHPublicKey"
             ],
             "Resource":"arn:aws:iam::*:user/${aws:username}"
          },
          { 
             "Sid":"CodeStarNotificationsReadOnlyAccess",
             "Effect":"Allow",
             "Action":[ 
                "codestar-notifications:DescribeNotificationRule"
             ],
             "Resource":"*",
             "Condition":{ 
                "ArnLike":{ 
                   "codestar-notifications:NotificationsForResource":"arn:aws:codecommit:us-east-2:111122223333:*"
                }
             }
          },
          { 
             "Sid":"CodeStarNotificationsListAccess",
             "Effect":"Allow",
             "Action":[ 
                "codestar-notifications:ListNotificationRules",
                "codestar-notifications:ListEventTypes",
                "codestar-notifications:ListTargets"
             ],
             "Resource":"*"
          },
          {
             "Sid": "AmazonCodeGuruReviewerReadOnlyAccess",
             "Effect": "Allow",
             "Action": [
                "codeguru-reviewer:DescribeRepositoryAssociation",
                "codeguru-reviewer:ListRepositoryAssociations",
                "codeguru-reviewer:DescribeCodeReview",
                "codeguru-reviewer:ListCodeReviews"
             ],
             "Resource": "*"
          },
          {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
    ]
}
```

------

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

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

### 完整存取受管政策中的通知相關許可
<a name="notifications-fullaccess"></a>

`AWSCodeCommitFullAccess` 受管政策包含下列陳述式，允許對通知的完整存取權限。套用此受管政策的使用者也可以為通知建立和管理 Amazon SNS 主題、訂閱和取消訂閱使用者主題、列出要選擇做為通知規則目標的主題，以及在為 Slack 設定的聊天應用程式中列出 Amazon Q Developer。

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit:*"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource,"
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsSNSTopicCreateAccess",
        "Effect": "Allow",
        "Action": [
            "sns:CreateTopic",
            "sns:SetTopicAttributes"
        ],
        "Resource": "arn:aws:sns:*:*:codestar-notifications*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

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

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

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

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

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

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit*"} 
        }
    },    
    {
        "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 和通知的詳細資訊，請參閱 [AWS CodeStar通知的 Identity and Access Management](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html)。

## AWS CodeCommit 受管政策和 Amazon CodeGuru Reviewer
<a name="codeguru-permissions"></a>

CodeCommit 支援 Amazon CodeGuru Reviewer，這是一種自動化程式碼檢閱服務，使用程式分析和機器學習來偵測常見問題，並建議修正 Java 或 Python 程式碼。CodeCommit 的受管政策包含 CodeGuru Reviewer 功能的政策陳述式。如需詳細資訊，請參閱[什麼是 Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html)。

### AWSCodeCommitFullAccess 中與 CodeGuru Reviewer 相關的許可
<a name="codeguru-fullaccess"></a>

`AWSCodeCommitFullAccess` 受管政策包含下列陳述式，以允許 CodeGuru Reviewer 與 CodeCommit 儲存庫建立關聯和取消關聯。套用此受管政策的使用者也可以檢視 CodeCommit 儲存庫與 CodeGuru Reviewer 之間的關聯狀態，以及檢視提取請求的檢閱任務狀態。

```
    {
      "Sid": "AmazonCodeGuruReviewerFullAccess",
      "Effect": "Allow",
      "Action": [
        "codeguru-reviewer:AssociateRepository",
        "codeguru-reviewer:DescribeRepositoryAssociation",
        "codeguru-reviewer:ListRepositoryAssociations",
        "codeguru-reviewer:DisassociateRepository",
        "codeguru-reviewer:DescribeCodeReview",
        "codeguru-reviewer:ListCodeReviews"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AmazonCodeGuruReviewerSLRCreation",
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com"
        }
      }
    },
    {
      "Sid": "CloudWatchEventsManagedRules",
      "Effect": "Allow",
      "Action": [
        "events:PutRule",
        "events:PutTargets",
        "events:DeleteRule",
        "events:RemoveTargets"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "events:ManagedBy": "codeguru-reviewer.amazonaws.com"
        }
      }
    }
```

### AWSCodeCommitPowerUser 中 CodeGuru Reviewer 的相關許可
<a name="codeguru-poweruser"></a>

`AWSCodeCommitPowerUser` 受管政策包含下列陳述式，可讓使用者將儲存庫與 CodeGuru Reviewer 建立關聯和取消關聯、檢視關聯狀態，以及檢視提取請求的檢閱任務狀態。

```
    {
      "Sid": "AmazonCodeGuruReviewerFullAccess",
      "Effect": "Allow",
      "Action": [
        "codeguru-reviewer:AssociateRepository",
        "codeguru-reviewer:DescribeRepositoryAssociation",
        "codeguru-reviewer:ListRepositoryAssociations",
        "codeguru-reviewer:DisassociateRepository",
        "codeguru-reviewer:DescribeCodeReview",
        "codeguru-reviewer:ListCodeReviews"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AmazonCodeGuruReviewerSLRCreation",
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com"
        }
      }
    },
    {
      "Sid": "CloudWatchEventsManagedRules",
      "Effect": "Allow",
      "Action": [
        "events:PutRule",
        "events:PutTargets",
        "events:DeleteRule",
        "events:RemoveTargets"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "events:ManagedBy": "codeguru-reviewer.amazonaws.com"
        }
      }
    }
```

### AWSCodeCommitReadOnly 中與 CodeGuru Reviewer 相關的許可
<a name="codeguru-readonly"></a>

`AWSCodeCommitReadOnlyAccess` 受管政策包含下列陳述式，以允許唯讀存取 CodeGuru Reviewer 關聯狀態，並檢視提取請求的檢閱任務狀態。套用此受管原則的使用者無法建立或取消儲存庫的關聯。

```
     {
      "Sid": "AmazonCodeGuruReviewerReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
            "codeguru-reviewer:DescribeRepositoryAssociation",
            "codeguru-reviewer:ListRepositoryAssociations",
            "codeguru-reviewer:DescribeCodeReview",
            "codeguru-reviewer:ListCodeReviews"
      ],
      "Resource": "*"
    }
```

### Amazon CodeGuru Reviewer 服務連結角色
<a name="codeguru-slr"></a>

當您將儲存庫與 CodeGuru Reviewer 建立關聯時，會建立服務連結角色，以便 CodeGuru Reviewer 在提取請求中偵測問題並建議修正 Java 或 Python 程式碼。服務連結角色名為 AWSServiceRoleForAmazonCodeGuruReviewer。如需詳細資訊，請參閱[使用 Amazon CodeGuru Reviewer 的服務連結角色](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/using-service-linked-roles.html)。

如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

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



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




| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  [AWS 受管政策：AWSCodeCommitFullAccess](#managed-policies-full) 和 [AWS 受管政策：AWSCodeCommitPowerUser](#managed-policies-poweruser) – 更新現有政策  |  CodeCommit 新增了這些政策的許可，以支援在聊天應用程式中使用 Amazon Q Developer 的其他通知類型。 AWSCodeCommitPowerUser 和 AWSCodeCommitFullAccess 政策已變更為新增許可 `chatbot:ListMicrosoftTeamsChannelConfigurations`。  | 2023 年 5 月 16 日 | 
|  [AWS 受管政策：AWSCodeCommitReadOnly](#managed-policies-read) – 更新現有政策  |  CodeCommit 已從政策中移除重複的許可。 AWSCodeCommitReadOnly 已變更為移除重複的許可 `"iam:ListAccessKeys"`。  | 2021 年 8 月 18 日 | 
|  CodeCommit 已開始追蹤變更  |  CodeCommit 開始追蹤其 AWS 受管政策的變更。  | 2021 年 8 月 18 日 | 

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

您可以建立自己的自訂 IAM 政策，以允許 CodeCommit 動作和資源的許可。您可以將這些自訂政策連接至需要這些許可的 IAM 使用者或群組。您也可以建立自己的自訂 IAM 政策，以在 CodeCommit 和其他 AWS 服務之間進行整合。

**Topics**
+ [客戶受管身分政策範例](#customer-managed-policies-identity)

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

下列範例 IAM 政策會授予各種 CodeCommit 動作的許可。使用它們來限制 IAM 使用者和角色的 CodeCommit 存取。這些政策控制使用 CodeCommit 主控台、API、 AWS SDKs或 執行動作的能力 AWS CLI。



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

 **範例**
+ [範例 1：允許使用者在單一 中執行 CodeCommit 操作 AWS 區域](#identity-based-policies-example-1)
+ [範例 2：允許使用者將 Git 用於單一儲存庫](#identity-based-policies-example-2)
+ [範例 3：允許使用者從指定的 IP 地址範圍連線到儲存庫](#identity-based-policies-example-3)
+ [範例 4：拒絕或允許分支上的動作](#identity-based-policies-example-4)
+ [範例 5：在具有標籤的儲存庫上拒絕或允許動作](#identity-based-policies-example-5)

### 範例 1：允許使用者在單一 中執行 CodeCommit 操作 AWS 區域
<a name="identity-based-policies-example-1"></a>

下列許可政策使用萬用字元 (`"codecommit:*"`)，允許使用者在 us-east-2 區域中執行所有 CodeCommit 動作，而不是從其他區域執行 AWS 區域。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "codecommit:*",
            "Resource": "arn:aws:codecommit:us-east-2:111111111111:*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "us-east-2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "codecommit:ListRepositories",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "us-east-2"
                }
            }
        }
    ]
}
```

------

### 範例 2：允許使用者將 Git 用於單一儲存庫
<a name="identity-based-policies-example-2"></a>

在 CodeCommit `GitPull` 中，IAM 政策許可適用於從 CodeCommit 擷取資料的任何 Git 用戶端命令，包括 **git fetch**、 **git clone**等。同樣地，IAM `GitPush` 政策許可適用於將資料傳送至 CodeCommit 的任何 Git 用戶端命令。例如，如果 IAM `GitPush` 政策許可設定為 `Allow`，使用者可以使用 Git 通訊協定推送分支的刪除。該推送不受套用至該 IAM 使用者`DeleteBranch`操作的任何許可影響。`DeleteBranch` 許可適用於使用 主控台、、 AWS CLI開發套件和 API 執行的動作，但不適用於 Git 通訊協定。 SDKs 

下列範例允許指定的使用者提取和推送名為 的 CodeCommit 儲存庫`MyDemoRepo`：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codecommit:GitPull",
        "codecommit:GitPush"
      ],
      "Resource" : "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo"
    }
  ]
}
```

------

### 範例 3：允許使用者從指定的 IP 地址範圍連線到儲存庫
<a name="identity-based-policies-example-3"></a>

您可以建立政策，只在使用者 IP 地址位於特定 IP 地址範圍內時，才允許使用者連線至 CodeCommit 儲存庫。這有兩種同樣有效的方法。如果使用者的 IP 地址不在特定區塊內，您可以建立不允許 CodeCommit 操作`Deny`的政策，或者如果使用者的 IP 地址位於特定區塊內，您可以建立允許 CodeCommit 操作`Allow`的政策。

您可以建立 `Deny` 政策，以拒絕所有不在特定 IP 範圍內的使用者存取。例如，您可以將 AWSCodeCommitPowerUser 受管政策和客戶受管政策連接到需要存取儲存庫的所有使用者。下列範例政策拒絕 IP 地址不在 203.0.113.0/16 指定 IP 地址區塊內之使用者的所有 CodeCommit 許可：

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Deny",
         "Action": [
            "codecommit:*"
         ],
         "Resource": "*",
         "Condition": {
            "NotIpAddress": {
               "aws:SourceIp": [
                  "203.0.113.0/16"
               ]
            }
         }
      }
   ]
}
```

------

下列範例政策允許指定使用者存取名為 MyDemoRepo 的 CodeCommit 儲存庫，其具有 AWSCodeCommitPowerUser 受管政策的同等許可，前提是其 IP 地址位於 203.0.113.0/16 的指定地址區塊內：

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "codecommit:BatchGetRepositories",
            "codecommit:CreateBranch",
            "codecommit:CreateRepository",
            "codecommit:Get*",
            "codecommit:GitPull",
            "codecommit:GitPush",
            "codecommit:List*",
            "codecommit:Put*",
            "codecommit:Post*",
            "codecommit:Merge*",
            "codecommit:TagResource",
            "codecommit:Test*",
            "codecommit:UntagResource",
            "codecommit:Update*"
         ],
         "Resource": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo",
         "Condition": {
            "IpAddress": {
               "aws:SourceIp": [
                  "203.0.113.0/16"
               ]
            }
         }
      }
   ]
}
```

------



### 範例 4：拒絕或允許分支上的動作
<a name="identity-based-policies-example-4"></a>

您可以建立政策，對使用者拒絕在一或多個分支執行您指定動作的許可。或者，您可以建立政策，以允許他們原本在儲存庫的其他分支上可能沒有的一或多個分支上執行動作。您可以使用這些政策搭配適當的受管 (預先定義) 政策。如需詳細資訊，請參閱[限制 中的分支推送和合併 AWS CodeCommit](how-to-conditional-branch.md)。

例如，您可以在名為 *MyDemoRepo* 的儲存庫中建立`Deny`政策，拒絕使用者變更名為 Main 的分支，包括刪除該分支。您可以將此政策與 **AWSCodeCommitPowerUser** 受管政策搭配使用。套用這兩個政策的使用者將能夠建立和刪除分支、建立提取請求，以及 **AWSCodeCommitPowerUser** 所允許的所有其他動作，但無法將變更推送至名為*主要*的分支、在 CodeCommit 主控台*的主要*分支中新增或編輯檔案，或將分支或提取請求合併至*主要*分支。由於 `Deny` 套用到 `GitPush`，您必須在政策中包含 `Null` 陳述式，以便使用者從本機儲存庫推送時，允許分析初始 `GitPush` 呼叫的有效性。

**提示**  
如果您想要建立套用至 Amazon Web Services 帳戶中所有儲存庫中名稱為*主要*的所有分支的政策，請為 指定星號 `*` ()`Resource`，而非儲存庫 ARN。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "codecommit:GitPush",
                "codecommit:DeleteBranch",
                "codecommit:PutFile",
                "codecommit:Merge*"
            ],
            "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
            "Condition": {
                "StringEqualsIfExists": {
                    "codecommit:References": [
                        "refs/heads/main"   
                    ]
                },
                "Null": {
                    "codecommit:References": "false"
                }
            }
        }
    ]
}
```

------

下列範例政策允許使用者變更 Amazon Web Services 帳戶中所有儲存庫中名為主要的分支。它不允許對任何其他分支進行變更。您可以將此政策與 AWSCodeCommitReadOnly 受管政策搭配使用，以允許自動推送至主分支中的儲存庫。由於效果為 `Allow`，此範例政策不適用於受管政策，例如 AWSCodeCommitPowerUser。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:GitPush",
                "codecommit:Merge*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEqualsIfExists": {
                    "codecommit:References": [
                        "refs/heads/main"
                    ]
                }
            }
        }
    ]
}
```

------



### 範例 5：在具有標籤的儲存庫上拒絕或允許動作
<a name="identity-based-policies-example-5"></a>

您可以建立政策，根據與這些儲存庫相關聯的 AWS 標籤，允許或拒絕儲存庫上的動作，然後將這些政策套用到您為管理 IAM 使用者所設定的 IAM 群組。例如，您可以建立政策，以拒絕任何儲存庫上具有 AWS 標籤金鑰*狀態*和金鑰值 *Secret* 的所有 CodeCommit 動作，然後將該政策套用至您為一般開發人員 (*開發人員*) 建立的 IAM 群組。然後，您需要確保處理這些標記儲存庫的開發人員不是該一般*開發人員*群組的成員，而是屬於未套用限制性政策的不同 IAM 群組 (*SecretDevelopers*)。

下列範例會拒絕標記金鑰*狀態*和金鑰值為 *Secret* 之儲存庫的所有 CodeCommit 動作：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codecommit:Associate*",
        "codecommit:Batch*",
        "codecommit:CancelUploadArchive",
        "codecommit:CreateBranch",
        "codecommit:CreateCommit",
        "codecommit:CreatePullRequest*",
        "codecommit:CreateRepository",
        "codecommit:CreateUnreferencedMergeCommit",
        "codecommit:DeleteBranch",
        "codecommit:DeleteCommentContent",
        "codecommit:DeleteFile",
        "codecommit:DeletePullRequest*",
        "codecommit:DeleteRepository",
        "codecommit:Describe*",
        "codecommit:DisassociateApprovalRuleTemplateFromRepository",
        "codecommit:EvaluatePullRequestApprovalRules",
        "codecommit:GetBlob",
        "codecommit:GetBranch",
        "codecommit:GetComment*",
        "codecommit:GetCommit",
        "codecommit:GetDifferences*",
        "codecommit:GetFile",
        "codecommit:GetFolder",
        "codecommit:GetMerge*",
        "codecommit:GetObjectIdentifier",
        "codecommit:GetPullRequest*",
        "codecommit:GetReferences",
        "codecommit:GetRepository*",
        "codecommit:GetTree",
        "codecommit:GetUploadArchiveStatus",
        "codecommit:Git*",
        "codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
        "codecommit:ListBranches",
        "codecommit:ListPullRequests",
        "codecommit:ListTagsForResource",
        "codecommit:Merge*",
        "codecommit:OverridePullRequestApprovalRules",
        "codecommit:Post*",
        "codecommit:Put*",
        "codecommit:TagResource",
        "codecommit:TestRepositoryTriggers",
        "codecommit:UntagResource",
        "codecommit:UpdateComment",
        "codecommit:UpdateDefaultBranch",
        "codecommit:UpdatePullRequest*",
        "codecommit:UpdateRepository*",
        "codecommit:UploadArchive"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Status": "Secret"
        }
      }
    }
  ]
}
```

------

您可以將特定儲存庫指定為資源，而非所有儲存庫，以進一步精簡此策略。您也可以建立政策，允許 CodeCommit 對未標記特定標籤的所有儲存庫執行動作。例如，下列政策允許 CodeCommit 動作的同等 **AWSCodeCommitPowerUser** 許可，但只允許未標記指定標籤的儲存庫上的 CodeCommit 動作：

**注意**  
此政策範例僅包含 CodeCommit 的動作。它不包括包含在 **AWSCodeCommitPowerUser** 受管政策中 AWS 其他服務的動作。如需詳細資訊，請參閱 [AWS 受管政策：AWSCodeCommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:Associate*",
        "codecommit:Batch*",
        "codecommit:CancelUploadArchive",
        "codecommit:CreateBranch",
        "codecommit:CreateCommit",
        "codecommit:CreatePullRequest*",
        "codecommit:CreateRepository",
        "codecommit:CreateUnreferencedMergeCommit",
        "codecommit:DeleteBranch",
        "codecommit:DeleteCommentContent",
        "codecommit:DeleteFile",
        "codecommit:DeletePullRequest*",
        "codecommit:Describe*",
        "codecommit:DisassociateApprovalRuleTemplateFromRepository",
        "codecommit:EvaluatePullRequestApprovalRules",
        "codecommit:GetBlob",
        "codecommit:GetBranch",
        "codecommit:GetComment*",
        "codecommit:GetCommit",
        "codecommit:GetDifferences*",
        "codecommit:GetFile",
        "codecommit:GetFolder",
        "codecommit:GetMerge*",
        "codecommit:GetObjectIdentifier",
        "codecommit:GetPullRequest*",
        "codecommit:GetReferences",
        "codecommit:GetRepository*",
        "codecommit:GetTree",
        "codecommit:GetUploadArchiveStatus",
        "codecommit:Git*",
        "codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
        "codecommit:ListBranches",
        "codecommit:ListPullRequests",
        "codecommit:ListTagsForResource",
        "codecommit:Merge*",
        "codecommit:OverridePullRequestApprovalRules",
        "codecommit:Post*",
        "codecommit:Put*",
        "codecommit:TagResource",
        "codecommit:TestRepositoryTriggers",
        "codecommit:UntagResource",
        "codecommit:UpdateComment",
        "codecommit:UpdateDefaultBranch",
        "codecommit:UpdatePullRequest*",
        "codecommit:UpdateRepository*",
        "codecommit:UploadArchive"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/Status": "Secret",
          "aws:ResourceTag/Team": "Saanvi"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:CreateApprovalRuleTemplate",
        "codecommit:GetApprovalRuleTemplate",
        "codecommit:ListApprovalRuleTemplates",
        "codecommit:ListRepositories",
        "codecommit:ListRepositoriesForApprovalRuleTemplate",
        "codecommit:UpdateApprovalRuleTemplateContent",
        "codecommit:UpdateApprovalRuleTemplateDescription",
        "codecommit:UpdateApprovalRuleTemplateName"
      ],
      "Resource": "*"
    }
  ]
}
```

------

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

下表列出每個 CodeCommit API 操作、您可以授予許可的對應動作，以及用於授予許可的資源 ARN 格式。CodeCommit APIs 會根據該 API 允許的動作範圍分組為資料表。在設定[存取控制](auth-and-access-control.md#access-control)和撰寫可連接到 IAM 身分的許可政策 （以身分為基礎的政策） 時，請參閱此政策。

當您建立許可政策時，您需要在政策的 `Action` 欄位中指定動作。您需要在政策的 `Resource` 欄位中指定資源值做為 ARN，可包含或不含萬用字元 (\$1)。

若要在 CodeCommit 政策中表達條件，請使用 AWS通用條件索引鍵。如需 AWS全系列金鑰的完整清單，請參閱《*IAM 使用者指南*》中的[可用金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。如需 IAM 政策中 CodeCommit 的動作、資源和條件索引鍵的完整資訊，請參閱 [的動作、資源和條件索引鍵 AWS CodeCommit](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscodecommit.html)。

**注意**  
若要指定動作，請使用 `codecommit:` 字首，後面接著 API 操作名稱 (例如 `codecommit:GetRepository` 或 `codecommit:CreateRepository`)。

**使用萬用字元**

若要指定多個動作或資源，請在 ARN 中使用萬用字元 (\$1)。例如， `codecommit:*`會指定所有 CodeCommit 動作，並`codecommit:Get*`指定以字詞 開頭的所有 CodeCommit 動作`Get`。以下範例授予對所有以 `MyDemo` 為名稱開頭之儲存庫的存取權。

```
arn:aws:codecommit:us-west-2:111111111111:MyDemo*
```

您只能針對下表列出的 *repository-name* 資源使用萬用字元：您不能對 *region* 或 *account-id* 資源使用萬用字元。如需萬用字元的詳細資訊，請參閱《[IAM 使用者指南》中的 IAM 識別符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)。 **



**Topics**
+ [Git 用戶端命令的必要許可](#aa-git)
+ [分支上動作的許可](#aa-branches)
+ [合併上動作的許可](#aa-merges)
+ [提取請求的動作許可](#aa-pr)
+ [核准規則範本上動作的許可](#aa-art)
+ [個別檔案上動作的許可](#aa-files)
+ [註解上動作的許可](#aa-comments)
+ [遞交程式碼上動作的許可](#aa-code)
+ [儲存庫上動作的許可](#aa-repositories)
+ [標籤上動作的許可](#aa-tags)
+ [觸發動作的許可](#aa-triggers)
+ [CodePipeline 整合上動作的許可](#aa-acp)

## Git 用戶端命令的必要許可
<a name="aa-git"></a>

在 CodeCommit `GitPull` 中，IAM 政策許可適用於從 CodeCommit 擷取資料的任何 Git 用戶端命令，包括 **git fetch**、 **git clone**等。同樣地，IAM `GitPush` 政策許可適用於將資料傳送至 CodeCommit 的任何 Git 用戶端命令。例如，如果 IAM `GitPush` 政策許可設定為 `Allow`，使用者可以使用 Git 通訊協定推送分支的刪除。該推送不受套用至該 IAM 使用者`DeleteBranch`操作的任何許可影響。`DeleteBranch` 許可適用於使用 主控台、 AWS CLI、 SDKs和 API 執行的動作，但不適用於 Git 通訊協定。

`GitPull` 和 `GitPush`是 IAM 政策許可。不是 API 動作。

使用捲軸查看資料表的其餘部分。


**Git 用戶端命令之動作的 CodeCommit 必要許可**  

| Git 的 CodeCommit 許可 | 所需的許可  | Resources | 
| --- | --- | --- | 
|  GitPull  |  `codecommit:GitPull` 從 CodeCommit 儲存庫將資訊提取至本機儲存庫時需要。這只是 IAM 政策許可，不是 API 動作。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  GitPush  |  `codecommit:GitPush` 從本機儲存庫將資訊推送至 CodeCommit 儲存庫時需要。這只是 IAM 政策許可，不是 API 動作。  如果您建立包含內容金鑰的政策和包含此許可的 `Deny` 陳述式，則還必須包含 `Null` 內容。如需詳細資訊，請參閱[限制 中的分支推送和合併 AWS CodeCommit](how-to-conditional-branch.md)。   |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 分支上動作的許可
<a name="aa-branches"></a>

下列許可允許或拒絕 CodeCommit 儲存庫中分支的動作。這些許可僅適用於在 CodeCommit 主控台和 CodeCommit API 中執行的動作，以及使用 執行的命令 AWS CLI。不適用於可使用 Git 通訊協定執行的類似動作。例如，**git show-branch -r** 命令會顯示儲存庫的遠端分支清單，及其使用 Git 通訊協定所做的遞交。它不受 CodeCommit `ListBranches`操作的任何許可影響。

如需分支政策的詳細資訊，請參閱 [限制 中的分支推送和合併 AWS CodeCommit](how-to-conditional-branch.md)和 [客戶管理政策範例](customer-managed-policies.md)。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和分支上動作的必要許可**  

| 分支的 CodeCommit API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  [CreateBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreateBranch.html)  |  `codecommit:CreateBranch` 在 CodeCommit 儲存庫中建立分支時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [DeleteBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteBranch.html)  |  `codecommit:DeleteBranch` 從 CodeCommit 儲存庫刪除分支時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetBranch.html)  |  `codecommit:GetBranch` 取得 CodeCommit 儲存庫中分支的詳細資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [ListBranches](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListBranches.html) |  `codecommit:ListBranches` 取得 CodeCommit 儲存庫中的分支清單時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [MergeBranchesByFastForward](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergeBranchesByFastForward.html) |  `codecommit:MergeBranchesByFastForward` 使用 CodeCommit 儲存庫中的快速向前合併策略合併兩個分支時需要。  | arn:aws:codecommit:region:account-id:repository-name | 
| [MergeBranchesBySquash](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergeBranchesBySquash.html) |  `codecommit:MergeBranchesBySquash` 使用 CodeCommit 儲存庫中的 Squash 合併策略合併兩個分支時需要。  | arn:aws:codecommit:region:account-id:repository-name | 
| [MergeBranchesByThreeWay](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergeBranchesByThreeWay.html) |  `codecommit:MergeBranchesByThreeWay` 使用 CodeCommit 儲存庫中的三向合併策略合併兩個分支時需要。  | arn:aws:codecommit:region:account-id:repository-name | 
| [UpdateDefaultBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateDefaultBranch.html) | codecommit:UpdateDefaultBranch變更 CodeCommit 儲存庫中的預設分支時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 合併上動作的許可
<a name="aa-merges"></a>

下列許可允許或拒絕 CodeCommit 儲存庫中合併的動作。這些許可適用於使用 CodeCommit 主控台和 CodeCommit API 執行的動作，以及使用 執行的命令 AWS CLI。不適用於可使用 Git 通訊協定執行的類似動作。如需分支的相關許可，請參閱[分支上動作的許可](#aa-branches)。如需提取請求的相關許可，請參閱[提取請求的動作許可](#aa-pr)。

使用捲軸查看資料表的其餘部分。


**合併命令之動作的 CodeCommit 必要許可**  

| 合併的 CodeCommit 許可 | 所需的許可  | Resources | 
| --- | --- | --- | 
|  [BatchDescribeMergeConflicts](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchDescribeMergeConflicts.html)  |  `codecommit:BatchDescribeMergeConflicts` 傳回 CodeCommit 儲存庫中遞交之間合併中衝突的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [CreateUnreferencedMergeCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreateUnreferencedMergeCommit.html)  |  `codecommit:CreateUnreferencedMergeCommit` 在兩個分支之間建立未參考的遞交或在 CodeCommit 儲存庫中遞交時需要，以便比較它們並識別任何潛在的衝突。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [DescribeMergeConflicts](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DescribeMergeConflicts.html)  |  `codecommit:DescribeMergeConflicts` 傳回 CodeCommit 儲存庫中潛在合併之檔案的基底、來源和目的地版本之間合併衝突的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetMergeCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetMergeCommit.html)  |  `codecommit:GetMergeCommit` 傳回 CodeCommit 儲存庫中來源與目的地遞交之間合併的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetMergeOptions](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetMergeOptions.html)  |  `codecommit:GetMergeOptions` 傳回 CodeCommit 儲存庫中兩個分支或遞交指標之間可用合併選項的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 提取請求的動作許可
<a name="aa-pr"></a>

下列許可允許或拒絕 CodeCommit 儲存庫中提取請求的動作。這些許可適用於使用 CodeCommit 主控台和 CodeCommit API 執行的動作，以及使用 執行的命令 AWS CLI。不適用於可使用 Git 通訊協定執行的類似動作。如需註解的相關許可，請參閱[註解上動作的許可](#aa-comments)。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和提取請求的動作所需的許可**  

| CodeCommit API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  BatchGetPullRequests  |  `codecommit:BatchGetPullRequests` 傳回 CodeCommit 儲存庫中一或多個提取請求的相關資訊時需要。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [CreatePullRequest](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreatePullRequest.html)  |  `codecommit:CreatePullRequest` 在 CodeCommit 儲存庫中建立提取請求時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [CreatePullRequestApprovalRule](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreatePullRequestApprovalRule.html) |  `codecommit:CreatePullRequestApprovalRule` 在 CodeCommit 儲存庫中建立提取請求的核准規則時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [DeletePullRequestApprovalRule](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeletePullRequestApprovalRule.html) |  `codecommit:DeletePullRequestApprovalRule` 刪除 CodeCommit 儲存庫中提取請求的核准規則時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [DescribePullRequestEvents](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DescribePullRequestEvents.html) | 傳回 CodeCommit 儲存庫中一或多個提取請求事件的相關資訊時需要。 | arn:aws:codecommit:region:account-id:repository-name | 
| [EvaluatePullRequestApprovalRules](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_EvaluatePullRequestApprovalRules.html) |  `codecommit:EvaluatePullRequestApprovalRules` 評估提取請求是否符合 CodeCommit 儲存庫中其相關聯核准規則中指定的所有條件時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetCommentsForPullRequest](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetCommentsForPullRequest.html)  |  `codecommit:GetCommentsForPullRequest` 傳回在提取請求上所做的註解時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| GetCommitsFromMergeBase |  `codecommit:GetCommitsFromMergeBase` 在潛在合併情況下傳回遞交之間差異的相關資訊時需要。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [GetMergeConflicts](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetMergeConflicts.html) |  `codecommit:GetMergeConflicts` 在提取請求中傳回來源和目的地分支之間合併衝突的相關資訊時需要。  | arn:aws:codecommit:region:account-id:repository-name | 
|  [GetPullRequest](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetPullRequest.html)  |  `codecommit:GetPullRequest` 傳回提取請求的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetPullRequestApprovalStates](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetPullRequestApprovalStates.html)  |  `codecommit:GetPullRequestApprovalStates` 傳回所指定提取請求的核准狀態相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetPullRequestOverrideState](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetPullRequestOverrideState.html)  |  `codecommit:GetPullRequestOverrideState` 傳回有關提取請求是否將核准規則設為預留 （覆寫） 的資訊時需要，如果是，則會傳回覆寫規則的使用者或身分的 Amazon Resource Name (ARN)，以及其對提取請求的要求。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [ListPullRequests](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListPullRequests.html) |  `codecommit:ListPullRequests` 傳回儲存庫的提取請求的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [MergePullRequestByFastForward](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergePullRequestByFastForward.html) | codecommit:MergePullRequestByFastForward關閉提取請求和嘗試使用向前快轉合併策略將提取請求的來源分支合併到目的地分支時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [MergePullRequestBySquash](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergePullRequestBySquash.html) | codecommit:MergePullRequestBySquash關閉提取請求和嘗試使用 squash 合併策略將提取請求的來源分支合併到目的地分支時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [MergePullRequestByThreeWay](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergePullRequestByThreeWay.html) | codecommit:MergePullRequestByThreeWay關閉提取請求和嘗試使用三方合併選項將提取請求的來源分支合併到目的地分支時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [OverridePullRequestApprovalRules](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_OverridePullRequestApprovalRules.html) | codecommit:OverridePullRequestApprovalRules 將提取請求的所有核准規則要求放在 CodeCommit 儲存庫中時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [PostCommentForPullRequest](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PostCommentForPullRequest.html) | codecommit:PostCommentForPullRequest 對 CodeCommit 儲存庫中的提取請求發佈評論時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [UpdatePullRequestApprovalRuleContent](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestApprovalRuleContent.html) | codecommit:UpdatePullRequestApprovalRuleContent 變更 CodeCommit 儲存庫中提取請求的核准規則結構時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [UpdatePullRequestApprovalState](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestApprovalState.html) | codecommit:UpdatePullRequestApprovalState 變更 CodeCommit 儲存庫中提取請求的核准狀態時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [UpdatePullRequestDescription](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestDescription.html) | codecommit:UpdatePullRequestDescription 變更 CodeCommit 儲存庫中提取請求的描述時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [UpdatePullRequestStatus](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestStatus.html) | codecommit:UpdatePullRequestStatus 變更 CodeCommit 儲存庫中提取請求的狀態時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [UpdatePullRequestTitle](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestTitle.html) | codecommit:UpdatePullRequestTitle 變更 CodeCommit 儲存庫中提取請求的標題時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 核准規則範本上動作的許可
<a name="aa-art"></a>

下列許可允許或拒絕 CodeCommit 儲存庫中核准規則範本的動作。這些許可僅適用於在 CodeCommit 主控台、CodeCommit API 中執行的動作，以及使用 執行的命令 AWS CLI。不適用於可使用 Git 通訊協定執行的類似動作。如需提取請求的相關許可，請參閱[提取請求的動作許可](#aa-pr)。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和核准規則範本上動作的必要許可**  

| 核准規則範本的 CodeCommit API 操作 | 所需的許可  | Resources | 
| --- | --- | --- | 
|  [AssociateApprovalRuleTemplateWithRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_AssociateApprovalRuleTemplateWithRepository.html)  |  `codecommit:AssociateApprovalRuleTemplateWithRepository` 將範本與 Amazon Web Services 帳戶中指定的儲存庫建立關聯時需要。建立關聯後，這會自動建立核准規則，讓指定儲存庫中建立的每個提取請求都符合範本條件。  |  \$1  | 
|  [BatchAssociateApprovalRuleTemplateWithRepositories](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchAssociateApprovalRuleTemplateWithRepositories.html)  |  `codecommit:BatchAssociateApprovalRuleTemplateWithRepositories` 將範本與 Amazon Web Services 帳戶中的一或多個指定儲存庫建立關聯時需要。  |  \$1  | 
|  [BatchDisassociateApprovalRuleTemplateFromRepositories](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchDisassociateApprovalRuleTemplateFromRepositories.html)  |  `codecommit:BatchDisassociateApprovalRuleTemplateFromRepositories` 取消範本與 Amazon Web Services 帳戶中一或多個指定儲存庫的關聯時需要。  |  \$1  | 
|  [CreateApprovalRuleTemplate](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreateApprovalRuleTemplate.html)  |  `codecommit:CreateApprovalRuleTemplate` 為核准規則建立範本時需要，然後範本就能與 AWS 帳戶中的一或多個儲存庫建立關聯。  |  \$1  | 
|  [DeleteApprovalRuleTemplate](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteApprovalRuleTemplate.html)  |  `codecommit:DeleteApprovalRuleTemplate` 刪除 Amazon Web Services 帳戶中指定的範本時需要。在已使用範本建立的提取請求上不會移除核准規則。  |  \$1  | 
|  [DisassociateApprovalRuleTemplateFromRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DisassociateApprovalRuleTemplateFromRepository.html)  |  `codecommit:DisassociateApprovalRuleTemplateFromRepository` 將指定的範本與 Amazon Web Services 帳戶中的儲存庫取消關聯時需要。在已使用範本建立的提取請求上不會移除核准規則。  |  \$1  | 
|  [GetApprovalRuleTemplate](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetApprovalRuleTemplate.html)  |  `codecommit:GetApprovalRuleTemplate` 傳回 Amazon Web Services 帳戶中核准規則範本的相關資訊時需要。  |  \$1  | 
|  [ListApprovalRuleTemplates](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListApprovalRuleTemplates.html)  |  `codecommit:ListApprovalRuleTemplates` 列出 Amazon Web Services 帳戶中的核准規則範本時需要。  |  \$1  | 
|  [ListAssociatedApprovalRuleTemplatesForRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListAssociatedApprovalRuleTemplatesForRepository.html)  |  `codecommit:ListAssociatedApprovalRuleTemplatesForRepository` 列出與 Amazon Web Services 帳戶中指定儲存庫相關聯的所有核准規則範本時需要。  |  \$1  | 
|  [ListRepositoriesForApprovalRuleTemplate](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListRepositoriesForApprovalRuleTemplate.html)  |  `codecommit:ListRepositoriesForApprovalRuleTemplate` 列出與 Amazon Web Services 帳戶中指定核准規則範本相關聯的所有儲存庫時需要。  |  \$1  | 
|  [UpdateApprovalRuleTemplateContent](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateApprovalRuleTemplateContent.html)  |  `codecommit:UpdateApprovalRuleTemplateContent` 更新 Amazon Web Services 帳戶中核准規則範本的內容時需要。  |  \$1  | 
|  [UpdateApprovalRuleTemplateDescription](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateApprovalRuleTemplateDescription.html)  |  `codecommit:UpdateApprovalRuleTemplateDescription` 更新 Amazon Web Services 帳戶中核准規則範本的描述時需要。  |  \$1  | 
|  [UpdateApprovalRuleTemplateName](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateApprovalRuleTemplateName.html)  |  `codecommit:UpdateApprovalRuleTemplateName` 更新 Amazon Web Services 帳戶中核准規則範本的名稱時需要。  |  \$1  | 

## 個別檔案上動作的許可
<a name="aa-files"></a>

下列許可允許或拒絕 CodeCommit 儲存庫中個別檔案的動作。這些許可僅適用於在 CodeCommit 主控台、CodeCommit API 中執行的動作，以及使用 執行的命令 AWS CLI。不適用於可使用 Git 通訊協定執行的類似動作。例如， `git push`命令會使用 Git 通訊協定，將新的和變更的檔案推送至 CodeCommit 儲存庫。它不受 CodeCommit `PutFile`操作的任何許可影響。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和個別檔案上動作的必要許可**  

| 個別檔案的 CodeCommit API 操作 | 所需的許可  | Resources | 
| --- | --- | --- | 
|  [DeleteFile](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteFile.html)  |  `codecommit:DeleteFile` 從 CodeCommit 主控台中刪除 CodeCommit 儲存庫中指定分支的指定檔案時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetBlob](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetBlob.html)  |  `codecommit:GetBlob` 從 CodeCommit 主控台檢視 CodeCommit 儲存庫中個別檔案的編碼內容時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetFile](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetFile.html)  |  `codecommit:GetFile` 從 CodeCommit 主控台檢視 CodeCommit 儲存庫個別檔案的編碼內容及其中繼資料時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetFolder](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetFolder.html)  |  `codecommit:GetFolder` 從 CodeCommit 主控台檢視 CodeCommit 儲存庫中指定資料夾的內容時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [PutFile](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PutFile.html)  |  `codecommit:PutFile` 從 CodeCommit 主控台、CodeCommit API 或 將新的或修改的檔案新增至 CodeCommit 儲存庫時需要 AWS CLI。 CodeCommit   |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 註解上動作的許可
<a name="aa-comments"></a>

下列許可允許或拒絕 CodeCommit 儲存庫中註解的動作。這些許可適用於使用 CodeCommit 主控台和 CodeCommit API 執行的動作，以及使用 執行的命令 AWS CLI。如需提取請求中註解的相關許可，請參閱[提取請求的動作許可](#aa-pr)。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和儲存庫中註解的必要許可**  

| CodeCommit API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  [DeleteCommentContent](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteCommentContent.html)  |  `codecommit:DeleteCommentContent` 將儲存庫中的變更、檔案或遞交所做的註解內容刪除時需要。無法刪除註解，但可以移除註解的內容 (如果使用者具有此許可)。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetComment](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetComment.html)  |  `codecommit:GetComment` 傳回有關 CodeCommit 儲存庫中變更、檔案或遞交的註解資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetCommentReactions](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetCommentReactions.html)  |  `codecommit:GetCommentReactions` 將表情符號反應的相關資訊傳回 CodeCommit 儲存庫中對變更、檔案或遞交所做的註解時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetCommentsForComparedCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetCommentsForComparedCommit.html)  |  `codecommit:GetCommentsForComparedCommit` 傳回有關 CodeCommit 儲存庫中兩個遞交之間比較之註解的資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [PostCommentForComparedCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PostCommentForComparedCommit.html)  |  `codecommit:PostCommentForComparedCommit` 在 CodeCommit 儲存庫中建立兩個遞交之間比較的註解時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [PostCommentReply](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PostCommentReply.html) |  `codecommit:PostCommentReply` 對遞交之間的比較或提取請求的註解建立回覆時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [PutCommentReaction](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PutCommentReaction.html) |  `codecommit:PutCommentReaction` 建立或更新註解的表情符號反應時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [UpdateComment](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateComment.html) |  `codecommit:UpdateComment` 在遞交之間的比較或提取請求上編輯註解時需要。只有註解作者才能編輯註解。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 遞交程式碼上動作的許可
<a name="aa-code"></a>

下列許可允許或拒絕對 CodeCommit 儲存庫遞交的程式碼執行動作。這些許可適用於使用 CodeCommit 主控台和 CodeCommit API 執行的動作，以及使用 執行的命令 AWS CLI。不適用於可使用 Git 通訊協定執行的類似動作。例如，**git commit** 命令使用 Git 通訊協定為儲存庫中的分支建立遞交。它不受 CodeCommit `CreateCommit`操作的任何許可影響。

明確拒絕其中一些許可可能會在 CodeCommit 主控台中產生非預期的後果。例如，將 `GetTree` 設為 `Deny` 可防止使用者在主控台瀏覽儲存庫的內容，但無法阻止使用者檢視儲存庫中某個檔案的內容 (例如，如果以電子郵件將檔案的連結傳送給他們)。將 `GetBlob` 設為 `Deny` 可防止使用者檢視檔案的內容，但無法阻止使用者瀏覽儲存庫的結構。將 `GetCommit` 設為 `Deny` 可防止使用者擷取遞交的詳細資訊。將 `GetObjectIdentifier` 設為 `Deny` 可封鎖程式碼瀏覽的大部分功能。如果您在政策`Deny`中將這三個動作全部設定為 ，則具有該政策的使用者無法在 CodeCommit 主控台中瀏覽程式碼。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和遞交程式碼之動作的必要許可**  

| CodeCommit API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  BatchGetCommits  |  `codecommit:BatchGetCommits` 傳回 CodeCommit 儲存庫中一或多個遞交的相關資訊時需要。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [CreateCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/CreateCommit.html) |  `codecommit:CreateCommit` 建立遞交時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/GetCommit.html)  |  `codecommit:GetCommit` 傳回遞交的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  GetCommitHistory  |  `codecommit:GetCommitHistory` 傳回儲存庫中遞交歷史記錄的相關資訊時需要。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [GetDifferences](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetDifferences.html) |  `codecommit:GetDifferences` 傳回遞交指標 (例如，分支、標籤、HEAD、遞交 ID，或其他完整參考) 之間差異的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| GetObjectIdentifier | codecommit:GetObjectIdentifier將 Blob、樹狀結構和遞交解析為其識別符時需要。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| GetReferences | codecommit:GetReferences傳回所有參考時需要，例如分支和標籤。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| GetTree | codecommit:GetTree從 CodeCommit 主控台檢視 CodeCommit 儲存庫中指定樹狀目錄的內容時需要。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 儲存庫上動作的許可
<a name="aa-repositories"></a>

下列許可允許或拒絕 CodeCommit 儲存庫上的動作。這些許可適用於使用 CodeCommit 主控台和 CodeCommit API 執行的動作，以及使用 執行的命令 AWS CLI。不適用於可使用 Git 通訊協定執行的類似動作。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和儲存庫上動作的必要許可**  

| CodeCommit API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  [BatchGetRepositories](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchGetRepositories.html)  |  `codecommit:BatchGetRepositories` 取得 Amazon Web Services 帳戶中多個 CodeCommit 儲存庫的相關資訊時需要。在 中`Resource`，您必須指定允許 （或拒絕） 使用者資訊的所有 CodeCommit 儲存庫的名稱。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [CreateRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/CreateRepository.html)  |  `codecommit:CreateRepository` 建立 CodeCommit 儲存庫時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [DeleteRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteRepository.html)  |  `codecommit:DeleteRepository` 刪除 CodeCommit 儲存庫時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [GetRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetRepository.html) |  `codecommit:GetRepository` 取得單一 CodeCommit 儲存庫的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [ListRepositories](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListRepositories.html) | codecommit:ListRepositories取得 Amazon Web Services 帳戶多個 CodeCommit 儲存庫的名稱和系統 IDs 清單時需要。針對此動作，`Resource` 唯一允許的值是所有儲存庫 (`*`)。 |  \$1  | 
| [UpdateRepositoryDescription](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateRepositoryDescription.html) | codecommit:UpdateRepositoryDescription變更 CodeCommit 儲存庫的描述時需要。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| [UpdateRepositoryName](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateRepositoryName.html) | codecommit:UpdateRepositoryName變更 CodeCommit 儲存庫的名稱時需要。在 中`Resource`，您必須指定允許變更的 CodeCommit 儲存庫和新的儲存庫名稱。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 標籤上動作的許可
<a name="aa-tags"></a>

下列許可允許或拒絕 CodeCommit 資源 AWS 標籤的動作。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和標籤上動作的必要許可**  

| CodeCommit API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  [ListTagsForResource](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListTagsForResource.html)  |  `codecommit:ListTagsForResource` 傳回 CodeCommit 中資源上設定之 AWS 標籤的相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [TagResource](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_TagResource.html)  |  `codecommit:TagResource` 在 CodeCommit 中新增或編輯資源的 AWS 標籤時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [UntagResource](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UntagResource.html)  |  `codecommit:UntagResource` 從 CodeCommit 中的資源移除 AWS 標籤時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## 觸發動作的許可
<a name="aa-triggers"></a>

下列許可允許或拒絕對 CodeCommit 儲存庫的觸發動作。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和觸發動作的必要許可**  

| CodeCommit API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  [GetRepositoryTriggers](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetRepositoryTriggers.html)  |  `codecommit:GetRepositoryTriggers` 傳回為儲存庫而設定的觸發相關資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [PutRepositoryTriggers](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PutRepositoryTriggers.html)  |  `codecommit:PutRepositoryTriggers` 為儲存庫建立、編輯或刪除觸發時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [TestRepositoryTriggers](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_TestRepositoryTriggers.html)  |  `codecommit:TestRepositoryTriggers` 將資料傳送到為觸發而設定的主題或函數以測試儲存庫觸發的功能時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

## CodePipeline 整合上動作的許可
<a name="aa-acp"></a>

若要讓 CodePipeline 在管道的來源動作中使用 CodeCommit 儲存庫，您必須將下表列出的所有許可授予 CodePipeline 的服務角色。如果服務角色中未設定這些許可，或設定為 **Deny**，則變更儲存庫時不會自動執行管道，也無法手動發佈變更。

使用捲軸查看資料表的其餘部分。


**CodeCommit API 操作和 CodePipeline 整合上動作的必要許可**  

| CodeCommit API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
|  [GetBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetBranch.html)  |  `codecommit:GetBranch` 取得 CodeCommit 儲存庫中分支的詳細資訊時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  [GetCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/GetCommit.html)  |  `codecommit:GetCommit` 將遞交的相關資訊傳回 CodePipeline 的服務角色時需要。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  UploadArchive  |  `codecommit:UploadArchive` 允許 CodePipeline 的服務角色將儲存庫變更上傳至管道時需要。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
|  GetUploadArchiveStatus  |  `codecommit:GetUploadArchiveStatus` 判斷存檔上傳的狀態時需要，無論是進行中、完成、已取消或發生錯誤。這只是 IAM 政策許可，不是您可以呼叫的 API 動作。  |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 
| CancelUploadArchive | codecommit:CancelUploadArchive取消將存檔上傳至管道時需要。這只是 IAM 政策許可，而不是可以呼叫的 API 動作。 |  arn:aws:codecommit:*region*:*account-id*:*repository-name*  | 

# AWS CodeCommit 如何使用 IAM
<a name="security_iam_service-with-iam"></a>

在使用 IAM 管理 CodeCommit 的存取權之前，您應該了解哪些 IAM 功能可與 CodeCommit 搭配使用。若要全面了解 CodeCommit 和其他 AWS 服務如何與 IAM 搭配使用，請參閱《IAM *使用者指南*》中的與 IAM [AWS 搭配使用的 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

**Topics**
+ [條件索引鍵](#security_iam_service-with-iam-id-based-policies-conditionkeys)
+ [範例](#security_iam_service-with-iam-id-based-policies-examples)

## 條件索引鍵
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Condition` 元素會根據定義的條件，指定陳述式的執行時機。您可以建立使用[條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)的條件運算式 (例如等於或小於)，來比對政策中的條件和請求中的值。若要查看所有 AWS 全域條件索引鍵，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

CodeCommit 會定義自己的一組條件金鑰，也支援使用一些全域條件金鑰。若要查看所有 AWS 全域條件金鑰，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

 有些 CodeCommit 動作支援 `codecommit:References`條件金鑰。有關使用此金鑰的政策範例，請參閱[範例 4：拒絕或允許分支上的動作](customer-managed-policies.md#identity-based-policies-example-4)。

若要查看 CodeCommit 條件金鑰清單，請參閱《*IAM 使用者指南*》中的 [的條件金鑰 AWS CodeCommit](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodecommit.html#awscodecommit-policy-keys)。若要了解您可以使用條件金鑰的動作和資源，請參閱 [定義的動作 AWS CodeCommit](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awscodecommit.html#awscodecommit-actions-as-permissions)。

## 範例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



若要檢視 CodeCommit 身分型政策的範例，請參閱 [AWS CodeCommit 身分型政策範例](security-iam.md#security_iam_id-based-policy-examples)。

## CodeCommit 資源型政策
<a name="security_iam_service-with-iam-resource-based-policies"></a>

CodeCommit 不支援以資源為基礎的政策。

## 以 CodeCommit 標籤為基礎的授權
<a name="security_iam_service-with-iam-tags"></a>

您可以將標籤連接至 CodeCommit 資源，或在請求中將標籤傳遞至 CodeCommit。如需根據標籤控制存取，請使用 `codecommit:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件索引鍵，在政策的[條件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中，提供標籤資訊。如需標記 CodeCommit 資源的詳細資訊，請參閱 [範例 5：在具有標籤的儲存庫上拒絕或允許動作](customer-managed-policies.md#identity-based-policies-example-5)。如需標記策略的詳細資訊，請參閱[標記 AWS 資源](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)。

CodeCommit 也支援以工作階段標籤為基礎的政策。如需詳細資訊，請參閱[工作階段標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)。

### 使用標籤在 CodeCommit 中提供身分資訊
<a name="security-iam_service-with-iam-tags-identity"></a>

CodeCommit 支援使用工作階段標籤，這類標籤是您在擔任 IAM 角色、使用臨時憑證，或在 AWS Security Token Service (AWS STS) 中聯合使用者時所傳遞且為索引鍵值組的屬性。您也可以將這類標籤與 IAM 使用者建立關聯。您能夠使用這些標籤中提供的資訊，以利識別進行變更或導致事件發生的使用者。CodeCommit 包含 CodeCommit 事件中具有下列索引鍵名稱的標籤值：


****  

| 金鑰名稱 | Value | 
| --- | --- | 
| displayName | 您要顯示並與使用者建立關聯之可供人閱讀的名稱 (如 Mary Major 或 Saanvi Sarkar)。 | 
| emailAddress | 您想要顯示並與使用者建立關聯的電子郵件地址 (如 mary\$1major@example.com 或 saanvi\$1sarkar@example.com)。 | 

如果提供此資訊，CodeCommit 會將此資訊包含在傳送至 Amazon EventBridge 和 Amazon CloudWatch Events 的事件中。如需詳細資訊，請參閱[使用 Amazon EventBridge 和 Amazon CloudWatch Events 監控 CodeCommit 事件](monitoring-events.md)。

角色的政策必須包含設為 `Allow` 的 `sts:TagSession` 許可，才能夠使用工作階段標記。如果您是使用聯合身分存取，便可在設定時配置顯示名稱與電子郵件標籤資訊。例如，如果您使用的是 Azure Active Directory，則可提供下列宣告資訊：


****  

| 宣告名稱 | Value | 
| --- | --- | 
| https://aws.amazon.com/SAML/Attributes/PrincipalTag:displayName | user.displayname | 
| https://aws.amazon.com/SAML/Attributes/PrincipalTag:emailAddress | user.mail | 

您可以使用 AWS CLI 來傳遞 `displayName`和`emailAddress`使用 的工作階段標籤**AssumeRole**。例如，某位使用者想擔任名為 *Developer* 的角色，並將該角色與她的名字 *Mary Major* 建立關聯，則可使用類似如下的 **assume-role** 命令：

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Developer \
--role-session-name Mary-Major \
–-tags Key=displayName,Value="Mary Major" Key=emailAddress,Value="mary_major@example.com" \
--external-id Example987
```

如需詳細資訊，請參閱 [AssumeRole](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_adding-assume-role)。

您可以使用 `AssumeRoleWithSAML` 操作來傳回一組包含 `displayName` 和 `emailAddress` 標籤的暫時登入資料。您可以在存取 CodeCommit 儲存庫時使用這些標籤。這需要您的公司或群組已將您的第三方 SAML 解決方案與 整合 AWS。若是如此，您便可以將 SAML 屬性做為工作階段標籤傳遞。例如，如果您想將名為 *Saanvi Sarkar* 的使用者之顯示名稱和電子郵件身分屬性做為工作階段標籤傳遞：

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:displayName">
  <AttributeValue>Saanvi Sarkar</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:emailAddress">
  <AttributeValue>saanvi_sarkar@example.com</AttributeValue>
</Attribute>
```

如需詳細資訊，請參閱[使用 AssumeRoleWithSAML 傳遞工作階段標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_adding-assume-role-saml)。

您可以使用 `AssumeRoleWithIdentity` 操作來傳回一組包含 `displayName` 和 `emailAddress` 標籤的暫時登入資料。您可以在存取 CodeCommit 儲存庫時使用這些標籤。如要從 OpenID Connect (OIDC) 傳遞工作階段標籤，您必須在 JSON Web 權杖 (JWT) 中包含工作階段標籤。例如，用於呼叫的解碼 JWP 字符`AssumeRoleWithWebIdentity`，其中包含名為 *Li Juan* 之使用者的 `displayName`和 `emailAddress`工作階段標籤：

```
{
    "sub": "lijuan",
    "aud": "ac_oic_client",
    "jti": "ZYUCeREXAMPLE",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags": {
        "principal_tags": {
            "displayName": ["Li Juan"],
            "emailAddress": ["li_juan@example.com"],
        },
        "transitive_tag_keys": [
            "displayName",
            "emailAddress"
        ]
    }
}
```

如需詳細資訊，請參閱[使用 AssumeRoleWithWebIdentity 傳遞工作階段標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_adding-assume-role-idp)。

您可以使用 `GetFederationToken` 操作來傳回一組包含 `displayName` 和 `emailAddress` 標籤的暫時登入資料。您可以在存取 CodeCommit 儲存庫時使用這些標籤。例如，若要使用 AWS CLI 取得包含 `displayName`和 `emailAddress`標籤的聯合字符：

```
aws sts get-federation-token \
--name my-federated-user \
–-tags key=displayName,value="Nikhil Jayashankar" key=emailAddress,value=nikhil_jayashankar@example.com
```

如需詳細資訊，請參閱[使用 GetFederationToken 傳遞工作階段標籤](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_adding-getfederationtoken)。

## CodeCommit IAM 角色
<a name="security_iam_service-with-iam-roles"></a>

[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是您 Amazon Web Services 帳戶中具備特定許可的實體。

### 搭配 CodeCommit 使用臨時登入資料
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

您可以搭配聯合使用暫時憑證、擔任 IAM 角色，或是擔任跨帳戶角色。您可以透過呼叫 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 或 [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) 等 AWS STS API 操作來取得臨時安全登入資料。

CodeCommit 支援使用臨時登入資料。如需詳細資訊，請參閱[使用輪換憑證連線至 AWS CodeCommit 儲存庫](temporary-access.md)。

### 服務連結角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

[服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)可讓 AWS 服務存取其他服務中的資源，以代表您完成 動作。服務連結角色會顯示在您的 IAM 帳戶中，並由該服務所擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。

CodeCommit 不使用服務連結角色。

### 服務角色
<a name="security_iam_service-with-iam-roles-service"></a>

此功能可讓服務代表您擔任[服務角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)。此角色可讓服務存取其他服務中的資源，以代表您完成動作。服務角色會出現在您的 IAM 帳戶中，且由該帳戶所擁有。這表示 IAM 管理員可以變更此角色的許可。不過，這樣可能會破壞此服務的功能。

CodeCommit 不使用服務角色。

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

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

如需政策的範例，請參閱下列主題：
+  [範例 1：允許使用者在單一 中執行 CodeCommit 操作 AWS 區域](customer-managed-policies.md#identity-based-policies-example-1)
+ [範例 2：允許使用者將 Git 用於單一儲存庫](customer-managed-policies.md#identity-based-policies-example-2)
+ [範例 3：允許使用者從指定的 IP 地址範圍連線到儲存庫](customer-managed-policies.md#identity-based-policies-example-3)
+ [範例 4：拒絕或允許分支上的動作](customer-managed-policies.md#identity-based-policies-example-4)
+ [範例 5：在具有標籤的儲存庫上拒絕或允許動作](customer-managed-policies.md#identity-based-policies-example-5)
+ [使用 角色設定 AWS CodeCommit 儲存庫的跨帳戶存取權](cross-account.md)

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

**Topics**
+ [政策最佳實務](#security_iam_service-with-iam-policy-best-practices)
+ [使用 CodeCommit 主控台](#security_iam_id-based-policy-examples-console)
+ [允許使用者檢視他們自己的許可](#security_iam_id-based-policy-examples-view-own-permissions)
+ [根據標籤檢視 CodeCommit *儲存庫*](#security_iam_id-based-policy-examples-view-repositories-tags)

### 政策最佳實務
<a name="security_iam_service-with-iam-policy-best-practices"></a>

身分型政策會判斷您帳戶中的某人是否可以建立、存取或刪除 CodeCommit 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，以進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

### 使用 CodeCommit 主控台
<a name="security_iam_id-based-policy-examples-console"></a>

若要存取 AWS CodeCommit 主控台，您必須擁有一組最低許可。這些許可必須允許您列出和檢視 Amazon Web Services 帳戶中 CodeCommit 資源的詳細資訊。如果您建立比最基本必要許可更嚴格的身分型政策，則對於具有該政策的實體 (IAM 使用者或角色) 而言，主控台就無法如預期運作。

為了確保這些實體仍然可以使用 CodeCommit 主控台，請將下列 AWS 受管政策連接至實體。如需更多資訊，請參閱 *IAM 使用者指南*中的[新增許可到使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)：

如需詳細資訊，請參閱[針對 CodeCommit 使用身分型政策 (IAM 政策）](auth-and-access-control-iam-identity-based-access-control.md)。

對於僅呼叫 AWS CLI 或 AWS API 的使用者，您不需要允許最低主控台許可。反之，只需允許存取符合您嘗試執行之 API 操作的動作就可以了。

### 允許使用者檢視他們自己的許可
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

此範例會示範如何建立政策，允許 IAM 使用者檢視附加到他們使用者身分的內嵌及受管政策。此政策包含在主控台或使用 或 AWS CLI AWS API 以程式設計方式完成此動作的許可。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

### 根據標籤檢視 CodeCommit *儲存庫*
<a name="security_iam_id-based-policy-examples-view-repositories-tags"></a>

您可以在身分型政策中使用條件，根據標籤控制對 CodeCommit 資源的存取。如需示範作法的政策範例，請參閱[範例 5：在具有標籤的儲存庫上拒絕或允許動作](customer-managed-policies.md#identity-based-policies-example-5)。

如需詳細資訊，請參閱*《IAM 使用者指南》*中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

## 對 AWS CodeCommit 身分和存取進行故障診斷
<a name="security_iam_troubleshoot"></a>

使用以下資訊來協助您診斷和修正使用 CodeCommit 和 IAM 時可能遇到的常見問題。

**Topics**
+ [我無權在 CodeCommit 中執行動作](#security_iam_troubleshoot-no-permissions)
+ [我未獲授權，不得執行 iam:PassRole](#security_iam_troubleshoot-passrole)
+ [我想要檢視我的存取金鑰](#security_iam_troubleshoot-access-keys)
+ [我是管理員，想要允許其他人存取 CodeCommit](#security_iam_troubleshoot-admin-delegate)
+ [我想要允許 Amazon Web Services 帳戶以外的人員存取我的 CodeCommit 資源](#security_iam_troubleshoot-cross-account-access)

### 我無權在 CodeCommit 中執行動作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果 AWS 管理主控台 告知您無權執行 動作，則必須聯絡您的管理員尋求協助。您的管理員是為您提供簽署憑證的人員。

如需詳細資訊，請參閱[使用 CodeCommit 主控台所需的許可](auth-and-access-control-iam-identity-based-access-control.md#console-permissions)

### 我未獲授權，不得執行 iam:PassRole
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到錯誤，告知您無權執行 `iam:PassRole`動作，您的政策必須更新，以允許您將角色傳遞至 CodeCommit。

有些 AWS 服務 可讓您將現有角色傳遞給該服務，而不是建立新的服務角色或服務連結角色。如需執行此作業，您必須擁有將角色傳遞至該服務的許可。

當名為 的 IAM `marymajor` 使用者嘗試使用主控台在 CodeCommit 中執行動作時，會發生下列範例錯誤。但是，動作請求服務具備服務角色授予的許可。Mary 沒有將角色傳遞給服務的許可。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在這種情況下，Mary 的政策必須更新，允許她執行 `iam:PassRole` 動作。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的登入憑證。

### 我想要檢視我的存取金鑰
<a name="security_iam_troubleshoot-access-keys"></a>

在您建立 IAM 使用者存取金鑰後，您可以隨時檢視您的存取金鑰 ID。但是，您無法再次檢視您的私密存取金鑰。若您遺失了密碼金鑰，您必須建立新的存取金鑰對。

存取金鑰包含兩個部分：存取金鑰 ID (例如 `AKIAIOSFODNN7EXAMPLE`) 和私密存取金鑰 (例如 `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`)。如同使用者名稱和密碼，您必須一起使用存取金鑰 ID 和私密存取金鑰來驗證您的請求。就如對您的使用者名稱和密碼一樣，安全地管理您的存取金鑰。

**重要**  
請勿將您的存取金鑰提供給第三方，甚至是協助[尋找您的標準使用者 ID](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId)。透過這樣做，您可以讓某人永久存取您的 AWS 帳戶。

建立存取金鑰對時，您會收到提示，要求您將存取金鑰 ID 和私密存取金鑰儲存在安全位置。私密存取金鑰只會在您建立它的時候顯示一次。若您遺失了私密存取金鑰，您必須將新的存取金鑰新增到您的 IAM 使用者。您最多可以擁有兩個存取金鑰。若您已有兩個存取金鑰，您必須先刪除其中一個金鑰對，才能建立新的金鑰對。若要檢視說明，請參閱《IAM 使用者指南》中的[管理存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey)。

### 我是管理員，想要允許其他人存取 CodeCommit
<a name="security_iam_troubleshoot-admin-delegate"></a>

若要允許其他人存取 CodeCommit，您必須將許可授予需要存取的人員或應用程式。如果您使用 AWS IAM Identity Center 管理人員和應用程式，您可以將許可集指派給使用者或群組，以定義其存取層級。許可集會自動建立 IAM 政策，並將其指派給與該人員或應用程式相關聯的 IAM 角色。如需詳細資訊，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[許可集](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)。

如果您不是使用 IAM Identity Center，則必須為需要存取的人員或應用程式建立 IAM 實體 （使用者或角色）。然後，您必須將政策連接到實體，以授予他們 CodeCommit 中的正確許可。授予許可後，請將登入資料提供給使用者或應用程式開發人員。他們將使用這些登入資料來存取 AWS。若要進一步了解如何建立 IAM 使用者、群組、政策和許可，請參閱《IAM **[使用者指南》中的 IAM 身分](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)[和政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

### 我想要允許 Amazon Web Services 帳戶以外的人員存取我的 CodeCommit 資源
<a name="security_iam_troubleshoot-cross-account-access"></a>

如需詳細資訊，請參閱[使用 角色設定 AWS CodeCommit 儲存庫的跨帳戶存取權](cross-account.md)。

# 中的彈性 AWS CodeCommit
<a name="disaster-recovery-resiliency"></a>

 AWS 全球基礎設施是以 AWS 區域 和 可用區域為基礎建置。 AWS 區域 提供多個實體分隔且隔離的可用區域，這些區域與低延遲、高輸送量和高度備援聯網連接。透過可用區域，您可以設計與操作的應用程式和資料庫，在可用區域之間自動容錯移轉而不會發生中斷。可用區域的可用性、容錯能力和擴展能力，均較單一或多個資料中心的傳統基礎設施還高。

CodeCommit 儲存庫或 CodeCommit 核准規則範本存在於建立 AWS 區域 它的 中。如需詳細資訊，請參閱[的區域和 Git 連線端點 AWS CodeCommit](regions.md)。對於儲存庫中的彈性，您可以設定 Git 用戶端一次推送到兩個儲存庫。如需詳細資訊，請參閱[將遞交推送至其他 Git 儲存庫](how-to-mirror-repo-pushes.md)。

如需 AWS 區域 和可用區域的詳細資訊，請參閱 [AWS 全球基礎設施](https://aws.amazon.com/about-aws/global-infrastructure/)。

# 中的基礎設施安全 AWS CodeCommit
<a name="infrastructure-security"></a>

作為受管服務， AWS CodeCommit 受到 [Amazon Web Services：安全程序概觀](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf)白皮書中所述的 AWS 全球網路安全程序的保護。

您可以使用 AWS 已發佈的 API 呼叫，透過網路存取 CodeCommit。用戶端必須支援 Transport Layer Security (TLS) 1.0 或更新版本。建議使用 TLS 1.2 或更新版本。用戶端也必須支援具備完美轉送私密 (PFS) 的密碼套件，例如臨時 Diffie-Hellman (DHE) 或橢圓曲線臨時 Diffie-Hellman (ECDHE)。現代系統 (如 Java 7 和更新版本) 大多會支援這些模式。

請求必須使用存取金鑰 ID 和與 IAM 委託人相關聯的私密存取金鑰來簽署。或者，您可以使用 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) 產生臨時安全憑證來簽署請求。

您可以從任何網路位置呼叫這些 API 操作，但 CodeCommit 支援根據來源 IP 地址的限制。您也可以使用 CodeCommit 政策來控制來自特定 Amazon Virtual Private Cloud (Amazon VPC) 端點或特定 VPCs存取。實際上，這只會隔離網路中特定 VPC 對指定 CodeCommit 資源 AWS 的網路存取。

如需詳細資訊，請參閱下列內容：
+ [範例 1：允許使用者在單一 中執行 CodeCommit 操作 AWS 區域](customer-managed-policies.md#identity-based-policies-example-1)
+ [範例 3：允許使用者從指定的 IP 地址範圍連線到儲存庫](customer-managed-policies.md#identity-based-policies-example-3)
+ [使用 AWS CodeCommit 搭配界面 VPC 端點](codecommit-and-interface-VPC.md)