Azure Database for PostgreSQLの認証をAzure ADユーザーでやってみた
Azure ADユーザーでAzure Database for PostgreSQLへログインすることができます。
PostgreSQL での認証に Azure Active Directory を使用する
PostgreSQLでの認証にAzure Active Directoryを使用することで、ユーザー管理をAzure ADで行えるというメリットがあります。
-
- Azure Active Directoryの認証形式を利用するため、2段階認証などが可能です。
- トークンによるアクセスが可能となり、パスワードを格納する必要がなくなります。
- Azure ADグループを割り当てることができるため、Azure ADのグループを利用してデータベースのアクセス許可を管理できます。
今回は、Azure Database for PostgreSQLでのAzure ADユーザーの管理者設定、Azure ADユーザーを使ったPostgreSQLへのログイン確認、PostgreSQL上でのAzure ADユーザー作成までを実施しました。
今回の作業にあたっては、マイクロソフト社が公開している手順を参考にしています。
PostgreSQL での認証に Azure Active Directory を使用する
Azure Database for PostgreSQLのAzure AD管理者設定
事前準備環境
今回は、事前にAzure ADユーザーとAzure Database for PostgreSQLを準備して作業を行いました。
-
-
- AADユーザー(PostgreSQLの管理者設定したユーザー)
- ユーザー名:pg-backup-user@XXXXXX.XXXXXX.XXXXXX
- AADユーザー(PostgreSQLで追加したAADユーザー)
- ユーザー名:pg-read-only-user@XXXXXX.XXXXXX.XXXXXX
- AADユーザー(PostgreSQLの管理者設定したユーザー)
-
-
-
- Azure Database for PostgreSQL
-
- サーバ名:backup-test-01.postgres.database.azure.com
- リージョン:東日本
- バージョン:11
- パフォーマンス構成:Basic、1 個の仮想コア、5 GB
-
- Azure Database for PostgreSQL
-
Azure Database for PostgreSQLでAD管理者設定を行う
公式サイトを参考に、Azure PortalでAzure Database for PostgreSQLにAzure AD管理者の設定を行います。
Azure Database for PostgreSQLでAAD管理者設定 | |
Azure Database for PostgreSQLのメニューでActive Directory管理者を選択します。 |
|
Active Directoryの管理者設定になるため、AADユーザーを設定します。 ※グループでの設定も可能です。 |
|
AAD管理者の設定がされていることを確認したら、保存をクリックします。 |
【補足】Azure Database for PostgreSQLで接続のセキュリティ設定
デフォルト状態ではPostgreSQLへ接続できない設定になっています。
自身のIPからAzure Database for PostgreSQLへの接続許可設定を行います。
※IPアドレスが変更されたことを忘れて再設定しないまま検証を行い、接続できずに悩んでしまいました。
接続許可設定 | |
クライアントIPの追加を選択します。 ※環境に応じて許可するIPを指定してください。(開始IPと終了IPに同じIPを指定すると、/32で指定可能です。) |
![]() |
—広告—
Azure Database for PostgreSQLにAzure ADユーザーでログイン
Azure CLIでサインインしてトークンを取得
引き続き公式サイトの情報を参考に作業を進めます。
Azure ADユーザーでPostgreSQLにログインする場合は、パスワードとしてトークンを利用します。
トークンを発行 | ||
Azure CLI(az loginコマンド)を使用してテナントにサインインします。 |
|
|
Azure CLIを使用してトークンを発行します。 トークンの有効時間は1時間です。 |
|
A5:SQL Mk-2でAzure Database for PostgreSQLへの接続設定手順
今回はPostgreSQLの操作にA5:SQL Mk-2を利用しています。
最初に、Azure Database for PostgreSQLへの接続設定を行います。
-
- 接続情報
- ホスト名:backup-test-01.postgres.database.azure.com(サーバ名.postgres.database.azure.com)
- データベース名:postgres(デフォルト)
- ユーザーID:pg-backup-user@XXXXXX.XXXXXX.XXXXXX@backup-test-01(ユーザー名@サーバ名)
- Port:5432
- パスワード:発行したトークン値
- SSLモード:優先
- サーバ証明書を信用する:チェック
- 接続情報
【補足】A5:SQL Mk-2でSSL接続を使えるようにする
A5:SQL Mk-2でSSL接続を行う場合は、OpenSSLのライブラリが必要となるため、事前にインストールしておきます。
Open SSLのインストール | |
SSL接続を行う場合はOpenSSLのライブラリをインストールします。 ※今回の場合はLight版で問題ありません。 |
![]() |
ライセンス確認画面が表示されます。 |
![]() |
インストールディレクトリの確認画面が表示されます。 |
![]() |
OpenSSLのDLLをWindowsのsystem directoryにコピーするかどうかの確認画面が表示されます。 |
![]() |
メッセージを確認し、問題がなければインストールを実行します。 |
![]() |
—広告—
Azure Database for PostgreSQLへAzure ADユーザーを追加
PostgreSQLにAzure ADユーザーを追加
引き続き公式サイトの情報を参考に作業を進めます。
AADユーザーをPostgreSQLに追加します。
なお、このAADユーザーはAAD管理者登録のグループに属している必要はありません。
AADグループやAAD側の権限は問いません。
-
- 実施する手順
- PostgreSQL上でCREATE ROLEコマンドを実行し、追加するAADユーザーをazure_ad_userロールに割り当て
- 追加したAADユーザーでAzure CLIを使ってAzureにログインし、トークンを発行
- 追加したAADユーザーでPostgreSQLへログイン
- 実施する手順
※実際の運用管理上は管理しやすいよう、AAD側の権限やグループを設定します。
PostgreSQLにAADユーザー追加 | ||
PostgreSQLでCREATE ROLEコマンドを実行し、AADユーザーをazure_ad_userロールに追加します。 |
※azure_ad_userはAzure Database for PostgreSQLにあるビルトインロールです。AADユーザーはこのロールに追加する必要があります。 |
|
Azure CLIコマンドを実行し、追加したユーザーでサインインしてトークンを発行します。 |
|
|
A5:SQL Mk-2で設定を行います。 |
||
問題がなければ、接続に成功しましたというメッセージが表示されます。 |
|
—広告—
最後に
今回は、Azure Database for PostgreSQLのユーザーとしてAzure ADユーザーを利用するための手順を確認しました。
2段階認証なども利用できるため、非常に便利な機能かと思いました。
引き続き、いろいろ試してみたいと思います。