今回の記事ではAzureADのユーザを使ってAzureSQLサーバの認証をやってみます。
AzureADのユーザを使いうことで、ユーザー権限の管理が楽になります。
AzureADのユーザごとにSQLサーバの権限を分けてみたいと思います。
では、早速やり方を解説していきます。
目次
AzureADユーザを使ってAzureSQLサーバの権限を管理する
今回の記事はMicrosoftドキュメントのこちらの記事を参考にしています。
https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-aad-authentication
では、設定手順を解説していきます。
準備①AzureADでユーザを追加する。
まず、はじめにAzureADでユーザを追加しましょう。
「AzureActiveDirectory」→「ユーザ」→「ユーザの追加」から追加できます。
ユーザ名とパスワードは何でもよいです。
ユーザを作成した時点では特に権限を与えておく必要はないです。
準備②SQLサーバ、データベースを作成する
「SQLデータベース」→「追加」でSQLデータベースを作成します。
SQLサーバはデータベースを作成する際に、新規で作成できます。
名前やパスワードも何でもよいですが、管理者の名前とパスワードは控えておきましょう。
今回は”testdb”というデータベースを作成しました。
Azure SQLサーバの作成方法はこちらの記事で紹介しています。
準備③ SQL Server Management Studio (SSMS) のインストール
SQLサーバを使うためのツールです。
SSMSでなくてもよいのですが、これを普段使っているので今回はこのSSMSを使うことを前提としています。
インストールについては、こちらの記事からダウンロードしてインストールしましょう。
AzureADとAzureSQLを連携させる!
SQLサーバとAzureADの連携をするためにSQLサーバの管理者を設定します。
Azureポータルサイトより、「SQL server」→ 「ActiveDirectory管理者」→「管理者の設定」より、AzureADの管理者の設定をします。
AzureADユーザを登録するため、先ほど作成したユーザ以外にいない場合はももう1ユーザ作成しておきましょう。
詳しくはこちらのMicrosoftのドキュメントをご覧ください。
https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-aad-authentication-configure
SQLデータベースに接続する
では早速本題に入ります。
SSMSで先ほど作成したSQLサーバーにアクセスします。
最初は管理者権限でアクセスします。
サーバ名は「SQLサーバ名.database.windows.net」です。
認証は「SQL server認証」です。
ログインとパスワードは管理者のユーザ名とパスワードを入力します。
アクセス権でエラーが出た場合は、ポップアップの指示の通り、ファイアーウォールの規則にIPを追加します。
接続が完了すると、オブジェクトエクスプローラーにAzureで作成したSQLサーバが表示されます。
SQLデータベースにAzureADユーザを追加
次にSQLデータベースにAzureADユーザを追加します。
まず、「システムデータベース」→ 「master」を右クリックして「新しいクエリ」をクリックします。そうすると正面に白い画面が表示されます。
クエリに以下のコマンドを入力し、「実行」を押します。
CREATE USER [AzureADのユーザ名] FROM EXTERNAL PROVIDER
エラーが出る場合は、SQLサーバとAzureActiveDirectory管理者の登録ができていないか、ユーザ作成されていないと思います。前の手順を確認してください。
「master」でユーザを作成したら、自分で作ったデータベース「testdb」でも同様にユーザを追加します。 AzureADユーザにDBの権限を付与する
AzureADユーザにSQLサーバの権限を付与する。
クエリは「testdb」のままで実行します。
AzureADごとに読み取りのみや書き込み可能などの権限を付与していきます。
クエリ画面に以下のコマンドを実行します。
EXEC sp_addrolemember 'データベースの権限', 'AzureADのユーザ名';
例 EXEC sp_addrolemember 'db_datareader', 'AzureADのユーザ名';
データベースの権限は以下のようなものがあります。
・db_owner・・・管理者
・db_datareader・・・読み取り権限
・db_datawriter・・・書き込み権限
その他の権限や詳細はこちらのドキュメントを確認してください。
さいごに
今回はAzureADユーザを使ってAzureSQLサーバの権限を管理することをやってみました。
AzureADを使うとユーザの権限管理が一元化できるためとても便利です。
データベースだけでなくその他の権限も制御できるので、そのうち記事にしていきたいと思います。