Как я могу получить значение секрета из экземпляра EC2? - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь настроить свой экземпляр EC2 так, чтобы скрипт мог получить значение секрета, например, во время загрузки.

Я создал экземпляр EC2 из CentOS AMI и секрет в Secrets Manager.Секрет использует ключ от KMS.

Затем я определил роль IAM с соответствующими политиками для расшифровки секрета и назначил эту роль экземпляру EC2.

В этом экземпляре я вижу AccessKeyId и SecretAccessKey в метаданныхс помощью этой команды (Decrypt-Secret - имя роли):

$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/Decrypt-Secrets/
{
  "Code" : "Success",
  "LastUpdated" : "2018-12-06T09:45:55Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "AAAAAAAAAAAAAA",
  "SecretAccessKey" : "BBBBBBBBBBBBBBBBBBB",
  "Token" : "...",
  "Expiration" : "2018-12-06T16:11:24Z"
}

Затем я настраиваю aws cli:

$ aws configure
AWS Access Key ID [None]: AAAAAAAAAAAAAA
AWS Secret Access Key [None]: BBBBBBBBBBBBBBBBBBB
Default region name [us-east-1]: us-east-1
Default output format [None]: 

И пытаюсь получить секрет:

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:1234567890:secret:my-secret-aaaaa

An error occurred (UnrecognizedClientException) when calling the GetSecretValue operation: The security token included in the request is invalid.

Насколько я понимаю, ошибка заключается в том, что я не использую правильный KeyID и AccessKey.Но я не понимаю, почему.

Я также пытался создать пользователя IAM, который использует ту же политику, и когда я указываю KeyID и AccessKey этого пользователя, он работает, я могу получить секрет.Но я должен указать идентификатор и ключ вручную, и моя цель - сценарий для автоматического получения секрета.

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Когда вы запускаете CLI aws на экземпляре EC2 с уже настроенной ролью IAM, вам не нужно устанавливать ключ доступа или любую другую информацию (кроме региона).

CLI уже знает, какавтоматически выбирать учетные данные из метаданных EC2.Более того, учетные данные в метаданных являются временными и истекают через 6 часов, поэтому вы не хотите сохранять их в своей конфигурации.

Удалите кредиты, которые вы сохранили в своей конфигурации, и снова введите команду с правильнымирегион:

aws --region us-east-1 secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:1234567890:secret:my-secret-aaaaa
0 голосов
/ 06 декабря 2018

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

aws configure запрашивает только KeyID и AccessKey.Для настройки токена мне нужно было сделать:

$ aws configure set aws_session_token "FQoGZXI..."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...