Azure Database for PostgreSQLの認証をAzure ADユーザーでやってみた
Azure ADユーザーでAzure Database for PostgreSQLへログインする事が出来ます。
PostgreSQL での認証に Azure Active Directory を使用する(MS社公式)
PostgreSQLのユーザー管理を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にAD管理者設定を行います。
Azure Database for PostgreSQLでAAD管理者設定 | |
Azure Database for PostgreSQLのメニューでActive Directory 管理者を選択します。管理者の設定をクリックします。 |
|
Active Directoryの管理者設定になりますので、AADユーザーを設定します。今回はpg-backup-userを指定し選択をクリックします。 ※グループの設定も可能です。 |
|
AAD管理者の設定がされている事を確認したら保存をクリックします。 |
【補足】Azure Database for PostgreSQLで接続のセキュリティ設定
デフォルト状態ではPostgreSQLへ接続出来ない状態になっています。自身のIPからAzure Database for PostgreSQLへの接続許可設定をします。
※IPが変わった事忘れてて、再設定しないまま検証してて繋がらないと悩んでしまいました。
接続許可設定 | |
クライアントIPの追加を選択します。 自身のIPを許可するファイアウォール規則が追加されますので、保存を選択します。 ※環境に応じて許可するIPは指定して下さい。(開始IPと終了IPに同じIPを指定すると/32で指定可能です。) |
Azure Database for PostgreSQLにAzure ADユーザーでログイン
Azure CLIでログインしトークンを取得する
引き続き公式サイトの情報を参考に作業を進めます。Azure ADユーザーでPostgreSQLにログインする場合はパスワードにトークンを利用します。
トークン発行 | ||
Azure CLI(az loginコマンド)を使ってログインします。 az loginコマンドを実行するとブラウザが開かれて、Azureへのログイン画面が表示されるのでログインします。 完了するとメッセージが表示されます。 |
|
|
Azure CLIを使ってトークンを発行します。コマンドは公式サイトのものをそのまま使います。 トークンの有効時間は1時間になります。 |
|
A5:SQL Mk-2でAzure Database for 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モード:優先
- サーバ証明書を信用する:チェック
- 接続情報
※ユーザー名には@が2つ入ります。
【補足】A5:SQL Mk-2でSSL接続を使えるようにする
A5:SQL Mk-2でSSL接続する場合にはOpenSSLのライブラリが必要になりますので、事前にインストールします。
Open SSLインストール | |
OPEN SSLダウンロード(英語)でSSL接続する場合は、OpenSSLのライブラリをインストールします。 ※今回の場合はLightで問題ないです。 |
|
ライセンス確認画面が表示されますので、I accept the agreementにチェックを入れ次へ進みます。 |
|
インストールディレクトリの確認になります。変更しない場合はそのまま次へ進みます。 |
|
Open SSLのDLLをWindowsのsystem directoryにコピーするかの確認になります。Windowsのsystem directoryにコピーします。 |
|
メッセージを確認し問題が無ければ、インストールを実行します。 |
Azure Database for PostgreSQLへAzure ADユーザーを追加
PostgreSQLでAzure ADユーザーを追加
引き続き公式サイトの情報を参考に作業を進めます。AADユーザーをPostgreSQLに追加します。なおこのAADユーザーはAAD管理者登録のグループに属している必要はありません。AADグループやAAD側の権限は問いません。(実際の運用管理上は管理しやすいようAAD側で設定します。)
-
-
- 実施する手順
- PostgreSQL上でCREATE ROLEコマンドを実行し、追加するAADユーザーをazure_ad_userロールに割り当て
- 追加したAADユーザーでAzure CLIを使ってAzureにログインし、トークンを発行する。
- 追加したAADユーザーでPostgreSQLへログインする
- 実施する手順
-
PostgreSQLでAADユーザー追加 | ||
PostgreSQL側でCREATE ROLEコマンドを実行し、azure_ad_userロールにAADユーザーを追加します。 |
※azure_ad_userはAzure Database for PostgreSQLにあるビルトインロールです。AADユーザーはこのロールに追加する必要があります。 |
|
Azure CLIコマンドを実行し、追加したユーザーでログイン、トークンの発行を行います。 |
|
|
A5:SQL Mk-2で設定を行います。 ユーザーIDは追加したAADユーザー、パスワードはトークンを設定します。 テスト接続で接続を確認してみます。 |
||
問題が無ければ、接続に成功しましたメッセージが表示されます。 |
|