【问题标题】:How to provide Redshift Database Password in Python Script in AWS Datapipeline?如何在 AWS Datapipeline 中的 Python 脚本中提供 Redshift 数据库密码?
【发布时间】:2017-02-19 17:39:09
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    一个非常标准的方法是在安全的 S3 存储桶中 store credentials 并使用具有安全存储桶访问权限的 IAM 角色下载它们作为部署/启动过程的一部分。对于 lambda 或 datapipeline 等有限的运行时情况,您可以在启动时从 S3 下载到 memory buffer using boto.Key.get_contents_as_string() 中,解析文件并设置您的凭据。

    为了提高安全性,您可以合并KMS secret management。这是结合了两者的an example

    【讨论】:

      【解决方案2】:

      我通常将它们存储为环境变量。我不确定 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'
      

      【讨论】:

      • 可能不是一个好主意,因为默认情况下访问服务器会授予对 AWS 凭证的访问权限。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 2021-07-19
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 2016-03-13
      • 2015-09-21
      相关资源
      最近更新 更多