御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します

Azure SQL DatabaseでAzureActiveDirectory認証を設定する

AzureのSQL DatabaseをAzureActiveDirectory(以下、AAD)のユーザーで認証する方法を紹介します。

Azure SQL Databaseとは

Azure SQL DatabaseはMicrosoft Azureの提供するPaaSのサービスです。
SQL Serverと名前が似ているので、勘違いされますが別のサービスですのでご注意ください。
azure.microsoft.com

今回の例はSQL Database エラスティックプールを使用しています。
そのため、画面の表示がシングルデータベースの場合と差異がある場合がございますが、 ご了承ください。

SQL Database側の設定(Azure ポータル)

Azureポータルで"Active Directory 管理者"を設定する

SQL DatabaseでAADに所属しているユーザーを認証できるようにするには、 Azureポータルで"Active Directory 管理者"を設定する必要があります。 「Azureポータル」→「作成したSqlServer」→「Active Directory 管理者」→「管理者の設定」
f:id:tt-suzukiit:20190125180212p:plain

管理者にするユーザーを検索し、追加します。
f:id:tt-suzukiit:20190125181127p:plain

「保存」ボタンをクリックします。 これでAD管理者の設定は終了です。

クライアント端末からアクセスできるようファイアウォール設定を行います。

SQLDatabaseにアクセスできるクライアント端末のIPアドレスの許可設定を行います。
「Azureポータル」→「作成したSqlServer」→「ファイアウォールと仮想ネットワーク」→「クライアントIPの追加」
f:id:tt-suzukiit:20190125184502p:plain
「保存」ボタンをクリックします。
Azureポータル側での設定は以上です。

接続方法

SQLServer Management Studio(以下、SSMS)を使用して接続を行います。

SSMSのインストールはこちらから
接続情報を入力します。 f:id:tt-suzukiit:20190125181509p:plain

項目 設定値
サーバーの種類 データベースエンジン
サーバー名 各自認証サーバーの名称を入力
認証※ Active Directory - MFAサーバーで汎用
ユーザー名 登録したAD管理者のアドレスを入力

私のAADアカウントは多要素認証が設定されているため、
認証で「Active Directory - MFAサーバーで汎用」を選択しております。
多要素認証を設定していない場合、「Active Directory - パスワード」を選択してください。

接続を選択すると、マイクロソフトアカウントの認証画面が表示されますので、
指示に従い、認証情報を入力すると接続できることが確認できます。 f:id:tt-suzukiit:20190125182735p:plain

ただこの段階だとAD管理者で設定したユーザー以外はログインできないため、
ユーザー追加の設定を行う必要があります。

ADユーザーをSQLDatabaseで認証できるように追加する

ユーザーを追加しましょう。
これでADユーザーを追加することができます。

--ユーザー(×××@△△.com)追加
CREATE USER [×××@△△.com] FROM EXTERNAL PROVIDER;

--ユーザー(×××@△△.com)にdb_owner権限を付与する
ALTER ROLE db_owner ADD MEMBER [×××@△△.com];

最後に

共有のユーザーID、パスワードを使わないようにするために、
AD認証を使用する方法は有効な手段だと思います。
大事なデータベースを守るためにもAD認証を取り入れましょう。

参考ページ

Azure Active Directory 認証を構成する - SQL | Microsoft Docs

SQL Server Management Studio (SSMS) のダウンロード - SQL Server | Microsoft Docs