Auroraで追加ユーザを作成しSecrets Managerで管理・ローテーションする

Auroraで追加ユーザを作成しSecrets Managerで管理・ローテーションする

2026.01.25

はじめに

Amazon Aurora(以下、Aurora)のクラスターを作成すると、作成過程でマスタユーザも作成されます。マスタユーザは管理者権限をもち、データベースに対するあらゆる操作が可能です。しかし、最小権限の原則に従うと、日常的な運用でマスタユーザを使うことは推奨されません。例えば、読み取り専用など権限を絞ったユーザを使用するべきです。この記事ではAuroraの追加ユーザを作成し、認証情報をAWS Secrets Manager(以下、Secrets Manager)で管理できるようにします。

Auroraクラスターの作成

Aurora and RDSのページを開き、「データベース」⇒「データベースの作成」をクリックします。

今回はSQLの操作をクエリエディタから行いたいため、Aurora (PostgreSQL Compatible)を選択します。

20260125_a_01

テンプレートは「開発/テスト」を選択します。DBクラスター識別子は任意の値を入力します。マスタユーザ名はデフォルトのpostgresで、認証情報はSecrets Managerで管理するオプションを選択します。

20260125_a_02

クエリエディタを使用するため、「RDS Data APIの有効化」にチェックを入れます。

20260125_a_03

追加設定で任意のデータベース名を入力します。

20260125_a_04

他の設定項目はデフォルトとします。「データベースの作成」をクリックします。

クラスターが作成されます。

20260125_a_05

Secrets Managerにデータベース認証情報が作成されています。

20260125_a_06

マスタユーザでクエリエディタに接続

Aurora and RDSのページで「クエリエディタ」を選択します。

「データベースに接続します」のダイアログが表示されたら、クラスターを選択します。「Secrets Manager ARNと接続する」オプションを選択し、ARNとデータベースの名前を入力します。

20260125_a_07

「データベースに接続します」をクリックすると、接続されクエリエディタが表示されます。

20260125_a_08

テーブルを作成します。

20260125_a_09

CREATE TABLE films (
    code        char(5) CONSTRAINT firstkey PRIMARY KEY,
    title       varchar(40) NOT NULL
);

データを作成します。

20260125_a_10

insert into films (code, title) values ('10000', 'test');

作成されたことが確認できます。

20260125_a_11

追加ユーザの作成

マスタユーザで接続したまま、クエリエディタでユーザを作成します。

CREATE USER reader_user WITH password '<任意のパスワード>';

filmsテーブルへの読み取り権限を設定します。

GRANT SELECT ON TABLE public.films TO reader_user;

追加ユーザのシークレット作成

Secrets Managerのページから「新しいシークレットを保存する」を選択します。

シークレットのタイプは「Amazon RDSデータベースの認証情報」を選択します。作成したユーザ名とパスワードを入力します。

20260125_a_12

先ほど作成したクラスター(DBインスタンス)を選択し、「次」をクリックします。

20260125_a_13

シークレットに任意の名前をつけます。他はデフォルトで「次」をクリックします。

20260125_a_14

ローテーションを設定します。ここでは以下のように設定しました。

20260125_a_15

ローテーション関数名を指定します。ローテーション戦略は「シングルユーザ」を選択します。

20260125_a_16

確認画面で「保存」をクリックします。

保存が完了すると、ローテーションリソースをセットアップしている旨のメッセージが表示されます。

20260125_a_17

ローテーションリソースのセットアップが完了すると、ローテーション用のLambda関数が作成されます。

VPCエンドポイント作成

Auroraクラスターをプライベートサブネットに作成した場合、ローテーション用のLambda関数がVPCエンドポイントもしくはNat Gateway経由でSecrets Managerにアクセスできる必要があります。

AWS Secrets Managerでシークレットが正常にローテーションできなかった時の対応方法 | DevelopersIO

ここではVPCエンドポイントを作成します。

VPCのページを開き、「エンドポイント」⇒「エンドポイントを作成」をクリックします。

20260125_a_18

「AWSのサービス」を選択します。

20260125_a_19

「サービス」ではSecrets Managerのサービス名を選択します。

20260125_a_20

Lambda関数があるVPCとサブネットを選択します。「プライベートDNS名を有効化」にチェックを入れます。

20260125_a_21_2

セキュリティグループは、Lambda関数のセキュリティグループまたはVPCのCIDRからのHTTPSトラフィックを許可しているものを選択します。なければ作成します。

20260125_a_22_2

追加ユーザでクエリエディタに接続

Aurora and RDSのページで「クエリエディタ」を選択します。

「データベースに接続します」のダイアログが表示されたら、クラスターを選択します。「Secrets Manager ARNと接続する」オプションを選択し、先ほど作成したシークレットのARNとデータベースの名前を入力します。

20260125_a_23

filmsテーブルを参照できます。

20260125_a_24

しかし、読み取り権限しか付与されていないため、データを挿入しようとすると42501エラーとなります。

20260125_a_25

ERROR: permission denied for table films; SQLState: 42501

追加ユーザのパスワードをローテーションしてクエリエディタに接続

追加ユーザ用に作成したシークレットのページを開き、「すぐにシークレットをローテーションさせる」をクリックします。

20260125_a_26

「ローテーションさせる」をクリックします。

20260125_a_27

ローテーションが成功した場合、緑色のメッセージが表示されます。

20260125_a_28

赤いメッセージでエラーが表示される場合、以下の記事を参考に、Lambda関数のセキュリティグループやルーティング設定を見直してください。

AWS Secrets Managerでシークレットが正常にローテーションできなかった時の対応方法 | DevelopersIO

パスワードが自動生成のものに変更されています。

20260125_a_29

再度クエリエディタを開き、シークレットのARNで接続します。

正常に接続され、先ほどと同様に更新権限がないことが確認できます。

20260125_a_30

念のため、シークレットのARNではなくユーザ名/パスワードを入力しても、正常に接続できることが確認できます。

20260125_a_31

ちなみに、ユーザ名/パスワードを使用してクエリエディタに接続すると、自動的にSecrets Managerにシークレットが保存されます。これにより、次回以降の入力の手間を削減できます。ただし、今回は既に手動で作成したシークレットがあるため、不要であれば削除します。

20260125_a_32

How Amazon RDS uses AWS Secrets Manager - AWS Secrets Manager

おわりに

この記事では、Auroraでマスタユーザ以外の追加ユーザを作成し、接続情報をSecrets Managerで管理する手順を実施しました。

ローテーション方法にシングルユーザと交代ユーザがあることは知らなかったため、学びになりました。また、Secrets ManagerのVPCエンドポイントが必要といった見落としがちな点も再確認できました。

この記事がどなたかの参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事