このページの本文へ

FIXER cloud.config Tech Blog

Azure SQL Databaseの認証にAzure ADのグループを使うと最強だった

2020年06月05日 11時00分更新

文● 花野 恵子/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「SQL Database の認証に Azure AD のグループを使うと最強だった件! #Azureリレー」を再編集したものです。

 今回はAzure SQL Databaseの認証に、Azure Active Directory (Azure AD) の ID を使う方法を紹介します。地味な話なのか意外とあまり記事を見ないのですが、実はかなり強力な機能なのでこの機会に知ってもらえると嬉しいです。

何ができるの?

 Azure SQL Databaseに接続する時に、Azure Active Directory のユーザで認証できるようになります。つまり、以下のような嬉しいことが起こります。

 ・共有ユーザを廃止できる
 ユーザに紐づいたアカウントでアクセスするので、誰が何をやったかが一目瞭然になります。

 ・権限を付与する人と、Azure SQL Databaseに接続する人とを分離できる
 Azure SQL Databaseのユーザを作成する際に、Azure Active Directory のユーザを直接指定することもできますが、今回ご紹介するようにAzure Active Directory のグループも使用できます。これにより、最初の設定さえ完了すれば、その後はユーザへの権限付与の際にAzure Active Directory のグループで管理できるようになります。

 つまり、権限の付与を行う人にSQL Databaseの権限を持たせる必要がなくります。また、SQL Databaseのユーザを追加したり削除したりする手順に比べ、Azure Active Directory のグループのメンバー管理は簡単にできるという利点もあります。

 ・MFAが使えるようになる
 Azure Active Directory のMFAの機能を使うことにより、SQL Databaseへの接続時にもMFAを使用できるようになります。単純なID/パスワードに比べて、よりセキュアに運用できます!

概要

 今回は、Azure Active Directory のグループを用いた手順をご紹介します。多いように見えますが、一つひとつやって行けば大丈夫です。

 <準備編>

 1.Azure ADのグループを作る
 2.Azure SQL Database サーバーに Azure Active Directory 管理者を設定する
 3.Azure Active Directory 管理者でAzure SQL Databaseに接続する
 4.Azure SQL DatabaseのユーザをAzure ADのグループで作る
 5.Azure SQL Databaseのユーザにロールを割り当てる

 <使ってみる編>

 1.Azure ADのグループにユーザを追加する
 2.グループに追加されたユーザでAzure SQL Databaseに接続する
 3.Azure ADのグループからユーザを削除する

 最終的には、こんな感じの環境ができあがります。

Azure ADのグループを作る

 まずはAzure ADのグループを作ります。今回は「SQL-Yomu-Group」という名前にしました。

Azure SQL Database サーバーに Azure Active Directory 管理者を設定する

 Azure SQL Database サーバーに Azure Active Directory 管理者を設定します。これにより、Azure SQL Database サーバーを作成した時に作られる「サーバ管理者」がもう一つできた感じになります。なお、今回はユーザを設定しましたが、グループを設定することもできます。

 名前がややこしいのですが、RBACおよびAzure Active Directoryの権限は関係なく、どんなユーザでもAzure SQL Database サーバーの Azure Active Directory 管理者に指定できます。

Azure Active Directory 管理者でAzure SQL Databaseに接続する

 先ほど設定したAzure SQL Database サーバーの Azure Active Directory 管理者で、SQL Server Management Studio (SSMS) を使ってAzure SQL Databaseに接続します。

 ここのポイントは1つです。

 ・「認証」のドロップダウンで「Azure Active Directory – MFAで汎用」を選択します

 Azure ADのMFAを使っていない場合は「Azure Active Directory – パスワード」でもよいのですが、「Azure Active Directory – MFAで汎用」ならMFAなしのアカウントもありのアカウントも両方通るので、私はいつもこっちを使ってしまっています。

Azure SQL DatabaseのユーザをAzure ADのグループで作る

 対象のデータベースを選択し、以下のコマンドを実行してAzure ADの「SQL-Yomu-Group」グループでAzure SQL Databaseのユーザを作成します。

 ポイントは [FROM EXTERNAL PROVIDER] です。これにより、Azure ADのユーザやグループからSQL Databaseのユーザを作成することができます。


CREATE USER [SQL-Yomu-Group] FROM EXTERNAL PROVIDER;

Azure SQL Databaseのユーザにロールを割り当てる

 作成したユーザに、Azure SQL Databaseのロールを割り当てます。今回は読み取りができればいいのでdb_datareaderのロールにしましたが、権限はやりたいことに合わせて選んでください。

 ユーザ定義ロールも使えます。


ALTER ROLE db_datareader ADD MEMBER [SQL-Yomu-Group];

 おつかれさまでした。ここまでで準備は完了です!

 ではいよいよ、使ってみましょう。

Azure ADのグループにユーザを追加する

 新しい担当者Aさんが着任しました。さっそくAzure ADの「SQL-Yomu-Group」のメンバーに追加してあげましょう。これからよろしくね。

グループに追加されたユーザでAzure SQL Databaseに接続する

 トラブル発生!担当者AさんがSSMSでAzure SQL Databaseに接続します。ここでのポイントは2つです。

 ・「認証」のドロップダウンで「Azure Active Directory – MFAで汎用」を選択します
 ・[オプション]の[接続プロパティ]でデータベース名を設定します

 これで無事に接続できます。あとは普段通り、Select文などを投げて作業してください。

Azure ADのグループからユーザを削除する

 運用担当者Aさんがいなくなります。Azure ADの「SQL-Yomu-Group」のメンバーから削除しましょう。新天地でもがんばってね。

まとめ

 いかがでしたか?

 ちょっとした設定で、運用フェーズで強力に使える機能があることが分かっていただけたかと思います。

 なお、今回作成したユーザは包括データベースユーザのため、SQL Serverのログインの作成は不要です。

 みなさんもぜひ使ってみてくださいね!

  花野 恵子/FIXER

 うっかりものです。

[転載元]
 SQL Database の認証に Azure AD のグループを使うと最強だった件! #Azureリレー

カテゴリートップへ