

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

# 使用輪換憑證連線至 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 具名設定檔時，會傳回範圍限定於該設定檔的結果。

