我正在使用Redshift并且必须编写一些自定义脚本来生成报告。我正在使用AWS datapipeline CustomShellActivity来运行我的自定义逻辑。我正在使用python和boto3。我想知道什么是最安全的方式,事实上,最好的做法是在python脚本中提供数据库密码。我确信在脚本中硬编码密码不是好习惯。我还有什么其他选择或应该探索哪些?
答案 0 :(得分:1)
一个非常标准的方法是在安全的S3存储桶中store credentials,并使用可访问安全存储桶的IAM角色将其作为部署/启动过程的一部分下载。对于有限的运行时情况,例如lambda或datapipeline,您可以在启动时从S3下载到memory buffer using boto.Key.get_contents_as_string()
,解析文件并设置您的凭据。
为了提高安全性,您可以合并KMS secret management。这里结合了an example。
答案 1 :(得分:0)
我通常将它们存储为环境变量。我不确定AWS数据管道部署,但在标准Linux机箱(EC2)上,您可以这样做:
# ~/.profile or /etc/profile
export MY_VAR="my_value"
然后你可以用Python访问它们:
# python script
import os
my_var_value = os.environ['MY_VAR'] if 'MY_VAR' in os.environ else 'default'