[アップデート] Amazon RDSがAWS Secrets Managerとの統合をサポートするようになりました

2022.12.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。大阪オフィスの林です。

Amazon RDSがAWS Secrets Managerとの統合をサポートするようになり、RDS作成時にRDS側でマスターユーザーとマスターユーザーパスワードをSecrets Managerに登録してくれるようになりました。
これまでRDSのパスワード管理に独自のSecrets ManagerやLambdaを利用しているケースがありましたが、個別の実装が不要になる且つマネージメントコンソールからポチポチで実装できるという嬉しみがあります。

やってみた

データベースエンジンは何でもよいのですが、今回の検証ではRDS for MySQLを指定します。

「認証情報の設定」に「Manage master credentials in AWS Secrets Manager」という項目が増えているのでチェックを入れておきます。
その他の設定は今回の検証に関係ないのでデフォルトとしてRDSを作成していきます。

RDS作成後、Secrets Managerを覗いてみるとシークレットが作成されていました。

マスターユーザーとパスワードがシークレットのキーとして登録されています。

デフォルトだと「7日」のローテーションが設定されていました。

それではいちおう接続確認だけしておきたいと思います。

# Secrets Managerからシークレットの値を変数に入れます。
$ user=$(aws secretsmanager get-secret-value --secret-id rds\!db-xxxxxx-xxxx-xxxx-xxxx-xxxxx | jq .SecretString | jq fromjson | jq -r .username)
$ password=$(aws secretsmanager get-secret-value --secret-id rds\!db-xxxxxx-xxxx-xxxx-xxxx-xxxxx | jq .SecretString | jq fromjson | jq -r .password)

# MySQLのエンドポイントに接続します。
$ mysql -h database-1.xxxxx.ap-northeast-1.rds.amazonaws.com -u $user -P 3306 -p$password
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 8.0.28 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

Secrets Managerのシークレットを取得してRDSのエンドポイントに接続できました!

RDSを削除すると一緒にSecrets Managerのシークレットも消えてくれるので不要なリソースや設定が残り続けないというのもうれしいポイントですね。

まとめ

これまで個別実装が必要だったRDSのマスターユーザーとパスワードの管理が非常に簡単に実装できるようになりました。
この記事がどなたかの参考になりましたら幸いです。

以上、大阪オフィスの林がお送りしました!