带有SecretManager的AWS Glue用于数据库凭证

时间:2018-11-14 13:08:05

标签: python amazon-web-services aws-glue secret-manager

我有一个AWS Glue Python脚本,用于连接到Aurora Mysql数据库。为此,我尝试使用AWS SecretManager,以便不必在脚本中对数据库凭证进行硬编码。

虽然我能够成功使用secretmanager并在我的AWS Glue脚本中使用它来连接到RDS,但我看到凭据不是秘密的,并且如果我打印了一个保存数据库凭据的变量的内容,我就能在cloudwatch日志中查看密码,用户名等。

请在此处找到代码段:

# Getting DB credentials from Secrets Manager
client = boto3.client("secretsmanager", region_name="us-west-2")

get_secret_value_response = client.get_secret_value(
        SecretId="RDS_Dev_Cluster"
)

secret = get_secret_value_response['SecretString']
secret = json.loads(secret)

db_username = secret.get('username')
db_password = secret.get('password')
db_url = secret.get('host')

print db_username
print db_password
print db_url

有什么方法可以加密用户名/密码凭证。我们可以使用AWS KMS吗?我没有在其中尝试过KMS,但想在使用其他AWS服务之前获得建议。如果没有,除了secretmanager之外,我们如何掩盖数据库凭据。

谢谢

1 个答案:

答案 0 :(得分:0)

AWS文档指出,AWS Secret Manager始终存储加密的密钥,它通常会透明地处理解密。当您指定AWS Secret Manager应使用的KMS密钥时。 transparently decrypts and returns them to you in plaintext

因此,基本上,您看到的解密结果只是减去了使KMS API解密所需的调用。