【问题标题】:How to manage password that is used by AWS Kinesis Firehose to write data to a Redshift cluster如何管理 AWS Kinesis Firehose 用于将数据写入 Redshift 集群的密码
【发布时间】:2018-01-19 15:18:36
【问题描述】:
我正在尝试为将数据写入 Redshift 集群的 Kinesis Firehoses 编写 AWS Cloud Formation 模板。
在RedshiftDestinationConfiguration 中,用户名和密码标记为必填项。
但是,由于我们会将模板签入到 Git,因此我们希望避免将密码写入将提交到 repo 的文件中。
模板中未定义目标 Redshift 集群,因此模板中将包含 JDBC URL、用户名和密码。我相信通过这些信息,任何人都可以看到文件可以连接到集群。
有没有人知道在这种情况下管理密码的更好方法?
【问题讨论】:
标签:
amazon-web-services
passwords
amazon-redshift
amazon-cloudformation
amazon-kinesis-firehose
【解决方案1】:
您可以使用的一种模式是将密码存储在 CloudFormation 参数文件中,并使用 AWS KMS 加密该文件。您将未加密的文件添加到您的.gitignore,并将加密的二进制文件添加到您的 git 存储库。您还需要向 IAM 添加可用于此目的的加密密钥。
结果是任何没有 IAM 权限使用该加密密钥的人都无法读取加密文件。
下面是一个示例,说明如何使用 KMS 通过 AWS CLI 加密和解密文件。
加密:
aws kms encrypt \
--key-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--plaintext file://params.json \
--query CiphertextBlob \
--output text | base64 --decode > params.json.encrypted
解密:
aws kms decrypt \
--ciphertext-blob fileb://params.json.encrypted \
--query Plaintext \
--output text | base64 --decode > params.json
这附带一个警告,您需要记住加密一个新参数文件并将其提交给 git,因为对未加密文件的编辑不会显示在您的 git diff 中。当您从 git 存储库中提取更改时,您还需要记住解密 - 您可以将其自动化以使其更容易。