【问题标题】:How to assume an AWS role from another AWS role?如何从另一个 AWS 角色代入 AWS 角色?
【发布时间】:2019-10-24 15:59:45
【问题描述】:

我有两个 AWS 账户 - 比如说 A 和 B。

在账户 B 中,我定义了一个角色,允许从账户 A 访问另一个角​​色。我们称之为 Role-B

{
  "Version": "2012-10-17",
  "Statement": [
  {
     "Effect": "Allow",
     "Principal": {
         "AWS": "arn:aws:iam::********:role/RoleA"
     },
    "Action": "sts:AssumeRole"
  }]
}

在帐户 A 中,我定义了一个允许 root 用户担任角色的角色。让我们称之为角色-A

{
  "Version": "2012-10-17",
  "Statement": [
  {
     "Effect": "Allow",
     "Principal": {
         "AWS": "arn:aws:iam::********:root"
     },
    "Action": "sts:AssumeRole"
  }]
}

角色 A 附加了以下策略

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::****:role/RoleB",
            "Effect": "Allow"
       }]
 }

作为帐户 A 中的用户,我担任角色 A。现在使用这个临时凭证,我想承担角色 B 并访问帐户 B 拥有的资源。我有以下代码

client = boto3.client('sts')

firewall_role_object = client.assume_role(
    RoleArn=INTERMEDIARY_IAM_ROLE_ARN,
    RoleSessionName=str("default"),
    DurationSeconds=3600)

firewall_credentials = firewall_role_object['Credentials']

firewall_client = boto3.client(
    'sts',
    aws_access_key_id=firewall_credentials['AccessKeyId'],
    aws_secret_access_key=firewall_credentials['SecretAccessKey'],
    aws_session_token=firewall_credentials['SessionToken'], )

optimizely_role_object = firewall_client.assume_role(
    RoleArn=CUSTOMER_IAM_ROLE_ARN,
    RoleSessionName=str("default"),
    DurationSeconds=3600)

print(optimizely_role_object['Credentials'])

此代码适用于我从客户那里获得的一组角色,但不适用于我在我有权访问的两个 AWS 账户之间定义的角色。

【问题讨论】:

  • 谁能澄清 A/B 角色如何与 INTERMEDIARY_IAM_ROLE_ARN 和 CUSTOMER_IAM_ROLE_ARN 匹配?哪个是哪个?

标签: python amazon-web-services boto3 amazon-iam


【解决方案1】:

终于搞定了。上面的配置是正确的。政策中有拼写错误。

我将把这个问题留在这里,因为它可能对想要使用角色实现双跳身份验证的人有所帮助。

【讨论】:

  • 这真的很有帮助,谢谢。我想你修正了保单中的拼写错误。 :-)
  • 非常感谢。经过数小时尝试随机解决方案后,我找到了您的答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多