0

尝试让 Cognito UserPool 用户可以访问 AWS CodeCommit,如下所述

  1. 创建了一个IAM角色AWSCodeCommitPowerUser
  2. 与用户池建立信任关系,
  3. 安装git-remote-codecommit配置了配置文件
  4. 接下来,尝试以下任何操作:
  • Set source_profile = default,其中default凭证配置文件包含一个 IAM 用户(错误的方式,但只是为了检查)。
    执行git clone codecommit://CodeAccessProfile@repo抛出:

An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::123456789:user/name.surname is not authorized to perform: sts:AssumeRole on resource...

  • 在 Web 应用程序中以 Cognito 用户池用户身份登录,从响应中
    获取Cognito IdToken
    , 并使用它调用假设角色与网络身份。得到:

An error occurred (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: Provided Token is not a Login With Amazon token

我可能需要在配置文件中进行设置web_identity_token_file=token-file.txt,但是从哪里获取与 Cognito 用户关联的令牌?

我想知道如何使 git-remote-codecommit 为 Cognito UserPool 用户工作,避免使用 STS 令牌带来这种痛苦,只需正确配置配置文件?

UPD:
汇报

在基于 AWS 的 POC 上花了几周时间后,我们决定在运行在 k8 中的轻量级且完全可控的服务(例如Gitea )上实施所有管道

4

1 回答 1

1

加上我的两分钱:我正面临着你的用例,但即使我可能已经取得了一些进展,我仍然无法使用 Cognito 用户克隆一个 repo。

要获得token-file.txt我使用以下命令:

    aws cognito-idp initiate-auth \
    --region eu-central-1 \
    --auth-flow USER_PASSWORD_AUTH \
    --client-id 1234abcd1234abcd1234abcd \
    --auth-parameters USERNAME=<username>,PASSWORD=<password> | \
    jq .AuthenticationResult.IdToken | \
    sed 's/"//g' > token-file.txt

遵循答案中的建议。

我的.aws/credentials文件如下所示:

    role_arn=arn:aws:iam::1234567890123:role/Cognito_TESTAuth_Role
    web_identity_token_file=<path-to-token-file.txt>

Cognito_TESTAuth_Role当我创建链接到 Cognito 用户池的身份池时,AWS 添加的 IAM 角色在哪里。我添加了 AWSCodeCommitPowerUser 策略和允许sts对该角色执行所有操作的策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": "sts:*",
               "Resource": "*"
            }
       ]
    }

但是当我尝试克隆存储库时,出现以下错误:

An error occurred (AccessDenied) when calling the AssumeRoleWithWebIdentity operation: Not authorized to perform sts:AssumeRoleWithWebIdentity

这与您的不同:虽然看起来我得到了一个有效的令牌(这令人鼓舞),但看起来我仍然缺少其他东西。

我想知道您是否在此问题上取得了任何进展,以及如上所述获取令牌是否允许您访问 CodeCommit。

于 2021-12-11T15:11:43.913 回答