Azure SQL

【Azure】AzureADユーザを使ってAzureSQLサーバの権限を管理する

今回の記事ではAzureADのユーザを使ってAzureSQLサーバの認証をやってみます。

AzureADのユーザを使いうことで、ユーザー権限の管理が楽になります。

AzureADのユーザごとにSQLサーバの権限を分けてみたいと思います。

では、早速やり方を解説していきます。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

AzureADユーザを使ってAzureSQLサーバの権限を管理する

今回の記事はMicrosoftドキュメントのこちらの記事を参考にしています。

https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-aad-authentication

では、設定手順を解説していきます。

準備①AzureADでユーザを追加する。

まず、はじめにAzureADでユーザを追加しましょう。

「AzureActiveDirectory」→「ユーザ」→「ユーザの追加」から追加できます。

ユーザ名とパスワードは何でもよいです。

ユーザを作成した時点では特に権限を与えておく必要はないです。

AzureActiveDirectoryでユーザの追加

準備②SQLサーバ、データベースを作成する

「SQLデータベース」→「追加」でSQLデータベースを作成します。

SQLサーバはデータベースを作成する際に、新規で作成できます。

名前やパスワードも何でもよいですが、管理者の名前とパスワードは控えておきましょう。

今回は”testdb”というデータベースを作成しました。

SQLデータベースの作成

Azure SQLサーバの作成方法はこちらの記事で紹介しています。

準備③ SQL Server Management Studio (SSMS) のインストール

SQLサーバを使うためのツールです。

SSMSでなくてもよいのですが、これを普段使っているので今回はこのSSMSを使うことを前提としています。

インストールについては、こちらの記事からダウンロードしてインストールしましょう。

https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

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認証」です。

ログインとパスワードは管理者のユーザ名とパスワードを入力します。

AzureSQLサーバに接続1

アクセス権でエラーが出た場合は、ポップアップの指示の通り、ファイアーウォールの規則にIPを追加します。

接続が完了すると、オブジェクトエクスプローラーにAzureで作成したSQLサーバが表示されます。

AzureSQLサーバに接続2

SQLデータベースにAzureADユーザを追加

次にSQLデータベースにAzureADユーザを追加します。

まず、「システムデータベース」→ 「master」を右クリックして「新しいクエリ」をクリックします。そうすると正面に白い画面が表示されます。

クエリ

クエリに以下のコマンドを入力し、「実行」を押します。

CREATE USER [AzureADのユーザ名] FROM EXTERNAL PROVIDER
AzureADユーザをSQLに追加する2

エラーが出る場合は、SQLサーバとAzureActiveDirectory管理者の登録ができていないか、ユーザ作成されていないと思います。前の手順を確認してください。

「master」でユーザを作成したら、自分で作ったデータベース「testdb」でも同様にユーザを追加します。 AzureADユーザにDBの権限を付与する

AzureADユーザをSQLに追加する2

AzureADユーザにSQLサーバの権限を付与する。

クエリは「testdb」のままで実行します。

AzureADごとに読み取りのみや書き込み可能などの権限を付与していきます。

クエリ画面に以下のコマンドを実行します。

EXEC sp_addrolemember 'データベースの権限', 'AzureADのユーザ名';
例 EXEC sp_addrolemember 'db_datareader', 'AzureADのユーザ名';

データベースの権限は以下のようなものがあります。

・db_owner・・・管理者

・db_datareader・・・読み取り権限

・db_datawriter・・・書き込み権限

その他の権限や詳細はこちらのドキュメントを確認してください。

https://docs.microsoft.com/ja-jp/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver15

さいごに

今回はAzureADユーザを使ってAzureSQLサーバの権限を管理することをやってみました。

AzureADを使うとユーザの権限管理が一元化できるためとても便利です。

データベースだけでなくその他の権限も制御できるので、そのうち記事にしていきたいと思います。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST