我找到了这个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调用此功能的权限?
有点困惑,我整整一天都在忙于整个凭证轮换,任何建议都将不胜感激。
答案 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的名称。