

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用轮换凭证连接到 AWS CodeCommit 存储库
<a name="temporary-access"></a>

您无需为用户配置 IAM 用户或使用访问密钥和私有密钥，即可向他们授予对 AWS CodeCommit 存储库的访问权限。要向联合身份分配权限，您可以创建角色并为角色定义权限。当联合身份进行身份验证时，该身份将与角色相关联并被授予由此角色定义的权限。有关用于联合身份验证的角色的信息，请参阅《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)
+ 联合身份验证
+ 以 Login with Amazon 登录
+ Amazon Cognito
+ Facebook
+ Google
+ OpenID Connect (OIDC) 兼容身份提供商

**注意**  
以下信息仅适用于使用**git-remote-codecommit**或 AWS CLI 凭证助手连接到 CodeCommit 存储库。由于临时访问或联合访问的推荐方法 CodeCommit 是设置**git-remote-codecommit**，因此本主题提供了使用该实用程序的示例。有关更多信息，请参阅 [使用的 HTTPS 连接 AWS CodeCommit 的设置步骤 git-remote-codecommit](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 上使用 HTTPS 连接 AWS CLI ](setting-up-https-unixes.md)或[用于在 Windows 上使用 AWS CLI 凭据助手进行 HTTPS 连接](setting-up-https-windows.md)中所述的访问权限。
+ 您已按照[使用凭证助手在 Linux、macOS 或 Unix 上使用 HTTPS 连接 AWS CLI ](setting-up-https-unixes.md)或[用于在 Windows 上使用 AWS CLI 凭据助手进行 HTTPS 连接](setting-up-https-windows.md)中所述，在 Amazon EC2 实例上安装和配置了 Git 凭证助手。

满足上述要求的 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.](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSAML.html) 0 的联合。
+ 有关 MFA 的信息，请参阅[使用 AWS多重身份验证 (MFA) 设备](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](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 资源名称（ARN）。否则，根据您设置访问权限的方式，您的用户可以通过以下方式之一获得轮换凭证：
+ 要进行跨账户访问，请调用 AWS CLI [assume-role 命令或调](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html)用 API。 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
+ 对于 SAML，请调用 AWS CLI [assume-role-with-saml](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html)命令或 AWS STS [AssumeRoleWithSAML API](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)。
+ 要进行联合，请调用 AWS CLI [假设角色](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[GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html)](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) APIs
+ 对于 MFA，请调用 AWS CLI [get-session-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html)命令或 API。 AWS STS [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html)
+ 对于 Login with Amazon、Amazon Cognito、Facebook、Google 或任何兼容 OIDC 的身份提供商，请调用 AWS CLI [assume-role-with-web-](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) identity 命令或 API。 AWS STS [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)



## 步骤 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，请使用担任该角色所需的信息配置命名配置文件。例如，如果您想代入*CodeCommitAccess*在 Amazon Web Services 账户 111111111111 中名为的角色，则可以配置在使用其他 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
     ```
   + 如果您使用的是网络联合身份验证和 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) 和[使用 AWS CLI中的 IAM 角色](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**、克隆、推送和拉取他或她有权访问的 CodeCommit 存储库。**git pull**例如，要克隆存储库：

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

Git 提交、推送和拉取命令使用常规 Git 语法。

当用户使用 AWS CLI 并指定与轮换访问凭证关联的 AWS CLI 命名配置文件时，将返回限于该配置文件的结果。

