本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
正在连接到 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 实例。
-
您正在使用 Git 和 HTTPS 以及 AWS CLI 凭证助手从 Amazon EC2 实例连接到 CodeCommit 存储库。
-
Amazon EC2 实例附加了 IAM 实例配置文件,其中包含对于 Linux、macOS 或 Unix 上使用 AWS CLI 凭据帮助器的 HTTPS 连接或在 Windows 上使用 AWS CLI 凭据助手进行 HTTPS 连接中所述的访问权限。
-
您已按照对于 Linux、macOS 或 Unix 上使用 AWS CLI 凭据帮助器的 HTTPS 连接或在 Windows 上使用 AWS CLI 凭据助手进行 HTTPS 连接中所述,在 Amazon EC2 实例上安装和配置了 Git 凭证助手。
满足上述要求的 Amazon EC2 实例已经设置为可以代表您向其 CodeCommit 传送临时访问证书。
注意
您可以在 Amazon EC2 实例上配置和使用 git-remote-codecommit。
要向用户提供对您的 CodeCommit 仓库的临时访问权限,请完成以下步骤。
步骤 1:完成先决条件
完成设置步骤,为用户提供使用轮换凭证访问您的 CodeCommit 存储库的权限:
-
有关跨账户存取的信息,请参阅演练:使用 IAM 角色委派跨 Amazon Web Services 账户的访问权限和配置对的跨账户访问权限 AWS CodeCommit 使用角色的存储库。
-
有关 SAML 和联合,请参阅使用贵组织的身份验证系统授予 AWS 资源访问权限和关于基于 AWS STS SAML 2.0 的联合。
-
对于 MFA,请参阅使用 Multi-Factor 身份验证 (MFA) 设备 AWS和创建临时安全证书以启用 IAM 用户的访问权限。
-
有关 “使用亚马逊、亚马逊 Cognito、Facebook、谷歌或任何 OIDC-compatible 身份提供商登录”,请参阅关于 AWS STS 网络联合身份验证。
使用中的信息的身份验证和访问控制 AWS CodeCommit来指定要授予用户的 CodeCommit 权限。
步骤 2:获取角色名称或访问凭证
如果您希望您的用户通过代入角色来访问存储库,请为您的用户提供该角色的 Amazon 资源名称(ARN)。否则,根据您设置访问权限的方式,您的用户可以通过以下方式之一获得轮换凭证:
-
要进行跨账户访问,请调用 AWS CLI assume-role 命令或调用 API。 AWS STS AssumeRole
-
对于 SAML,调用 AWS CLI assume-role -with-saml 命令或 API。 AWS STS AssumeRoleWithSAML
-
对于联合,请调用 AWS CLI assume-role 或 get-federation-token 命令或或 API。 AWS STS AssumeRole GetFederationToken
-
对于 MFA,请调用 AWS CLI get-session-token 命令或 API。 AWS STS GetSessionToken
-
要使用亚马逊、亚马逊 Cognito、Facebook、谷歌或任何 OIDC-compatible 身份提供商登录,请调用 AWS CLI assume-role- with-web-identity 命令或 API。 AWS STS AssumeRoleWithWebIdentity
第 3 步:安装 git-remote-codecommit 并配置 AWS CLI
您必须通过安装 git-remote-codecommit
-
按照设置 中的说明设置 AWS CLI。使用 aws configure 命令配置一个或多个配置文件。考虑创建一个命名配置文件,以便在使用轮换凭证连接到 CodeCommit 存储库时使用。
-
您可以通过以下方式之一将证书与用户的 AWS CLI 指定个人资料相关联。
-
如果您要代入某个角色进行访问 CodeCommit,请使用担任该角色所需的信息配置一个命名配置文件。例如,如果您想代入一个在亚马逊网络服务账户 111111111111
CodeCommitAccess中命名的角色,则可以配置一个默认配置文件以在处理其他 AWS 资源时使用,并配置一个在担任该角色时使用的命名配置文件。以下命令创建名为的命名配置文件CodeAccess,该配置文件假定角色名为CodeCommitAccess。用户名Maria_Garcia与会话相关联,默认配置文件设置为其 AWS 证书的来源:aws configure set role_arn arn:aws:iam::111111111111:role/CodeCommitAccess--profileCodeAccessaws configure set source_profile default --profileCodeAccessaws configure set role_session_name "Maria_Garcia" --profileCodeAccess如果要验证更改,请手动查看或编辑
~/.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)
AssumeRoleWithWebIdentityAPI 调用以刷新临时证书。使用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/CodeCommitAccessweb_identity_token_file=~/role_session_name = Maria_Garciamy-credentials/my-token-file
有关更多信息,请参阅《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 指定配置文件时,将返回该配置文件范围内的结果。