如何从另一个AWS角色中假设一个AWS角色



我有两个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用户承担角色的角色。我们称之为Role-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帐户之间定义的角色。

终于搞定了。以上配置是正确的。保险单中有一个拼写错误。

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

相关内容

  • 没有找到相关文章

最新更新