2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的に思う、RDSを使う場合に便利で安全なDBパスワード管理方法とDB接続方法

Last updated at Posted at 2024-10-09

結論

データベースのパスワードはSecrets ManagerかSSM パラメータストアで管理するとパスワード覚えたり、メモしたりする必要がなく安全に管理でき、mysqlクライアントを使った接続が簡単になります。

背景

パスワード管理には

  • 人間が記憶して覚える
  • 個人でメモをとる
  • Redmineなどプロジェクト管理ソフトに記載をする
  • パスワードリマインダーに覚えさせる

などなど、いくつかの手法がありますが、これらの方法は個人の管理依存している場合は引き継ぎが発生した場合に問題が起きやすかったり、AWS外に保存するのはセキュリティ上、推奨されません。

AWS上でパスワード保存する方法

  • Secrets Managerに保存する
  • SSM パラメータストアに保存する

どちらにもメリット・デメリットがありますが、どちらでもパスワード管理することは可能です。

Secrets Managerの方が高機能で、パスワードだけでなくIDやエンドポイントもの情報も含めて管理しており、パスワードローテーション機能などもあります。
しかしSSM パラメータストアより利用料金が高く、機密情報を取得した際の処理が少し面倒です。

対して、SSM パラメータストアはシンプルです。keyと指定された文字列やリストを1対1で保存します。
指定日時でのパラメータの削除などはありますが、シークレット情報を保管するのに特化したサービスではないので、パスワードローテーション機能などはなくSecrets Managerと比較するとシンプルな分できることが少ないです。

MySQLクライアントで便利に使う方法

※ここでは事前にSecrets Manager や SSM パラメータストアの設定は終わっているものとして扱います。

Secrets Manager の場合

mysql --host {RDSのエンドポイント} -u {ユーザ名} -p${aws secretsmanager get-secret-value --secret-id {Secrets Managerの名前} --query 'SecretString' --output text | jq ".password" -r}

SSM パラメータストアの場合

mysql --host {RDSのエンドポイント} -u {ユーザ名} -p${aws ssm get-parameter --name {パラメータストアのキー} --with-decryption --query 'Parameter.Value' --output text}

このようにパスワードをAWSサービス上から取得してくるようにしておくと、ドキュメントに RDS へのアクセス方法などをまとめる時もパスワードをドキュメントに直書きせず済み、ドキュメントを読んでいる方からしてもコピペでアクセスできるので、手軽にアクセスできます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?