4
2

More than 1 year has passed since last update.

AWS Secrets Manager を使ってRDSへ接続してみる!

Posted at

勉強前イメージ

これ で勉強したからやってみる。
パスワードとかを格納したらいいのかね。

まず AWS Secrets Manager とは

サービス、環境、アプリケーションに接続するためのパスワードなどの機密情報を管理するためのサービスです。
詳細は こちら で見てください

さっそくやってみる

構成

EC2を立てて、RDSへ接続する簡単な構成。
接続情報はSecrets Managerを使用するって感じで設定していきたいと思います

12022-02-19 # AWS Secrets Manager を使ってRDSへ接続してみる! -.png

EC2 instanceを作成

いつものことなので詳細は省きますが、
こちら を参考にしていい感じにEC2 instance作ってください。

以下のように適当にインスタンス作りました。
aws configure コマンドで設定も終わらせます。
jqコマンドが必要なので、今のうちに入れておいてください

101インスタンス _ EC2 Management Console - Google Chrome 20.png

RDSを作成

こちらも適当にRDSを作ります。
全然違う記事なのですが作り方は一緒なので、 こちら を参考にしてRDSを作ってみてください。

以下のようにRDS(mysql)を作りました。
今回はパスワード認証にしています。

1RDS Management Console - Google Chrome 2022-02-19.png

EC2からRDSに接続できました。

[root@ip-XX-XX-XX-XX ~]# mysql -u XXXXXXXXXX -p -h XXXXXXXXXXXXXXXXXXXX.ap-northeast-1.rds.amazonaws.com
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 8.0.27 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)]> 

データも適当に入れました。

MySQL [id_user]> select * from id_user.user ;
+------+------+
| id   | name |
+------+------+
|    1 | sum  |
|    2 | jun  |
+------+------+
2 rows in set (0.00 sec)

AWS Secrets Manager の登録

  • AWS Secrets Managerへ行きます。

1Secrets Manager - Google Chrome 2022-02-19 12.11.2.png

  • シークレットを追加

設定を選択していきます。

・ シークレットのタイプ : Amazon RDS データベースの認証情報
・ ユーザ名 : RDSへの接続の時のユーザ
・ パスワード : RDSへの接続の時のパスワード
・ 暗号化キー : DefaultEcvryptionKey

102Secrets Manager - Google Chrome 2022-02-19 13.31.0.png

・ データベース
・ database-1 を選択(今回作ったデータベースが表示される)

3Secrets Manager - Google Chrome 2022-02-19 12.45.1.png

・ シークレットの名前 : rds_connection
・ 説明 : RDS connection

4Secrets Manager - Google Chrome 2022-02-19 12.48.3.png

・ 自動ローテーションを設定する : しない
・ 今回は設定して見るだけなので、ローテーションはなし

5Secrets Manager - Google Chrome 2022-02-19 12.49.1.png

  • 作成できました

一旦作ってみました。

6Secrets Manager - Google Chrome 2022-02-19 12.50.2.png

  • EC2からシークレットマネージャーにアクセスしてみる

aws secretsmanager get-secret-value --secret-id [シークレットの名前] でEC2からアクセスすることができます。
今回のシークレットの名前は rds_connection なので、
aws secretsmanager get-secret-value --secret-id rds_connection になります。
出力結果は以下になります。

[root@ip-XX-XX-XX-XX ~]# aws secretsmanager get-secret-value --secret-id rds_connection
{
    "Name": "rds_connection", 
    "VersionId": "XXXXXXXXXXXXXXXXXXXXXXXXXXX", 
    "SecretString": "{\"username\":\"XXXXXX\",\"password\":\"XXXXXXXXXXXXXXXXXXX\",\"engine\":\"mysql\",\"host\":\"XXXXXXXXXXXXXXXXXXXXXXXXap-northeast-1.rds.amazonaws.com\",\"port\":3306,\"dbInstanceIdentifier\":\"database-1\"}", 
    "VersionStages": [
        "AWSCURRENT"
    ], 
    "CreatedDate": XXXXXXXXXXXXXXXX, 
    "ARN": "arn:aws:secretsmanager:ap-northeast-1:XXXXXXXXXXXXXXXXXX:secret:XXXXXXXXXXXXXXXXXXXX"
}

整形したのが以下になります。

[root@ip-172-31-10-19 ~]# aws secretsmanager get-secret-value --secret-id rds_connection | jq .SecretString | jq fromjson
{
  "username": "XXXXXXX",
  "password": "XXXXXXXXXXXXXXXXXXx",
  "engine": "mysql",
  "host": "XXXXXXXXXXXXXXXXXXXXXXXXX.ap-northeast-1.rds.amazonaws.com",
  "port": 3306,
  "dbInstanceIdentifier": "database-1"
}
  • 各パラメータを変数に格納

上記の出力を変数に入れます。

secret=$(aws secretsmanager get-secret-value --secret-id rds_connection | jq .SecretString | jq fromjson)
user=$(echo $secret | jq -r .username)
password=$(echo $secret | jq -r .password)
endpoint=$(echo $secret | jq -r .host)
port=$(echo $secret | jq -r .port)
  • 変数を使用してアクセス

以下のように接続できました!

mysql -h $endpoint -u $user -P $port -p$password -e "select * from id_user.user;"
+------+------+
| id   | name |
+------+------+
|    1 | sum  |
|    2 | jun  |
+------+------+

勉強後イメージ

ユーザとかパスワードも勝手にとってくるイメージやったけど、手入力なんやw
勘違いしてた
でもこれはユーザ名とか変更する際も楽そうだね。

参考

4
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
4
2