【问题标题】:Access to AWS CodeCommit by federated users联合用户访问 AWS CodeCommit
【发布时间】:2016-02-17 02:47:08
【问题描述】:

我已为 AWS 账户实施身份联合,以使开发人员能够通过企业单点登录/SAML 使用 AWS 服务。

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

我看不到让联合用户(即可以通过代入角色而不是特定 IAM 用户登录 AWS 的用户)访问 CodeCommit 存储库的方法。有谁能够帮我?我错过了什么明显的东西吗?

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

【问题讨论】:

    标签: amazon-web-services amazon-iam aws-codecommit


    【解决方案1】:

    基于 HTTPS 的 AWS CodeCommit 可以使用来自 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 博客文章 herehere。遵循这些说明并运行 ./samlapi.py 或 ./samlapi_formauth.py 后,您可以将 git 配置为使用 CodeCommit 存储库的“saml”配置文件:

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

    【讨论】:

    • +1 非常有帮助,谢谢,您的建议让我大部分时间都成功了。实际上需要安装 AWS 工具并运行 git-credential-AWSS4.exe 工具而不是您的 git config 调用才能正确安装凭证帮助程序。
    • 当我按照上述过程尝试执行 git clone 时,系统会提示我输入用户名和密码。我不确定使用哪一个。有什么建议吗?
    • 执行 adfs SSO 后,系统也会提示我输入用户名和密码。然后我做了 sudo pip install git-remote-codecommit 和 git clone codecommit://CodeCommitProfile@MyDemoRepo my-demo-repo 工作正常
    【解决方案2】:

    对于 OSX

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

      aws configure
      
    3. 通过修改 ~/.aws/credentials 文件设置包含要承担的角色的 my-profile 配置文件。请注意,管理员应在拥有 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 配置为在克隆/推送/拉取/等操作期间使用 AWS CLI 配置文件。请注意使用 my-profile 作为要使用的配置文件名称,这反过来又承担了我们已经讨论过的角色

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

    您应该能够使用 http 端点对属于 AWS 账户的 CodeCommit 存储库执行 git 操作

    【讨论】:

    • 您如何设置角色并将帐户作为受托人?
    • 在 IAM --> 角色中选择“创建角色”。选择“另一个帐户”,将该受托人帐户 ID 放入框中。此外,不要忘记通过策略为该角色添加适当的权限。对于快速测试,只需选择 AWS 托管策略“AWSCodeCommitReadOnly”(在 PRD 中,应将其限制为您想要的特定存储库)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2020-04-28
    • 1970-01-01
    • 2019-10-13
    • 2016-07-19
    • 2020-12-22
    相关资源
    最近更新 更多