Azure VM 上の SQL Server に対する Microsoft Entra 認証を有効にする
適用対象: Azure VM 上の SQL Server
この記事では、Azure Virtual Machine (VM) 上の SQL Server に対する Microsoft Entra ID (旧 Azure Active Directory) 認証を有効にする方法について説明します。
概要
SQL Server 2022 以降では、次の Microsoft Entra 認証方法のいずれかを使って Azure VM の SQL Server に接続できます。
- パスワードは、Microsoft Entra 資格情報を使用した認証を提供します
- Universal with MFAにより多要素認証が追加されます
- Integrated は Active Directory Federation Services (ADFS) のようなフェデレーション プロバイダーを使用してシングル サインオン (SSO) エクスペリエンスを有効にします
- サービス プリンシパルにより Azure アプリケーションからの認証が有効化されます
- Managed Identity は、Microsoft Entra ID が割り当てられたアプリケーションからの認証を有効にします
SQL Server 用の Microsoft Entra ログインを作成し、ユーザーがそのログインを使用して SQL Server にログインすると、SQL Server ではマネージド ID を使用して Microsoft Graph のクエリを実行します。 Azure VM 上の SQL Server に対して Microsoft Entra 認証を有効にした場合、SQL Server で Microsoft Entra AD との通信に使用できるマネージド ID を提供する必要があります。 このマネージド ID には、Microsoft Graph に対してクエリを実行するためのアクセス許可が必要です。
Azure 内のリソースに対してマネージド ID を有効にすると、ID のセキュリティ境界はアタッチ先のリソースになります。 たとえば、Azure リソースのマネージド ID が有効な仮想マシンのセキュリティ境界は、仮想マシンです。 その VM 上で実行されているすべてのコードでは、マネージド ID エンドポイントと要求トークンを呼び出すことができます。 Azure VM 上の SQL Server のマネージド ID を有効にすると、ID が仮想マシンにアタッチされるため、セキュリティ境界は仮想マシンになります。 エクスペリエンスは、マネージド ID をサポートする他のリソースで作業する場合と同様です。 詳細については、マネージド ID に関してよく寄せられる質問に関するページを参照してください。
Azure VM 上の SQL Server での Microsoft Entra 認証に使用されるシステム割り当てマネージド ID とユーザー割り当てマネージド ID には、次の利点があります。
- システム割り当てマネージド ID を使用することで、構成プロセスが簡略化されます。 マネージド ID の有効期間は仮想マシンと同じであるため、仮想マシンを削除するときに、別途、削除を行う必要はありません。
- ユーザー割り当てマネージド ID の場合は、Azure VM 上の複数の SQL Server 向けの Microsoft Entra 認証にアタッチして使用できるため、スケーラビリティが得られます。
マネージド ID の使用を開始するには、Azure portal を使用したマネージド ID の構成に関する記事を参照してください。
前提条件
SQL Server に対する Microsoft Entra 認証を有効にするには、次の前提条件が必要です。
- SQL Server 2022 を使用する。
- 任意のクラウドの SQL Server Iaas Agent 拡張機能 に SQL Server VM を登録します。
- SQL Server VM と同じ Microsoft Entra テナントに、既存の システム割り当てまたはユーザー割り当てマネージド ID があること。 詳細については、Azure portal を使用したマネージド ID の構成に関する記事を参照してください。
- Azure CLI 2.48.0 以降 (Azure CLI を使用して SQL Server VM の Microsoft Entra 認証を構成する場合)。
アクセス許可の付与
SQL Server と Microsoft Entra ID の間の認証を容易にするためにマネージド ID を選択する場合には、次に示す 3 つの Microsoft Graph アプリケーションのアクセス許可 (アプリ ロール) のいずれかが必要です: User.Read.All
、GroupMember.Read.All
、Application.Read.All
。
あるいは、マネージド ID を Microsoft Entra ディレクトリ閲覧者ロール に追加すれば、十分なアクセス許可が付与されます。 ディレクトリ閲覧者ロールをマネージド ID に割り当てるもう 1 つの方法として、ディレクトリ閲覧者ロールを Microsoft Entra ID 内のグループに割り当てることができます。 そうすることで、グループ所有者は、グループのメンバーとして仮想マシンのマネージド ID を追加できるようになります。 これにより、Microsoft Entra グローバル管理者の関与が最小限に抑えられ、グループ所有者に責任が委任されます。
マネージド ID をロールに追加する
このセクションでは、Microsoft Entra ID のディレクトリ閲覧者ロールにマネージド ID を追加する方法について説明します。 ディレクトリ閲覧者ロールの割り当てを変更するには、グローバル管理者特権が必要です。 十分なアクセス許可がない場合は、Microsoft Entra 管理者と協力して次の手順に従ってください。
マネージド ID に ディレクトリ閲覧者 ロールを付与するには、次の手順に従います。
Azure ポータルで、Microsoft Entra ID ロールと管理者を開きます。
検索ボックスに「ディレクトリ閲覧者」と入力し、[ディレクトリ閲覧者] ロールを選択して、[ディレクトリ閲覧者 | 割り当て] ページを開きます。
[ディレクトリ閲覧者 | 割り当て] ページで、[割り当ての追加] を選択して、[割り当ての追加] ページを開きます。
[割り当ての追加] ページで、[メンバーの選択] の下にある [メンバーが選択されていません] を選択して、[メンバーの選択] ページを開きます。
[Select a member] ページで、SQL Server VM で使用するマネージド ID 名を検索し、[Directory Readers] ロールに追加します。 システム割り当てマネージド ID の場合は、VM の名前を検索します。 [Select] を選択して ID を確認し、[Add assignments] ページに戻ります。
[メンバーの選択] で選択した ID が表示されていることを確認し、[次へ] を選択します。
割り当ての種類が [アクティブ] に設定されており、[永続的に割り当てる] の横にあるボックスがオンになっていることを確認します。 "VM2 のシステム割り当て ID にディレクトリ閲覧者ロールを追加" など、業務上の正当な理由を入力し、[割り当てる] を選択して設定を保存し、[ディレクトリ閲覧者 | 割り当て] ページに戻ります。
[ディレクトリ閲覧者 | 割り当て] ページで、新しく追加した ID が [ディレクトリ閲覧者] の下に表示されていることを確認します。
アプリ ロールのアクセス許可を追加する
Azure PowerShell を使用してマネージド ID にアプリ ロールを付与することができます。 これを行うには、次のステップに従います。
Note
Azure AD および MSOnline PowerShell モジュールは、2024 年 3 月 30 日の時点で非推奨となります。 詳細については、非推奨の最新情報を参照してください。 この日以降、これらのモジュールのサポートは、Microsoft Graph PowerShell SDK への移行支援とセキュリティ修正プログラムに限定されます。 非推奨になるモジュールは、2025 年 3 月 30 日まで引き続き機能します。
Microsoft Entra ID (旧称 Azure AD) を使用するには、Microsoft Graph PowerShell に移行することをお勧めします。 移行に関する一般的な質問については、「移行に関する FAQ」を参照してください。 ノート: バージョン 1.0.x の MSOnline では、2024 年 6 月 30 日以降に使用障害が発生する可能性があります。
Microsoft Graph に接続する
Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All" -TenantId "<tenant id>"
マネージド ID を取得します。
$Graph_SP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'" $MSI = Get-MgServicePrincipal -Filter "displayName eq '<your managed identity display name>'"
User.Read.All
ロールを ID に割り当てます。$AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"} New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
GroupMember.Read.All
ロールを ID に割り当てます。$AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"} New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
Application.Read.All
ロールを ID に割り当てます。$AAD_AppRole = $Graph_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"} New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MSI.Id -BodyParameter @{principalId=$MSI.Id; resourceId=$Graph_SP.Id; appRoleId=$AAD_AppRole.Id}
次の手順を行って、マネージド ID に割り当てたアクセス許可を検証できます。
- Azure ポータル から、Microsoft Entra ID に移動します。
- [エンタープライズ アプリケーション] を選択し、[管理] の下にある [すべてのアプリケーション] を選択します。
- アプリケーションの種類を
Managed identities
でフィルター処理します。 - マネージド ID を選択し、[セキュリティ] の下にある [アクセス許可] を選択します。 アクセス許可
User.Read.All
、GroupMember.Read.All
、Application.Read.All
が表示されます。
送信通信を有効にする
Microsoft Entra 認証を機能させるには、次のものが必要です。
- SQL Server から Microsoft Entra ID および Microsoft Graph エンドポイントへの送信通信。
- SQL クライアントから Microsoft Entra ID への送信通信。
既定の Azure VM 構成では、Microsoft Entra ID だけでなく Microsoft Graph エンドポイントへの送信通信も許可されますが、一部のユーザーは、OS レベルのファイアウォールまたは Azure VNet ネットワーク セキュリティ グループ (NSG) のいずれかを使用して送信通信を制限することを選択しています。
SQL Server VM 上のファイアウォールと SQL クライアントでは、ポート 80 および 443 で送信トラフィックを許可する必要があります。
SQL Server VM をホストする VNet の Azure VNet NSG 規則には、次のものが必要です。
AzureActiveDirectory
のサービス タグ。- 宛先ポートの範囲: 80、443。
- [許可] に設定されたアクション。
- 高優先度 (低い数値)。
Microsoft Entra 認証を有効にする
Azure ポータルまたは Azure CLI を使用して、SQL Server VM に対して Microsoft Entra 認証を有効にすることができます。
Note
Microsoft Entra 認証が有効になった後も、このセクションで示したのと同じ手順に従って、別のマネージド ID を使用するように構成を変更することができます。
SQL Server VM に対する Microsoft Entra 認証を有効にするには、次の手順に従います。
Azure portal で [SQL 仮想マシン リソース] に移動します。
[セキュリティ] の [セキュリティの構成] を選択します。
[Microsoft Entra 認証] で [有効にする] を選択します。
ドロップダウンからマネージド ID の種類 ([システム割り当て] または [ユーザー割り当て]) を選択します。 ユーザー割り当てを選択する場合は、表示された [ユーザー割り当てマネージド ID] ドロップダウンから Azure VM 上の SQL Server に対する認証に使用する ID を選択します。
Microsoft Entra を有効にした後、同じ手順に従って、SQL Server VM に対して認証できるマネージド ID を変更できます。
Note
エラー The selected managed identity does not have enough permissions for Microsoft Entra authentication
は、選択した ID にアクセス許可が正しく割り当てられていないことを示します。 [アクセス許可の付与] セクションを確認して、適切なアクセス許可を割り当ててください。
制限事項
次の制限が適用されます。
- Microsoft Entra 認証は、任意のクラウドにデプロイされた SQL IaaS Agent 拡張機能に登録された Windows VM 上で実行されている SQL Server 2022 でのみサポートされます。 既定のインスタンスや単一の名前付きインスタンスなど、SQL IaaS Agent 拡張機能がサポートされているシナリオのみがサポートされます。 フェールオーバー クラスター インスタンスはサポートされていません。
- SQL Server に対する認証のために選択する ID は、Microsoft Entra ID noディレクトリ閲覧者ロール、または次の 3 つの Microsoft Graph アプリケーションのアクセス許可 (アプリ ロール) (
User.Read.All
、GroupMember.Read.All
、Application.Read.All
) のいずれかを持っている必要があります。 - Microsoft Entra 認証をいったん有効にすると、再び無効にする方法はありません。
- 現在、FIDO2 方式 を使用する Microsoft Entra 認証を介して Azure VM 上の SQL Server を認証する方法は、サポートされていません。
次のステップ
SQL Server のセキュリティのベスト プラクティスを確認してください。
Azure VM での SQL Server の実行に関するその他の記事については、「Azure Virtual Machines における SQL Server の概要」をご覧ください。 SQL Server 仮想マシンについて不明な点がある場合は、よく寄せられる質問を参照してください。
詳細については、このベスト プラクティス シリーズにある他の記事を参照してください。