有关为Aurora MySQL RDS数据库创建凭据轮换Lambda函数的问题

时间:2020-01-29 15:47:46

标签: amazon-web-services aws-lambda rotation credentials aws-secrets-manager

我找到了这个rotation function template,我将修改此模板以创建自己的旋转功能,并告诉Secrets Manager使用它执行旋转。

我的问题是我应该更改模板的哪一部分,在模板中不是很明确,例如第47-49行,我应该用我的Secret ARN替换SecretId吗?

arn = event['SecretId']
token = event['ClientRequestToken']
step = event['Step']

另一个例子:第57行

endpoint_url=os.environ['SECRETS_MANAGER_ENDPOINT']

'SECRETS_MANAGER_ENDPOINT'应该使用什么值,也许是'https://secretsmanager.region.amazonaws.com'

此外,第205-206行

This is where the lambda will validate the user's permissions. 
Uncomment/modify the below lines to
# tailor these validations to your needs

我到底需要在什么地方添加什么才能授予Secrets Manager调用此功能的权限?

有点困惑,我整整一天都在忙于整个凭证轮换,任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:3)

您无需对加载事件或环境变量的逻辑进行任何更改。

这样想。轮换发生时,秘密管理员将调用您的lambda。该调用具有与之关联的事件,该事件包含旋转步骤,要旋转的机密的SecretId,ClientRequestToken等

您不需要修改该逻辑。

关于lambda,您需要为Secrets Manager端点-https://docs.aws.amazon.com/lambda/latest/dg//go-programming-model-env-variables.html

设置环境变量

答案 1 :(得分:2)

正如@committedandroider所说,您无需修改​​47-49,因为它由Secrets Manager旋转引擎传递给Lambda调用,并且在创建函数时将第57行设置为Lambda函数的环境变量(是的,您应该将其设置为https://secretsmanager.REGION.amazonaws.com)。

Secrets Manager旋转引擎将每次以不同的步长值(createSecret,setSecret,testSecret和finishSecret)调用lambda四次。 205-206行是testSecret步骤的一部分,用于通过建立与DB的连接(使用新凭据)并运行简单查询来测试新数据库凭据。该评论告诉您,您可以根据需要在其中添加更多支票(例如,从您真正关心的表中进行选择)。

要赋予Secrets Manager permissions to run the Lambda,您必须向Lambda函数添加权限,以授予服务主体secretsmanager.amazonaws.com lambda:InvokeFunction权限。例如:

aws --region REGION lambda add-permission --function-name LAMBDANAME --statement-id "Rotation" --action "lambda:InvokeFunction" --principal secretsmanager.amazonaws.com

REGION是您使用的AWS区域,而LAMBDANAME是您给lambda的名称。