【发布时间】:2021-04-02 00:39:32
【问题描述】:
我想将一个 Python3 包从一个私有 Github 存储库安装到一个 AWS EMR Spark 集群上。
我知道如何通过硬编码凭据来以肮脏的方式执行此操作,但是推荐的安全执行此操作的最佳实践是什么?我不想在引导脚本中存储凭据...
提前致谢。
【问题讨论】:
标签: amazon-web-services github pip amazon-emr
我想将一个 Python3 包从一个私有 Github 存储库安装到一个 AWS EMR Spark 集群上。
我知道如何通过硬编码凭据来以肮脏的方式执行此操作,但是推荐的安全执行此操作的最佳实践是什么?我不想在引导脚本中存储凭据...
提前致谢。
【问题讨论】:
标签: amazon-web-services github pip amazon-emr
警告:我没有使用过自定义 EMR 引导脚本,但我认为它们与常规用户数据脚本没有太大区别。
有一些选择:
my/git/credentials 之类的名称存储您的凭据,甚至可以使用密钥管理服务对其进行加密。然后,在您的引导脚本中,您可以使用 AWS CLI 请求凭证并使用它们连接到私有 git 存储库。这要求集群的实例角色有权访问该参数(以及 KMS-Key,如果您已加密该值)我个人会从选项 1 开始,它会更便宜。如果您有特定的审计/监管要求,我会考虑选项 2 - 它稍微复杂一些。
【讨论】:
感谢 Maurice,我按照他的选项 #2 成功实施了一个安全流程。
在 github 上使用读取凭据创建访问令牌。
将其存储在 AWS Secrets Manager 中。就我而言,我将这个秘密命名为“github-read-access”
将访问此密钥的权限授予要查询它的用户,或者在引导 EMR 脚本的情况下,授予 EMR 角色访问权限。
使用 aws CLI,我将令牌存储为环境变量,并使用以下命令安装包:
export GITHUB_TOKEN=`aws secretsmanager get-secret-value --secret-id github-read-access |grep SecretString|cut -d ":" -f 3|cut -d '"' -f 2 |cut -d '\' -f1`
sudo pip3 install git+https://${GITHUB_TOKEN}@github.com/<USER_NAME>/<REPO_NAME>.git
【讨论】: