通过CloudFormation声明IAM访问密钥资源

时间:2016-11-29 12:16:18

标签: amazon-cloudformation access-keys

我在模板中使用访问密钥创建了一个用户:

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

我需要在模板的输出中获取访问密钥ID和密钥。怎么做 ? 谢谢

2 个答案:

答案 0 :(得分:6)

CloudFormation 的 Outputs documentation 状态...

<块引用>

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}"}'

答案 1 :(得分:4)

对于AWS :: IAM :: AccessKey资源,访问密钥ID和密钥可用作return values

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