如何在AWS Datapipeline中的Python脚本中提供Redshift数据库密码?

时间:2017-02-19 17:39:09

标签: python amazon-web-services amazon-redshift amazon-data-pipeline

我正在使用Redshift并且必须编写一些自定义脚本来生成报告。我正在使用AWS datapipeline CustomShellActivity来运行我的自定义逻辑。我正在使用python和boto3。我想知道什么是最安全的方式,事实上,最好的做法是在python脚本中提供数据库密码。我确信在脚本中硬编码密码不是好习惯。我还有什么其他选择或应该探索哪些?

2 个答案:

答案 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'