View a markdown version of this page

正在连接到 AWS CodeCommit 带有轮换凭证的存储库 - AWS CodeCommit

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

正在连接到 AWS CodeCommit 带有轮换凭证的存储库

您可以授予用户访问您的 AWS CodeCommit 存储库的权限,而无需为他们配置 IAM 用户或使用访问密钥和私有密钥。要向联合身份分配权限,您可以创建角色并为角色定义权限。当联合身份进行身份验证时,该身份将与角色相关联并被授予由此角色定义的权限。有关用于联合身份验证的角色的信息,请参阅《IAM 用户指南》中的针对第三方身份提供者创建角色(联合身份验证)。如果您使用 IAM Identity Center,则需要配置权限集。为控制您的身份在进行身份验证后可以访问的内容,IAM Identity Center 将权限集与 IAM 中的角色相关联。有关权限集的信息,请参阅《AWS IAM Identity Center 用户指南》中的权限集。您还可以为 IAM 用户配置基于角色的访问权限,以访问单独的 Amazon Web Services 账户中的 CodeCommit 存储库(这种技术称为跨账户访问)。有关配置对存储库的跨账户存取的演练,请参阅配置对的跨账户访问权限 AWS CodeCommit 使用角色的存储库。

当用户想要或必须通过以下方式进行身份验证时,您可以为这些用户配置访问权限:

  • 安全断言标记语言 (SAML)

  • Multi-factor 身份验证 (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。

您不能使用 SSH 或 Git 凭证和 HTTPS 连接到具有轮换或临时访问证书的 CodeCommit 存储库。

如果满足以下所有要求,则不需要完成这些步骤:

满足上述要求的 Amazon EC2 实例已经设置为可以代表您向其 CodeCommit 传送临时访问证书。

注意

您可以在 Amazon EC2 实例上配置和使用 git-remote-codecommit。

要向用户提供对您的 CodeCommit 仓库的临时访问权限,请完成以下步骤。

步骤 1:完成先决条件

完成设置步骤,为用户提供使用轮换凭证访问您的 CodeCommit 存储库的权限:

使用中的信息的身份验证和访问控制 AWS CodeCommit来指定要授予用户的 CodeCommit 权限。

步骤 2:获取角色名称或访问凭证

如果您希望您的用户通过代入角色来访问存储库,请为您的用户提供该角色的 Amazon 资源名称(ARN)。否则,根据您设置访问权限的方式,您的用户可以通过以下方式之一获得轮换凭证:

第 3 步:安装 git-remote-codecommit 并配置 AWS CLI

您必须通过安装 git-remote-codecommit 并在 AWS CLI中配置一个配置文件来配置本地计算机以使用访问凭证。

  1. 按照设置 中的说明设置 AWS CLI。使用 aws configure 命令配置一个或多个配置文件。考虑创建一个命名配置文件,以便在使用轮换凭证连接到 CodeCommit 存储库时使用。

  2. 您可以通过以下方式之一将证书与用户的 AWS CLI 指定个人资料相关联。

    • 如果您要代入某个角色进行访问 CodeCommit,请使用担任该角色所需的信息配置一个命名配置文件。例如,如果您想代入一个在亚马逊网络服务账户 111111111111 CodeCommitAccess 中命名的角色,则可以配置一个默认配置文件以在处理其他 AWS 资源时使用,并配置一个在担任该角色时使用的命名配置文件。以下命令创建名为的命名配置文件CodeAccess,该配置文件假定角色名为CodeCommitAccess。用户名Maria_Garcia与会话相关联,默认配置文件设置为其 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 连接 (OIDC),请配置一个命名配置文件,该配置文件代表您发出 AWS Security Token Service (AWS STS) AssumeRoleWithWebIdentity API 调用以刷新临时证书。使用aws configure set命令或手动编辑~/.aws/credentials文件(对于 Linux)或%UserProfile%.aws\credentials文件(适用于 Windows)以添加具有所需设置值的 AWS CLI 命名配置文件。例如,要创建一个代入CodeCommitAccess角色并使用 Web 身份令牌文件的配置文件 ~/: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 和使用 AWS CLI中的 IAM 角色。

第 4 步:访问 CodeCommit 存储库

假设您的用户已按照中的说明连接存储库连接到 CodeCommit 存储库,则该用户随后使用git-remote-codecommit和 Git 提供的扩展功能来调用git clonegit push、克隆、推送和提取他们有权访问的 CodeCommit 存储库。git pull例如,要克隆存储库:

git clone codecommit://CodeAccess@MyDemoRepo

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

当用户使用 AWS CLI 并指定与轮换访问凭证关联的 AWS CLI 指定配置文件时,将返回该配置文件范围内的结果。