SQL Server 2022 の新機能として Azure Active Directory 認証 があります。
オンプレミスの SQL Server であれば、Azure Arc 対応サーバーをインストールすることで使用できる機能なのですが、Azure VM では、Azure Arc 対応サーバーはサポートされておらず、評価目的でのみ使用することができます。
Azure VM で SQL Server 2022 を実行した場合、SQL Server IaaS Agent 拡張機能 経由で、Azure Arctive Directory 認証をサポートする予定という話は以前から出ていたのですが、当時は具体的な設定方法は公開されていませんでした。
今月 SQL Server 2022 Revealed が出版され読み進めているところなのですが、この書籍の中でも Azure Active Directory 認証について解説が行われています。
最新の状況についてどうなっているのかを Azure Active Directory 認証 で改めて確認してみたところ、ドキュメントが更新されており、「または Windows Azure VM 上の SQL Server 2022) のみがサポートされています。」の記載が追記されていました。
SQL Server 2022 on Azure VM の Azure Active Directory 認証についての情報が Azure AD 認証 (プレビュー) として公開されていたので、実際に試してみました。
Azure VM の場合「SQL 仮想マシン」のブレードの「セキュリティ」から設定を行うことができるようになっていました。
Azure VM で使用する場合、マネージド ID を有効にし、使用するマネージド ID に対して、いずれかの権限を設定することで Azure AD 認証を使用することができるようになります。
- ディレクトリ閲覧者
- ポータルから設定可能
- User.ReadAll / GroupMember.ReadAll Application.ReadAll
- マネージド ID に Microsoft Graph のアクセス許可を行うことは、ポータルの操作では現時点では対応していないので チュートリアル: セキュリティで保護された .NET アプリからアプリとして Microsoft Graph にアクセスする のような方法で権限を追加する必要があります。
今回は「ディレクトリ閲覧者」を設定することで対応を行ってみました。
Azure Arc の時と異なり、Key Vault の設定は不要となるようで、シンプルな設定で AAD 認証を使用することができるようです。
Azure Arc で設定した場合は、設定時に最初の管理者を設定する必要がありましたが、Azure VM で有効にする場合は、最初の管理者は必要ないようでした。
設定完了後の動作は Azure Arc を使用した場合と同様で、設定が完了すると「Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\FederatedAuthentication」のレジストリが設定されていました。
設定が完了している環境に対して、ローカルの管理者ユーザーで SSMS を起動して、次のクエリを実行することで、AAD ユーザーの管理者を作成することができます。
CREATE LOGIN [principal name] FROM EXTERNAL PROVIDER; EXEC sp_addsrvrolemember @loginame='principal name', @rolename='sysadmin'; GO
現時点の制限としては、以下の内容があり、有効にした後は無効にするこはできません。
次の制限事項を考慮します。
- Azure AD 認証を有効にした後に、Azure portal を使って無効にする方法はありません。
- 現在、Azure AD 認証を有効にするには、Azure portal を使う必要があります。
- 現在、Azure AD 認証は、パブリック クラウドにデプロイされた SQL Server VM に対してのみ使用できます。
この辺の制約は今後解消されるかもしれませんが、現時点の制限は把握しておく必要がありそうですね。
Azure Arc 連携の機能としては Purview のアクセスポリシーもありますが、こちらについては投稿を書いている時点では、Azure VM (IaaS Agent 拡張機能) では、サポートはまだされていないようです。
SQL Server 2022 Revelaed では、将来的に機能を追加予定として記載されていますので、AAD 認証同様に今後サポートされるのではないでしょうか。