使用自定义 Lambda 函数轮换密钥
Rotating a Secret Using a Custom Lambda Function
如何为轮换密码(Typescript 中的 CDK)编写 lambda,其中密码每小时更改一次。
const templatedSecret = new secretsmanager.Secret(this, 'TemplatedSecret', {
generateSecretString: {
secretStringTemplate: JSON.stringify({ username: 'user' }),
generateStringKey: 'password',
},
});
new iam.User(this, 'OtherUser', {
userName: templatedSecret.secretValueFromJson('username').toString(),
password: templatedSecret.secretValueFromJson('password'),
});
到目前为止我只有这个代码,供参考我有 https://docs.aws.amazon.com/cdk/api/latest/docs/aws-secretsmanager-readme.html#rotating-a-secret
但是我很困惑如何继续并完成我想要的任务
正如您的 link 所述,您需要为您的密钥添加时间表:
const fn = new lambda.Function(...);
const secret = new secretsmanager.Secret(this, 'Secret');
secret.addRotationSchedule('RotationSchedule', {
rotationLambda: fn,
automaticallyAfter: Duration.days(15)
});
根据需要修改持续时间。您还需要创建一个 lambda 函数 (fn) 来处理旋转。它可能是您需要的通用秘密,因此您应该将样本基于此 template.
您需要填写set_secret
和test_secret
方法。 set_secret
在您的服务中设置秘密。如果它是一个数据库,它会调用一个 API 来更新用户的密码。如果您不需要它,请留下一个空的应用程序。 test_secret
测试新秘密是否可操作。一个空的实现也可以。
您还需要为机密管理器添加 lambda 调用权限。像这样:
fn.addPermission('allowInvocation',{
principal: new ServicePrincipal('secretsmanager.amazonaws.com')
})
在 AWS 控制台中,转到 Lambda 配置,向下滚动到基于资源的策略并添加以下权限:
如何为轮换密码(Typescript 中的 CDK)编写 lambda,其中密码每小时更改一次。
const templatedSecret = new secretsmanager.Secret(this, 'TemplatedSecret', {
generateSecretString: {
secretStringTemplate: JSON.stringify({ username: 'user' }),
generateStringKey: 'password',
},
});
new iam.User(this, 'OtherUser', {
userName: templatedSecret.secretValueFromJson('username').toString(),
password: templatedSecret.secretValueFromJson('password'),
});
到目前为止我只有这个代码,供参考我有 https://docs.aws.amazon.com/cdk/api/latest/docs/aws-secretsmanager-readme.html#rotating-a-secret 但是我很困惑如何继续并完成我想要的任务
正如您的 link 所述,您需要为您的密钥添加时间表:
const fn = new lambda.Function(...);
const secret = new secretsmanager.Secret(this, 'Secret');
secret.addRotationSchedule('RotationSchedule', {
rotationLambda: fn,
automaticallyAfter: Duration.days(15)
});
根据需要修改持续时间。您还需要创建一个 lambda 函数 (fn) 来处理旋转。它可能是您需要的通用秘密,因此您应该将样本基于此 template.
您需要填写set_secret
和test_secret
方法。 set_secret
在您的服务中设置秘密。如果它是一个数据库,它会调用一个 API 来更新用户的密码。如果您不需要它,请留下一个空的应用程序。 test_secret
测试新秘密是否可操作。一个空的实现也可以。
您还需要为机密管理器添加 lambda 调用权限。像这样:
fn.addPermission('allowInvocation',{
principal: new ServicePrincipal('secretsmanager.amazonaws.com')
})
在 AWS 控制台中,转到 Lambda 配置,向下滚动到基于资源的策略并添加以下权限: