RDSデータベースを作成する際、MasterUserのパスワードを設定しますよね。
このパスワードの管理方法としては、
- AWS Secrets Managerで管理する「Managed in AWS Secrets Manager」か、
- 自身で管理する「Self managed」
のいずれかが選択できます。
AWS Secrets Managerを使うと「most secure」と表示され、非常に安全そうに見えますが、具体的な使い方がわからず、結局「Self managed」を選んでしまう方も多いのではないでしょうか。
そこで今回は、RHEL EC2インスタンスからAWS Secrets Managerを活用して、Aurora for PostgreSQL 16データベースにセキュアに接続する方法をご紹介します。
Secrets Managerを使うことで、より安全にデータベースの接続情報を管理できるようになるため、セキュリティを強化したい方はぜひ参考にしてみてください。
Secrets ManagerでDBに接続してみる
■前提
今回の手順の前提は以下の通りです。
- EC2インスタンスとAuroraデータベースが作成済みであること。
- Auroraデータベースの資格情報がSecrets Managerで管理され、デフォルトの暗号化キー(aws/secretsmanager)が選択されていること。
- EC2インスタンスのIAMロールに、Secrets Managerからシークレットを取得するためのsecretsmanager:GetSecretValue権限が付与されていること。
↓RDSデータベース作成画面で、Secrets Managerを選択
■AWS CLIのインストール
AWS CLIをインストールして、EC2からSecrets Managerにアクセスできるようにします。
curlコマンドを使ってAWS CLIインストーラをダウンロードし、解凍してインストールしていきましょう。
以下のコマンドを実行します。
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo dnf install -y unzip
unzip awscliv2.zip
sudo ./aws/install -i /usr/local/aws-cli/v2/2.17.40 -b /usr/bin
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 63.6M 100 63.6M 0 0 295M 0 --:--:-- --:--:-- --:--:-- 294M
[ec2-user@ip-10-0-1-225 ~]$ sudo dnf install -y unzip
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:26:26 ago on Sat 09 Nov 2024 06:43:29 AM UTC.
Dependencies resolved.
======================================================================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================================================================
Installing:
unzip x86_64 6.0-56.el9 rhel-9-baseos-rhui-rpms 186 k
Transaction Summary
======================================================================================================================================================================================================
Install 1 Package
Total download size: 186 k
Installed size: 392 k
Downloading Packages:
unzip-6.0-56.el9.x86_64.rpm 4.8 MB/s | 186 kB 00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 3.0 MB/s | 186 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : unzip-6.0-56.el9.x86_64 1/1
Running scriptlet: unzip-6.0-56.el9.x86_64 1/1
Verifying : unzip-6.0-56.el9.x86_64 1/1
Installed products updated.
Installed:
unzip-6.0-56.el9.x86_64
Complete!
[ec2-user@ip-10-0-1-225 ~]$ unzip awscliv2.zip
<中略>
inflating: aws/dist/docutils/writers/latex2e/xelatex.tex
inflating: aws/dist/docutils/writers/latex2e/titlepage.tex
inflating: aws/dist/docutils/writers/odf_odt/styles.odt
inflating: aws/dist/docutils/writers/pep_html/pep.css
inflating: aws/dist/docutils/writers/pep_html/template.txt
[ec2-user@ip-10-0-1-225 ~]$ sudo ./aws/install -i /usr/local/aws-cli/v2/2.17.40 -b /usr/bin
You can now run: /usr/bin/aws --version
AWS CLIのインストールは以上です。
■PostgreSQLクライアントのインストール
Aurora for PostgreSQLに接続するためのPostgreSQLクライアントをインストールしていきます。
PostgreSQL 16のモジュール情報を確認し、有効化した後、psqlクライアントをインストールします。
インストール後、バージョン確認を行い、psql
が使用可能であることを確認しましょう。
以下のコマンドを実行しましょう。
sudo dnf module info postgresql:16
sudo dnf module enable postgresql:16
sudo dnf module list postgresql
sudo dnf install -y postgresql
psql --version
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ sudo dnf module info postgresql:16
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:00:45 ago on Sat 09 Nov 2024 07:11:12 AM UTC.
Name : postgresql
Stream : 16
Version : 9040020240108131224
Context : rhel9
Architecture : x86_64
Profiles : client, server [d]
Default profiles : server
Repo : rhel-9-appstream-rhui-rpms
Summary : PostgreSQL server and client module
Description : PostgreSQL is an advanced Object-Relational database management system (DBMS). The postgresql-server package contains the programs needed to create and run a PostgreSQL server, which will in turn allow you to create and maintain PostgreSQL databases. The base postgresql package contains the client programs that you'll need to access a PostgreSQL DBMS server.
Requires : platform:[el9]
Artifacts : pg_repack-0:1.4.8-1.module+el9.4.0+20427+07482b8c.src
: pg_repack-0:1.4.8-1.module+el9.4.0+20427+07482b8c.x86_64
: pg_repack-debuginfo-0:1.4.8-1.module+el9.4.0+20427+07482b8c.x86_64
: pg_repack-debugsource-0:1.4.8-1.module+el9.4.0+20427+07482b8c.x86_64
: pgaudit-0:16.0-1.module+el9.4.0+20427+07482b8c.src
: pgaudit-0:16.0-1.module+el9.4.0+20427+07482b8c.x86_64
: pgaudit-debuginfo-0:16.0-1.module+el9.4.0+20427+07482b8c.x86_64
: pgaudit-debugsource-0:16.0-1.module+el9.4.0+20427+07482b8c.x86_64
: postgres-decoderbufs-0:2.4.0-1.Final.module+el9.4.0+20427+07482b8c.src
: postgres-decoderbufs-0:2.4.0-1.Final.module+el9.4.0+20427+07482b8c.x86_64
: postgres-decoderbufs-debuginfo-0:2.4.0-1.Final.module+el9.4.0+20427+07482b8c.x86_64
: postgres-decoderbufs-debugsource-0:2.4.0-1.Final.module+el9.4.0+20427+07482b8c.x86_64
: postgresql-0:16.1-1.module+el9.4.0+21089+0ca8f31a.src
: postgresql-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-contrib-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-contrib-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-debugsource-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-docs-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-docs-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-plperl-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-plperl-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-plpython3-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-plpython3-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-pltcl-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-pltcl-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-private-devel-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-private-libs-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-private-libs-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-server-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-server-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-server-devel-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-server-devel-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-static-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-test-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-test-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-test-rpm-macros-0:16.1-1.module+el9.4.0+21089+0ca8f31a.noarch
: postgresql-upgrade-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-upgrade-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-upgrade-devel-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
: postgresql-upgrade-devel-debuginfo-0:16.1-1.module+el9.4.0+21089+0ca8f31a.x86_64
Name : postgresql
Stream : 16
Version : 9040020240812093225
Context : rhel9
Architecture : x86_64
Profiles : client, server [d]
Default profiles : server
Repo : rhel-9-appstream-rhui-rpms
Summary : PostgreSQL server and client module
Description : PostgreSQL is an advanced Object-Relational database management system (DBMS). The postgresql-server package contains the programs needed to create and run a PostgreSQL server, which will in turn allow you to create and maintain PostgreSQL databases. The base postgresql package contains the client programs that you'll need to access a PostgreSQL DBMS server.
Requires : platform:[el9]
Artifacts : pg_repack-0:1.4.8-1.module+el9.4.0+20427+07482b8c.src
: pg_repack-0:1.4.8-1.module+el9.4.0+20427+07482b8c.x86_64
: pg_repack-debuginfo-0:1.4.8-1.module+el9.4.0+20427+07482b8c.x86_64
: pg_repack-debugsource-0:1.4.8-1.module+el9.4.0+20427+07482b8c.x86_64
: pgaudit-0:16.0-1.module+el9.4.0+20427+07482b8c.src
: pgaudit-0:16.0-1.module+el9.4.0+20427+07482b8c.x86_64
: pgaudit-debuginfo-0:16.0-1.module+el9.4.0+20427+07482b8c.x86_64
: pgaudit-debugsource-0:16.0-1.module+el9.4.0+20427+07482b8c.x86_64
: postgres-decoderbufs-0:2.4.0-1.Final.module+el9.4.0+20427+07482b8c.src
: postgres-decoderbufs-0:2.4.0-1.Final.module+el9.4.0+20427+07482b8c.x86_64
: postgres-decoderbufs-debuginfo-0:2.4.0-1.Final.module+el9.4.0+20427+07482b8c.x86_64
: postgres-decoderbufs-debugsource-0:2.4.0-1.Final.module+el9.4.0+20427+07482b8c.x86_64
: postgresql-0:16.4-1.module+el9.4.0+22207+8466e31f.src
: postgresql-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-contrib-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-contrib-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-debugsource-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-docs-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-docs-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-plperl-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-plperl-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-plpython3-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-plpython3-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-pltcl-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-pltcl-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-private-devel-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-private-libs-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-private-libs-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-server-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-server-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-server-devel-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-server-devel-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-static-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-test-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-test-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-test-rpm-macros-0:16.4-1.module+el9.4.0+22207+8466e31f.noarch
: postgresql-upgrade-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-upgrade-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-upgrade-devel-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
: postgresql-upgrade-devel-debuginfo-0:16.4-1.module+el9.4.0+22207+8466e31f.x86_64
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive
[ec2-user@ip-10-0-1-225 ~]$ sudo dnf module enable postgresql:16
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:01:07 ago on Sat 09 Nov 2024 07:11:12 AM UTC.
Dependencies resolved.
======================================================================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================================================================
Enabling module streams:
postgresql 16
Transaction Summary
======================================================================================================================================================================================================
Is this ok [y/N]: y
Complete!
[ec2-user@ip-10-0-1-225 ~]$ sudo dnf module list postgresql
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:01:52 ago on Sat 09 Nov 2024 07:11:12 AM UTC.
Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs)
Name Stream Profiles Summary
postgresql 15 client, server [d] PostgreSQL server and client module
postgresql 16 [e] client, server [d] PostgreSQL server and client module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[ec2-user@ip-10-0-1-225 ~]$ sudo dnf install -y postgresql
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Last metadata expiration check: 0:02:08 ago on Sat 09 Nov 2024 07:11:12 AM UTC.
Dependencies resolved.
======================================================================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================================================================
Installing:
postgresql x86_64 16.4-1.module+el9.4.0+22207+8466e31f rhel-9-appstream-rhui-rpms 1.9 M
Installing dependencies:
postgresql-private-libs x86_64 16.4-1.module+el9.4.0+22207+8466e31f rhel-9-appstream-rhui-rpms 145 k
Transaction Summary
======================================================================================================================================================================================================
Install 2 Packages
Total download size: 2.0 M
Installed size: 8.0 M
Downloading Packages:
(1/2): postgresql-private-libs-16.4-1.module+el9.4.0+22207+8466e31f.x86_64.rpm 3.1 MB/s | 145 kB 00:00
(2/2): postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64.rpm 23 MB/s | 1.9 MB 00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 19 MB/s | 2.0 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : postgresql-private-libs-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 1/2
Installing : postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 2/2
Running scriptlet: postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 2/2
Verifying : postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 1/2
Verifying : postgresql-private-libs-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 2/2
Installed products updated.
Installed:
postgresql-16.4-1.module+el9.4.0+22207+8466e31f.x86_64 postgresql-private-libs-16.4-1.module+el9.4.0+22207+8466e31f.x86_64
Complete!
[ec2-user@ip-10-0-1-225 ~]$ psql --version
psql (PostgreSQL) 16.4
PostgreSQLクライアントのインストールは以上です。
■Secrets Managerからの資格情報取得と接続
ここでは、Secrets ManagerからAurora for PostgreSQLの接続情報(ユーザー名とパスワード)を取得し、psql
コマンドを使ってデータベースに接続する手順を説明します。
まず、aws secretsmanager get-secret-value
コマンドを実行してSecrets Managerからシークレット情報を取得し、JSON形式のデータから必要な情報を抽出します。
その後、jq
を使用してユーザー名とパスワードを変数に代入し、接続に利用できるようにします。
最後に、環境変数にパスワードを設定し、psqlコマンドでAurora for PostgreSQLに接続する方法を紹介しますね。
以下のコマンドを実行します。SECRETNAME
と HOST
、 DBNAME
を自身の環境に合わせて書き換えましょう。
SECRETNAME=<YOUR SECRET NAME>
SECRET=$(aws secretsmanager get-secret-value --secret-id $SECRETNAME --query 'SecretString' --output text)
USERNAME=$(echo $SECRET | jq -r '.username')
PASSWORD=$(echo $SECRET | jq -r '.password')
HOST=<YOUR DATABASE ENDPONT NAME>
PORT=5432
DBNAME=<YOUR DATABASE NAME>
export PGPASSWORD=$PASSWORD
psql -h $HOST -p $PORT -U $USERNAME -d $DBNAME
- "SECRETNAME": 作成したデータベースの[ Configuration ]タブの中にある[ Master Credentials ARN ]の"rds"以降を記載します。注意点としまして、"!"の前に"\"を付ける必要があります。
- "HOST": 作成したデータベースの[ Connectivity & security ]タブの中にある[ Endpoints ]の[ Endpoint name ]を記載します。
- "DBNAME": 作成したデータベースの[ Configuration ]タブの中にある[ DB name ]を記載します。
まずは、"Secret name"を変数に代入します。
SECRETNAME=rds\!cluster-a6a869d5-c8d9-4bb9-8246-da67ab53ba92
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ SECRETNAME=rds\!cluster-a6a869d5-c8d9-4bb9-8246-da67ab53ba92
つづいて、資格情報を取得し、変数に代入します。
SECRET=$(aws secretsmanager get-secret-value --secret-id $SECRETNAME --query 'SecretString' --output text)
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ SECRET=$(aws secretsmanager get-secret-value --secret-id $SECRETNAME --query 'SecretString' --output text)
取得できたか確認してみます。
echo $SECRET
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ echo $SECRET
{"username":"postgres","password":"AGzQGK.*arp5xxxxxxx<Me[:R3$s"} # passwordの一部をマスクしてます
つぎに取得した情報から、データベースにログインするためのユーザー名とパスワードをJSONから値だけ抜き出し、変数に代入します。
echo $USERNAME
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ USERNAME=$(echo $SECRET | jq -r '.username')
[ec2-user@ip-10-0-1-225 ~]$ echo $USERNAME
postgres
echo $PASSWORD
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ PASSWORD=$(echo $SECRET | jq -r '.password')
[ec2-user@ip-10-0-1-225 ~]$ echo $PASSWORD
AGzQGK.*arp5xxxxxxx<Me[:R3$s # passwordの一部をマスクしてます
残りのコマンドも実行していきます。
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ HOST=saitou-database.cluster-clqy3wpgthbm.ap-southeast-1.rds.amazonaws.com
[ec2-user@ip-10-0-1-225 ~]$ PORT=5432
[ec2-user@ip-10-0-1-225 ~]$ DBNAME=saitou_db
[ec2-user@ip-10-0-1-225 ~]$ export PGPASSWORD=$PASSWORD
必要な値を取得し終えたので、さいごにpsqlコマンドで接続しましょう。
psql -h $HOST -p $PORT -U $USERNAME -d $DBNAME
【実行結果】
[ec2-user@ip-10-0-1-225 ~]$ psql -h $HOST -p $PORT -U $USERNAME -d $DBNAME
psql (16.4)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
saitou_db=>
PostgreSQLのプロンプトが出力されました。
「Secrets Managerからの資格情報取得と接続」は以上です。
■接続確認
データベース接続が成功したか確認するために、シンプルなSQLコマンドを実行してみましょう。
SELECT version()
【実行結果】
saitou_db=> SELECT version();
version
-------------------------------------------------------------------------------------------------
PostgreSQL 16.4 on x86_64-pc-linux-gnu, compiled by x86_64-pc-linux-gnu-gcc (GCC) 9.5.0, 64-bit
(1 row)
RDSデータベース作成時に指定したバージョンのPostgreSQLであることがわかりますね。
今回のハンズオンは以上です。
■エラー一覧
コマンドを検証しているときに、SecretsManagerから情報を取得する際にエラーが起きましたので、共有いたします。
●権限エラー
[ec2-user@ip-10-0-1-225 ~]$ SECRET=$(aws secretsmanager get-secret-value --secret-id $SECRETNAME --query 'SecretString' --output text)
An error occurred (AccessDeniedException) when calling the GetSecretValue operation: User: arn:aws:sts::xxxxxxxxxx:assumed-role/saitou-test-ec2-iam-role/i-09845a9b96e7fa610 is not authorized to perform: secretsmanager:GetSecretValue on resource: rds!cluster-a6a869d5-c8d9-4bb9-8246-da67ab53ba92 because no identity-based policy allows the secretsmanager:GetSecretValue action
前提で書いた通り、"SecretsManager"に関する権限がないことによるエラーです。必要な権限をIAMロールに付与することで、解決することができます。
まとめ
AWS Secrets Managerを利用することで、コード内にパスワードを直接記述することなく接続情報を管理でき、セキュリティが大幅に向上します。
また、Secrets Managerはパスワードの自動ローテーション機能を備えているため、定期的なパスワード更新や安全な管理も自動化でき、運用の負荷を減らせます。
本記事では、Secrets Managerから資格情報を安全に取得し、Aurora for PostgreSQLデータベースに接続する具体的な手順を紹介しました。これにより、シンプルかつセキュアにデータベース接続が可能になるため、皆さんのシステムにもぜひ導入してみてください。
↓ほかの協栄情報メンバーもAmazon RDSについての記事を公開しています。ぜひ参考にしてみてください。
■IAMデータベース認証を利用し、Aurora PostgreSQLに接続する手順(齊藤弘樹)
■EC2インスタンス(RHEL)からSecrets Managerを利用してAurora for PostgreSQL 16に接続する手順(齊藤弘樹)
■Amazon EC2(RHEL9)からAmazon Aurora for PostgreSQL16.4への接続手順(齊藤弘樹)
■“Amazon RDS for SQL Server”のクロスリージョンリードレプリカを作成・昇格してみた(齊藤弘樹)
■RDSのMySQL5.7標準サポート終了に伴う8.0へのアップグレードについて(ito.d)
■AWS RDS for Oracleメモリー不足際の解決案(dapeng)