SQL Database は、 AAD ユーザを使ったログインが出来ますが、外部の AAD からのゲストユーザの場合、直接権限付与が出来ないので、外部ユーザでもログイン出来るようにする方法をまとめます。
仕組み
これを実現するための仕組みは、以下のような形です。
- AAD にグループを作成する
- 作成したグループにゲストユーザを追加する
- グループを DB ユーザとして登録する
この流れで実現が可能です。
グループを作成して、ゲストユーザを追加までは、今回の本質ではないので省略です。
権限付与は、以下の SQL を流すだけで OK です。
GO
CREATE USER [グループ名] FROM EXTERNAL PROVIDER; ALTER ROLE db_owner ADD MEMBER [グループ名]; GO
これを実行するとユーザ作成完了です。
CREATE USER [グループ名] に FROM EXTERNAL PROVIDER を付けると、AAD のユーザを DB のユーザとして追加するという構文になります。
グループ名に、作成したグループの名前を入れて実行すると、そのグループを DB のユーザとして登録できます。
ゲストユーザ以外なら、ユーザ名にメールアドレスを入れてやると AAD のユーザを DB ユーザに追加できます。
ログインする際、master 以外の DB にユーザを作成した場合は、SSMS などで接続する際に DB 名を指定してやる必要があるので気を付けましょう。
まとめ
SQL Database に繋ぎに行く場合、AAD を使ってセキュアに繋ぐことが自分たちのデータを保護する上でとても重要です。
ゲストユーザ以外を追加する場合でも、グループ単位でまとめてユーザ作成をしておけば、権限の付与やはく奪という作業の手間を省くことが出来るので、ぜひ使ってみてください。