Назад | Перейти на главную страницу

Как выполнить описательные экземпляры aws ec2 для другой учетной записи

Предположим, у нас есть два аккаунта AWS: аккаунт A, аккаунт B и экземпляр ec2, работающий на аккаунте A.

aws ec2 describe-instances работает должным образом для собственной учетной записи экземпляра без ~/.aws/credentials файл с ролью экземпляра.

Моя цель - бежать aws ec2 describe-instances для учетной записи B из этого экземпляра.

Следующая команда работает и выводит учетные данные:

$ aws sts assume-role --role-arn arn:aws:iam::012345678901:role/accountb-role --role-session-name test

Однако это не так:

$ aws ec2 describe-instances --profile AccountB

'aws_access_key_id'

~ / .aws / config

[default]
region = us-east-1

[profile AccountB]
role_arn = arn:aws:iam::012345678901:role/accountb-role
source_profile = default

Как я уже заметил, ~/.aws/credentials не существует, поскольку экземпляр использует роль экземпляра для IAM.

Политика доверительных отношений accountb-role

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::012345678900:role/accounta-role"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

встроенная политика экземпляра

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

Оба accounta-role роль экземпляра и accountb-role также есть в наличии ReadOnlyAccess Политика IAM прилагается.

Если кто-то все еще интересуется ответом, вы должны сохранить учетные данные aws, чтобы иметь возможность использовать AccountB между этими вызовами:

aws sts assume-role --role-arn arn:aws:iam::012345678901:role/accountb-role --role-session-name test

<< сохраните aws_access_key_id, aws_secret_access_key, AWS_SESSION_TOKEN здесь >>

Затем вы звоните

aws configure --profile AccountB 

чтобы убедиться, что вы настроили их. также, может ли срок действия AWS_SESSION_TOKEN истечь через некоторое время

aws ec2 describe-instances --profile AccountB

Эта статья подробно объясняет

На вашей панели IAM также есть возможность предоставить доступ пользователю IAM с несколькими учетными записями, что, похоже, вы ищете.

http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html