EC2インスタンス(RHEL)からSecrets Managerを利用してAurora for PostgreSQL 16に接続する手順

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を選択
aurora create settings
 

 

■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に接続する方法を紹介しますね。

 

以下のコマンドを実行します。SECRETNAMEHOSTDBNAME を自身の環境に合わせて書き換えましょう。

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データベースに接続する具体的な手順を紹介しました。これにより、シンプルかつセキュアにデータベース接続が可能になるため、皆さんのシステムにもぜひ導入してみてください。

 

参考リンク:AWS公式ドキュメント https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/retrieving-secrets_cli.html

 

 

↓ほかの協栄情報メンバーもAmazon RDSについての記事を公開しています。ぜひ参考にしてみてください。
 

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)

 

 

Last modified: 2024-11-09

Author