Как выполнить aws ec2 description-instance для другого аккаунта

Предполагая, что у нас есть два аккаунта 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 / конфигурации

[default]
region = us-east-1

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

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

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

{
  "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 прилагается.

2 ответа

Решение

Если кто-то все еще интересуется ответом, вы должны сохранить учетные данные 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

Другие вопросы по тегам