联合用户访问 AWS CodeCommit

Access to AWS CodeCommit by federated users

我已经为 AWS 账户实施了联合身份验证,使开发人员能够通过公司单点登录使用 AWS 服务on/SAML。

我对 AWS CodeCommit 所做的所有初步阅读似乎都需要附加到特定 IAM 用户的 SSH 密钥以使该用户能够通过 SSH 访问 CodeCommit,或者访问密钥 ID 和秘密密钥组合用于 HTTPS 访问。

我看不到允许联合用户(即可以通过假定角色而不是特定 IAM 用户登录 AWS 的用户)访问 CodeCommit 存储库的方法。有谁能够帮助我?我是否漏掉了一些明显的东西?

CodeCommit pricing 谈到出于定价目的将联合用户计为活跃用户,这意味着这是可能的。

AWS CodeCommit over HTTPS 可以使用来自 AWS CLI 的任何凭证,包括假定的角色凭证。例如,您可以在 AWS CLI 配置中包含以下内容(示例取自 here):

[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadmin
source_profile = default

您可以配置 git 以将该配置文件用于 CodeCommit 存储库,并且在您推送或拉取 CodeCommit 存储库时将为您承担该角色。

git config --global credential.helper '!aws --profile marketingadmin codecommit credential-helper $@'

对于 SAML,有更多设置可以让 AWS CLI 能够承担 SAML 的角色。有关说明,请参阅 AWS 博客文章 here and here。按照这些说明和 运行 ./samlapi.py 或 ./samlapi_formauth.py,您将配置 git 以使用 CodeCommit 存储库的 "saml" 配置文件:

git config --global credential.helper '!aws --profile saml codecommit credential-helper $@'

对于OSX

  1. 安装 git 和 AWS cli
  2. 配置 AWS cli 凭证:

    aws configure
    
  3. 设置 my-profile 配置文件,其中包含要通过修改 ~/.aws/credentials 文件承担的角色。请注意,管理员应在拥有 CodeCommit 存储库的 AWS 账户中创建此角色,并且该角色应将您的账户作为受托人并具有足够的 CodeCommit 权限

    [my-profile]
    role_arn = ARN_OF_THE_ROLE_TO_BE_ASSUMED
    source_profile = default
    
  4. 仔细检查 ~/.aws/config 中的区域配置:

    [default]
    region = us-east-1
    

配置 git 以在 clone/push/pull/etc... 操作期间使用 AWS CLI 配置文件。请注意使用 my-profile 作为要使用的配置文件名称,它又承担了我们已经讨论过的角色

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

您应该能够使用 http 端点

对属于 AWS parent 帐户的 CodeCommit 存储库执行 git 操作