SecretsManagerを利用している際に、各サービスでマネージドなローテーションキーを提供していることを確認しました。
今回はこのシークレット情報を変更できるのか検証してみました。
マネージドローテーションとは?
RDS作成/変更時にRDSのコンソール上で設定可能なSecretsManagerになります。
特徴としては、ローテーション用の間数が不要であり、SecretsManagerの値が以下画像のように「rds!」から始まるものになります。
ローテーション構成はいかのようになります。上記でも記載しましたがローテーション間数へのリンクもないので、間数なしでローテーションできることも大きな特徴になります。
RDS以外のサービスでも、マネージドローテーションキーを提供しているため、詳しくは以下を参考に。
検証前 予想
検証前の予想なのですが、上記ドキュメントを見ても「マスターユーザーパスワード」の記載が多く、更にはCLIでもオプション--rotate-master-user-password
や--manage-master-user-password
などのオプションがあるので、一見するとマスターユーザー以外は設定できないんじゃないかと見られます。
さらにはマネジメントコンソール上でも以下のような内容が記述されているため、おそらくは設定できないものかと。
このシークレットは Amazon RDS (rds) によって作成されました。
このシークレットは Amazon RDS (rds) によって管理されるため、シークレット値を変更することはできません。ただし、シークレットは他の方法で変更できる場合があります。
但し、シークレットを確認するとusernameとpasswordがシークレットキーとして置いているのでここのキー値だけを見ているのなら、カスタムユーザー値に書き換えればワンチャンいけるんじゃないかという予想です。
検証
以下のリンクに則ってDBユーザーnew_master_user1を作成します。
MariaDB [(none)]> CREATE USER 'new_master_user1'@'%' IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'new_master_user1'@'%' WITH GRANT OPTION;
その後、以下のように「rds!」から始まるシークレットに先ほど作成したユーザー情報に記載を変更しました。
保存ボタンを押下すると以下のようにエラー。どうやら手動での変更は受け付けてないそうです。
そのため、カスタムユーザーのシークレット情報のローテーションを設定したいというのなら、従来のようにSecretsManagerから作成してローテする必要があるかと。。
終わりに
今回は短いですが、RDS上で指定しているユーザーでのみ、マネージドローテーションは提供できない。更には別ユーザーに変更できないと言ったことがわかりました。
色々手を動かしてみて初めてわかることもある。。