用 secret manager 来托管密钥和设置密钥轮换

用 secret manager 来托管密钥和设置密钥轮换

amazon secret manage 是一项用于密码托管的服务,通过这项服务用户可以将自己 rds 或者其他 amazon 服务的密码远程托管在 amazon 上,以访问 api 的形式获取密码,避免了在代码中明文暴露密码的风险。除此外,用户也可以通过 secret manage 来设置密码轮换,以这种方式自动轮换托管的密码,进一步降低密码泄漏的风险。
用 secret manager 来托管密钥和设置密钥轮换 2023-03-13 22:14:08
用 secret manager 来托管密钥和设置密钥轮换 0
用 secret manager 来托管密钥和设置密钥轮换
1.用 secret manager 来托管密钥 1.1 启动 rds 数据库用于测试 通过下面的教程创建 rds 数据时,我们需要记住自己创建数据库时的用户名和密码 [<https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html>](https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html?trk=cndc-detail) 在本次教程中,我们创建的数据库配置如下: ![image.png](https://dev-media.amazoncloud.cn/56ff7db95df3429ba281997243207257_image.png "image.png") 1.2 通过 secrete manager 来创建密码托管 通过创建托管后我们可以在程序中以 api 的形式来获取密码,避免了密钥的暴露。 **1.2.1 选择 secret Manager 服务** ![image.png](https://dev-media.amazoncloud.cn/1fc07436e95f469b8953ba23d5fd39b7_image.png "image.png") 进入到Secrets Manager 服务后通过点击下面箭头所的按钮,创建新的密钥,进入到secret manger的配置界面 ![image.png](https://dev-media.amazoncloud.cn/ddc27fec58834734a8799d44b0ad80e7_image.png "image.png") **1.2.2 对 secret Manager 进行配置** ![image.png](https://dev-media.amazoncloud.cn/c573f52c381849b4b2179609bfba3a15_image.png "image.png") 如上面箭头1所示,选择 rds 数据库(可以根据自己的需求选择不同的数据库),在箭头2处,填写自己在步骤1.1中创建数据库时的用户名和密码。在箭头3处选择 DefaultEncryptionkey,然后在箭头4处选择在步骤1.1中创建的数据库,点击下一步。 ![image.png](https://dev-media.amazoncloud.cn/9f086f6302ab45d9be87394852a1ed48_image.png "image.png") 在这一步需要填写密钥的名称,这是必须的一步,描述和标签均是可选项。在填写完成后点击**下一个**,进入下一页 ![image.png](https://dev-media.amazoncloud.cn/542b88b513724c9191cfac36a433f0c4_image.png "image.png") 在这一步中,我们主要是测试的是通过 secret Manager 的 api 来获取密钥,所以在这一步我们选择禁用自动轮换,然后点击**下一个** 在最后一步的审核中如果检查没有问题,可以点击**存储**来创建密码托管,就可以看到生成的托管的密钥: ![image.png](https://dev-media.amazoncloud.cn/f8329ab834dd4f798a214413ac0f802e_image.png "image.png") 点击上面的箭头处,就可以查看密钥的详细信息,如下所示: ![image.png](https://dev-media.amazoncloud.cn/26e20a595ade43dab50d116eb418d2a2_image.png "image.png") 1.3 通过s ecret manager api 来获取密钥 在这一步,我们将会通过调用 api 的方法来获取数据库的密钥,在本教程中使用的是 python,其他语言可以参考 boto3 的开发文档 [<https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-samples.html#prerequisites>](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-samples.html#prerequisites?trk=cndc-detail) ![image.png](https://dev-media.amazoncloud.cn/21e85ec226b24d738b264fb425728877_image.png "image.png") 如上图所示,我们通过在代码中以访问 secret manager api 的形式来获取密钥,避免了在代码中明文暴露密钥的风险。 2.轮换在 secret manager 托管的密码 2.1 配置数据库: 在这一步骤中我们将建立用于测试密码轮换的数据库 如下所示,选择 rds 服务 ![image.png](https://dev-media.amazoncloud.cn/c29fcb6306e74e4f823b2cec123ac621_image.png "image.png") 然后点击创建数据库,如下图所示: ![image.png](https://dev-media.amazoncloud.cn/ba55eab5175f4b5fa2a990f1e534683b_image.png "image.png") 在配置数据库时可以根据自己的需求来选择需要的数据库引擎和版本,创建方法请选择标准创建 ![image.png](https://dev-media.amazoncloud.cn/78dc4b57c5f248b7a2e21e9a091f2d77_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/178a7a01c5d546378201fe17f65effb2_image.png "image.png") 如上图所示,我们需要分别设置**数据库标示符,主用户名,主密码**,在本文档中,我们的用户名是 dminuser,密码是 test1234。 ![image.png](https://dev-media.amazoncloud.cn/756c6d2d276a42e3ad85283371b759d1_image.png "image.png") 如上图所示,**我们需要在其他连接配置选项中,将数据库设置为公开访问**,然后点击创建数据库即可。 然后等待几分钟,数据库即可创建成功2.2 创建密码托管 2.2.1 在 amazon 服务控制台选择,secret manager 的服务,如下面所示: ![image.png](https://dev-media.amazoncloud.cn/21a1209223744af0963f1069015b6dec_image.png "image.png") 然后会进入到下面的页面: ![image.png](https://dev-media.amazoncloud.cn/275290ee63714a409cd8687b54c09eba_image.png "image.png") 如上面箭头所示,我们点击 **创建新的密钥**,进入到下面的页面 ![image.png](https://dev-media.amazoncloud.cn/53843c07eab44dba89d91b59cce1b9ad_image.png "image.png") 如上图所示,我们需要进行如下操作: - 按照上面的箭头1所示,选择需要轮换密码的数据库类型, - 在箭头2处输入我们创建的数据库时的用户名和密码 - 在箭头3处选择 defaultEncryptionkey, - 在箭头4处点击复选框。 然后点击下一步,进入到如下界面 ![image.png](https://dev-media.amazoncloud.cn/2ffa405069fe4b49a709f3c4690664b9_image.png "image.png") 如上箭头1,所示输入你密钥的名称,然后点击**下一步** 2.3 为托管的的密码设置轮换 ![image.png](https://dev-media.amazoncloud.cn/a98789872e9d4931a0adbe8701aa1628_image.png "image.png") 如上面所示,我们需要在这一页面进行如下操作: - 在箭头1处点击启用自动轮换的复选框 - 在箭头2处点击创建新的 lambda 函数进行轮换 - 在箭头3处输入你新建的 lambda 的名称 - 在箭头4处点击使用此密钥的复选框 完成上面的步骤后进入到下一步 ![image.png](https://dev-media.amazoncloud.cn/c08744db309b436fb3e4d2ed043d9b71_image.png "image.png") 点击 **存储** 即可以开启自动轮换的密码托管 2.4 验证轮换是否成功 ![image.png](https://dev-media.amazoncloud.cn/a5a6c62532a0460894da2ad1ba167300_image.png "image.png") 点击上图所示的新建的密钥托管,进入该密钥的详细信息界面 ![image.png](https://dev-media.amazoncloud.cn/f5c205ac99974a549d99de38f8e64066_image.png "image.png") 点击密钥值后就可以查看自己设置的密码是否成功轮换 ![image.png](https://dev-media.amazoncloud.cn/7d63d8c83649448882cc495bb1b47b4c_image.png "image.png") 由上图可知,我们的密码由test1234变成了随机生成的密码。除此外也可以通过单击下图所示的 **立即轮换密钥** 来更换密钥,进一步验证密钥轮换是否成功 ![image.png](https://dev-media.amazoncloud.cn/4587f4b1f6c04bd09805a41c98a2fdb9_image.png "image.png")