是否必须创建 IAM 用户才能使用 AWS CodeCommit?

Posted

技术标签:

【中文标题】是否必须创建 IAM 用户才能使用 AWS CodeCommit?【英文标题】:Must I create an IAM user in order to use AWS CodeCommit? 【发布时间】:2020-03-05 02:20:44 【问题描述】:

为了使用 AWS CodeCommit,我创建了一个附加了 AWSCodeCommitFullAccess 等策略的 IAM 用户,并且我已经生成并下载了 accessKey 和代码提交凭证(用户名和密码)。

在 CodeCommit 中创建存储库后,我意识到每当我想运行一些 git 命令时,git 都会提示一条消息,要求我输入用户名/密码。

假设我有一个大团队使用代码提交,是否意味着我必须让每个人都知道 IAM 用户的 accessKey 和凭据(用户名和密码)?它安全吗?我不能使用 IAM 角色吗?使用 IAM 角色,我可以获得 accessKey 虽然它会定期过期,但我猜代码提交会没问题。但是我注意到 IAM 角色没有办法生成代码提交凭据(用户名和密码),所以我不知道如何使用它来运行 git 命令。

此外,每次运行 git 命令时,我都需要输入代码提交凭据(用户名和密码),这很不方便。有什么简单的方法吗?比如缓存凭证?

【问题讨论】:

【参考方案1】:

您需要的是 AWS CLI 凭证助手 [1]。凭证助手可以通过从 AWS SDK 获取凭证来动态生成 git 凭证,即通过凭证链,可以是环境变量、~/.aws/credential 文件或 IAM 实例配置文件等。

因此,在这种情况下,如果您不想为每个用户创建一个 IAM 用户,您只需将 EC2 实例配置文件权限授予 CodeCommit (AWSCodeCommitFullAccess)。然后在这个 EC2 实例上设置凭证助手,当使用 git 客户端时,git 将对用户透明地进行身份验证。设置过程的详细信息:[1]。

参考:

[1] 使用 AWS CLI 凭证帮助程序在 Windows 上设置与 AWS CodeCommit 存储库的 HTTPS 连接的步骤 - https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-windows.html

【讨论】:

谢谢!。另一种方法是将我的 ssh 公钥复制到 IAM -> 用户 -> 我的 CodeCommit 用户 -> 安全凭证 -> 上传 SSH 密钥,这样虽然我仍然需要创建一个永久 IAM 用户,但我不需要总是输入运行 git 命令时我的用户名/密码 @user389955 如果您不想公开您的 IAM 用户凭证,则通过实例配置文件进行身份验证将是最佳选择。为此,您必须使用 AWS CLI Credential Helper【参考方案2】:

如果您的实例配置文件具有 CodeCommit 权限,则无需创建 IAM 用户。如其他答案所述,我们可以使用 AWS CLI Credential Helper。

通过实例配置文件进行代码提交验证所需要做的就是

    确保在 EC2 上安装了 aws cli v2

    在 EC2 上安装 git

    配置 git 以使用凭证助手

    git config --global credential.helper '!aws codecommit credential-helper $@' git config --global credential.UseHttpPath true

您可以从 EC2 运行 git 命令来测试配置是否正常运行

【讨论】:

以上是关于是否必须创建 IAM 用户才能使用 AWS CodeCommit?的主要内容,如果未能解决你的问题,请参考以下文章

AWS IAM 策略:要求用户自己预置 MFA

AWS IAM 策略模拟器的功能测试工具

AWS IAM 策略允许用户创建具有特定策略/角色的 IAM 用户

从 cli 创建的 IAM 用户未显示在 AWS 控制台中

通过 iam:pas-s-role 创建 iam 用户和 aws 机密

创建一个IAM用户以授予执行在AWS EC2中某些任务的权限