【问题标题】:Cannot assume role on EC2 instance无法在 EC2 实例上担任角色
【发布时间】:2020-12-07 04:02:08
【问题描述】:

我的目标是让我在一个账户中的 EC2 实例从另一个账户中的 S3 存储桶中读取数据。我按照教程here.

我在 EC2 实例上附加了一个角色,该实例具有允许 EC2 在不同账户中担任另一个角色的内联策略。

这是一个例子:

附加到 EC2 实例的角色:RoleA - AccountID: 11111111111

将担任的角色:RoleB - AccountID: 22222222222

.aws/配置

[profile RoleA]
role_arn = arn:iam::22222222222:role/RoleB
credential_source = EC2InstanceMetadata

当我运行命令aws sts get-caller-identity --profile RoleA 时,输出应该类似于:

"Account": "22222222222",

 "UserId": "AROAEXAMPLEID:sessionName",

 "Arn": "arn:aws:sts::22222222222:assumed-role/RoleB/sessionName"

但我看到的是:

"Account": "11111111111",

 "UserId": "AROAEXAMPLEID:sessionName",

 "Arn": "arn:aws:sts::11111111111:assumed-role/RoleA/sessionName"

我是在创建角色还是在其他地方搞砸了?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 amazon-iam


    【解决方案1】:

    或者,您可以使用存储桶策略

    场景:

    • Account-A 中的 EC2 实例,使用 Role-A
    • Account-B 中的 S3 存储桶 (Bucket-B)

    向 Bucket-B 添加允许 Role-A 访问的存储桶策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::111122223333:role/role-a"
                },
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::awsexamplebucket1/*"
                ]
            }
        ]
    }
    

    这允许 EC2 使用的 IAM 角色访问从存储桶获取对象。不需要额外的角色或担任角色。

    【讨论】:

    • 这听起来是个好主意,没想到!明天我将尝试获得创建存储桶策略的权限。
    • EC2 IAM 角色还需要被授予在该存储桶上使用GetObject 的权限,但它可能已经拥有 S3 权限。基本上,双方都需要允许。
    【解决方案2】:

    您必须明确承担该角色。为此,在您的实例中,您必须执行 assume-role CLI 命令,例如:

    aws sts assume-role --role-arn arn:aws:sts::22222222222:assumed-role/RoleB/sessionName --role-session-name <session-name> --region <region>
    

    这将返回一组临时凭据SecretAccessKeySessionTokenAccessKeyId。在使用 CLI 访问其他账户中的 S3 存储桶之前,您可以将新凭证导出为环境变量。

    另一种方式的方法是设置 CLI 配置文件,其角色如下所示:

    【讨论】:

    • 我用我的.aws/config 文件更新了我的原始帖子。我无法理解您发布的链接中所说的某些内容,但我主要只需要在两个角色之间添加信任关系吗?
    • @Sogun 您好,您所学的教程是正确的,并且有效。我自己验证了。必须与您设置角色或实例配置文件的方式有关,这些都未在问题中显示。
    猜你喜欢
    • 1970-01-01
    • 2022-07-28
    • 2021-03-03
    • 2023-03-13
    • 2018-09-19
    • 2016-03-24
    • 1970-01-01
    • 2022-08-15
    • 2018-09-10
    相关资源
    最近更新 更多