Объявление ресурса ключа доступа 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}"}'