Объявление ресурса ключа доступа IAM с помощью CloudFormation

Я создал пользователя в своем шаблоне с ключом доступа:

"MyAccessKey" : {
   "Type" : "AWS::IAM::AccessKey",
   "Properties" : {
      "UserName" : { "Ref" : "User12" }
   }
} 

Мне нужно получить идентификатор ключа доступа и секретный ключ в выходных данных шаблона. Как это сделать? Спасибо

2 ответа

Решение

Идентификатор ключа доступа и секретный ключ доступны в качестве возвращаемых значений для ресурса AWS::IAM::AccessKey:

"Outputs" : {
  "MyAccessKeyId": {
    "Ref" : "MyAccessKey"
  },
  "MySecretKey": {
    "Fn::GetAtt": [ "MyAccessKey", "SecretAccessKey" ]
  }
}

В CloudFormation документацииOutputs указано ...

CloudFormation не редактирует и не скрывает информацию, которую вы включаете в раздел «Вывод». Мы настоятельно не рекомендуем вам использовать этот раздел для вывода конфиденциальной информации, такой как пароли или секреты.

Более безопасный вариант - создать ресурс AWS :: SecretsManager :: Secret , содержащий доступ пользователя и секретные ключи.

Вот пример шаблона для создания пользователей-ботов, который использует этот подход ...

      ---
AWSTemplateFormatVersion: 2010-09-09
Description: example bot user

Resources:

  Bot:
    Type: AWS::IAM::User
    Properties:
      Path: /bot/
      UserName: !Ref AWS::StackName

  BotCredentials:
    Type: AWS::IAM::AccessKey
    Properties:
      Status: Active
      UserName: !Ref Bot

  BotCredentialsStored:
    Type: AWS::SecretsManager::Secret
    Properties:
      Name: !Sub /bot/credentials/${Bot}
      SecretString: !Sub '{"ACCESS_KEY":"${BotCredentials}","SECRET_KEY":"${BotCredentials.SecretAccessKey}"}'
Другие вопросы по тегам