Azure SQL Database のサーバー用の仮想ネットワーク サービス エンドポイントと規則の使用

適用対象:Azure SQL データベース

仮想ネットワークルールは、Azure SQL Database内のデータベースやエラスティックプールのサーバーが、仮想ネットワーク内の特定のサブネットから送信される通信を受け入れるかどうかを制御するファイアウォールセキュリティ機能です。 この記事では、仮想ネットワーク ルールが SQL Database 内のご利用のデータベースとの通信を安全に許可するための最適な選択肢となる場合がある理由について説明します。

注

本記事では、サーバーとはAzure SQL Databaseのデータベースをホストする論理サーバーを指します。

仮想ネットワーク規則を作成するには、まず、規則が参照する仮想ネットワーク サービス エンドポイントが必要です。

注

Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。

仮想ネットワーク ルールを作成する

仮想ネットワーク規則の作成のみが必要であれば、途中を読み飛ばして、この記事で後述している手順と説明に進んでください。

仮想ネットワーク規則の詳細

このセクションでは、仮想ネットワーク規則に関する詳細について、いくつか説明します。

地理リージョンは 1 つのみ

各仮想ネットワーク サービス エンドポイントは、1 つの Azure リージョンだけに適用されます。 そのエンドポイントにより、他のリージョンでサブネットからの通信の受け入れが可能になることはありません。

どの仮想ネットワーク規則も、その基になるエンドポイントが適用されるリージョンに制限されます。

サーバー レベルであり、データベース レベルではない

各仮想ネットワーク規則は、サーバー上の 1 つの特定のデータベースだけではなく、お使いのサーバー全体に適用されます。 言い換えると、仮想ネットワーク規則はデータベース レベルではなく、サーバー レベルに適用されます。

対照的に、IP 規則はどちらのレベルにも適用できます。

セキュリティ管理ロール

仮想ネットワーク サービス エンドポイントの管理では、セキュリティ ロールが分離されています。 以下の各ロールの各担当者による対応が必要です。

  • ネットワーク管理者 (ネットワーク共同作成者ロール): エンドポイントを有効にします。
  • データベース管理者 (SQL Server 共同作成者ロール): アクセス制御リスト (ACL) を更新して、指定されたサブネットをサーバーに追加します。

Azure RBAC の代替手段

ネットワーク管理およびデータベース管理のロールには、仮想ネットワーク規則の管理に必要とされる機能以外もあります。 それらの機能のうち 1 つのサブネットだけが必要です。

Azureでロールベースアクセス制御(RBAC)を使い、必要な機能のサブセットのみを持つ単一のカスタムロールを作成できます。 ネットワーク管理者またはデータベース管理者を必要とする代わりに、カスタム ロールを使用できます。ユーザーを他の 2 つの主要な管理者ロールに追加する場合よりも、カスタム ロールに追加するほうが、セキュリティ露出の対象領域が小さくなります。

注

SQL Database 内のデータベースと仮想ネットワーク サブネットが異なるサブスクリプションに存在する場合があります。 このような場合は、次の構成を確認する必要があります。

  • ユーザーに操作 (サービス エンドポイントの有効化や、指定されたサーバーへの仮想ネットワーク サブネットの追加など) を開始するために必要な権限がある。
  • 両方のサブスクリプションには Microsoft.Sql プロバイダーが登録されています。

制限事項

SQL Database の場合、仮想ネットワーク規則機能には以下のような制限事項があります。

  • SQL Database 内のデータベースのファイアウォールでは、各仮想ネットワーク規則はサブネットを参照します。 これら参照されたサブネットはすべて、データベースをホストする同じ地理的地域内でホストしなければなりません。
  • 各サーバーは、任意の仮想ネットワークに対して ACL エントリを 128 個まで保持できます。
  • 仮想ネットワーク規則はクラシック デプロイ モデル ネットワークではなく、Azure Resource Manager の仮想ネットワークのみに適用されます。
  • ファイアウォールでは、IPアドレス範囲は以下のネットワーク項目に適用されますが、仮想ネットワークルールは適用されません:
  • どちらのサブスクリプションも同じ Microsoft Entra テナントに存在する必要があります。

サービス エンドポイントを使用する場合の考慮事項

SQL Database に対してサービス エンドポイントを使用する場合は、次の考慮事項を確認してください。

  • Azure SQL Database のパブリック IP へのアウトバウンドが必要です。 SQL Database IP に対してネットワーク セキュリティ グループ (NSG) を開いて、接続を許可する必要があります。 これは、SQL Database 用の NSG サービス タグを使用して行うことができます。

ExpressRoute

オンプレミス環境からExpressRouteをパブリック ピアリングまたは Microsoft ピアリングに使用する場合は、使用される NAT IP アドレスを特定する必要があります。 パブリック ピアリングの場合、既定で、Azure サービスのトラフィックが Microsoft Azure のネットワーク バックボーンに入ったときに適用される 2 つの NAT IP アドレスが各 ExpressRoute 回線に使用されます。 Microsoft ピアリングの場合、お客様またはサービス プロバイダーのいずれかが、使用される NAT IP アドレスを提供します。 サービス リソースへのアクセスを許可するには、リソースの IP ファイアウォール設定でこれらのパブリック IP アドレスを許可する必要があります。 パブリック ピアリングの ExpressRoute 回線の IP アドレスを確認するには、Azure Portal から ExpressRoute のサポート チケットを開いてください。 ExpressRoute のパブリックおよび Microsoft ピアリングの NAT の詳細については、「Azure パブリック ピアリングの NAT 要件」を参照してください。

回線から SQL Database への通信を許可するには、NAT のパブリック IP アドレスに対する IP ネットワーク規則を作成する必要があります。

Azure Storage で仮想ネットワーク サービス エンドポイントを使用した場合の影響

Azure Storageはストレージアカウントへの接続を制限する仮想ネットワークサービスエンドポイントをサポートしています。 SQL Databaseがこの構成のアカウントを使用している場合は、ブロブ監査への影響を確認してください。

Azure SQL Database auditing to blob storage

Azure SQL 監査では、SQL 監査ログを独自のストレージ アカウントに書き込むことができます。 このストレージ アカウントで仮想ネットワーク サービス エンドポイント機能を使用する場合は、VNet とファイアウォールの背後にあるストレージ アカウントに監査を書き込む方法を参照してください。

仮想ネットワーク ファイアウォール規則をサーバーに追加する

この機能が強化される前は、ファイアウォール内でライブの仮想ネットワークルールを実装する前に、仮想ネットワークサービスエンドポイントを有効にしなければなりませんでした。 それらのエンドポイントが特定の仮想ネットワーク サブネットを SQL Database 内のデータベースに関連付けていました。 2018年1月以降、 IgnoreMissingVNetServiceEndpoint フラッグを設定することでこの要件を回避できます。 仮想ネットワーク サービス エンドポイントを有効にすることなく、仮想ネットワーク ファイアウォール規則をサーバーに追加できるようになりました。

単にファイアウォール規則を設定するだけでは、サーバーのセキュリティ保護には役立ちません。 セキュリティを有効にするには、仮想ネットワーク サービス エンドポイントを有効にする必要もあります。 サービス エンドポイントをオンにすると、オフからオンへの切り替えが完了するまで仮想ネットワーク サブネットでダウンタイムが発生します。 このダウンタイムの期間は、特に大規模な仮想ネットワークの状況で当てはまります。 IgnoreMissingVNetServiceEndpointフラグを使って、移行中のダウンタイムを減らしたり解消したりできます。

IgnoreMissingVNetServiceEndpointフラグはPowerShellを使って設定できます。 詳細については、PowerShell での仮想ネットワーク サービス エンドポイントと SQL Database の規則の作成に関する記事を参照してください。

Azure portal を使用して仮想ネットワーク規則を作成する

このセクションでは、Azure portal を使用して、SQL Database 内のデータベースに "仮想ネットワーク規則" を作成する方法について説明します。 このルールは、仮想ネットワーク サービス エンドポイントとしてタグ付けした特定のサブネットからの通信をデータベースに受け入れるよう指示します。

注

サーバーの仮想ネットワークファイアウォールルールにサービスエンドポイントを追加するには、まずサブネットでサービスエンドポイントが有効になっていることを確認してください。

サービス エンドポイントがサブネットに対して有効になっていない場合、それらを有効にするようポータルから求められます。 規則を追加する場合と同じペインの [有効化] ボタンを選択してください。

前提条件

保持している 1 つのサブネットが、SQL Database に関連する特定の仮想ネットワーク サービス エンドポイントの "種類名" で既にタグ付けされている必要があります。

Azure Portal の手順

  1. Azure portal にサインインします。

  2. SQL サーバーを検索して選択してから、使用するサーバーを選択します。 セキュリティ で ネットワーク を選択します。

  3. [パブリック アクセス] タブで、[パブリック ネットワーク アクセス] が [ネットワークの選択] に設定されていることを確実にします。それ以外の場合、[仮想ネットワーク] の設定は非表示になります。 [仮想ネットワーク] セクションで [+ 既存の仮想ネットワークを追加] を選択します。

    [ネットワーク] の論理サーバー プロパティを示すスクリーンショット。

  4. 新しい [作成/更新] ペインで、お使いの Azure リソースの名前をボックスに入力します。

    ヒント

    お使いのサブネットの正しいアドレス プレフィックスを含める必要があります。 アドレス プレフィックス 値はポータルで確認できます。 [すべてのリソース]>[すべての種類]>[仮想ネットワーク] の順に移動します。 フィルターにはお使いの仮想ネットワークが表示されます。 仮想ネットワークを選択し、 [サブネット] を選択します。 [アドレス範囲] 列に、必要なアドレス プレフィックスが含まれています。

    新しいルールの入力欄への入力を示すスクリーンショット。

  5. [ファイアウォール] ペインで結果の仮想ネットワーク規則を確認します。

    [ファイアウォール] ペインの新しい規則を示すスクリーンショット。

  6. [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] を [いいえ] に設定します。

    重要

    [Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] をオンのままにすると、サーバーは Azure 境界内の任意のサブネットからの通信を受け付けます。 その通信は、Azureデータセンター向けに定義された範囲内と認識されるIPアドレスの一つから発信されます。 この制御を有効にしたままにすると、セキュリティの観点から見れば過剰なアクセス権限を許可してしまう可能性があります。 Microsoft Azure Virtual Network サービス エンドポイント機能は、SQL Database の仮想ネットワーク規則機能と共に使用することで、セキュリティ脅威にさらされる領域を減少させることができます。

  7. ペインの下部付近にある [OK] ボタンを選択します。

注

規則には次の状態が適用されます。

  • 準備完了: 開始した操作が成功したことを示します。
  • 失敗: 開始した操作が失敗したことを示します。
  • 削除: Delete 操作にのみ適用され、ルールが削除され適用されなくなったことを示します。
  • 進行中:操作が進行中であることを示します。 操作がこの状態にある間は、古い規則が適用されます。

PowerShell を使用して仮想ネットワーク規則を作成する

スクリプトを使用して仮想ネットワーク規則を作成するのに、PowerShell コマンドレット New-AzSqlServerVirtualNetworkRule または az network vnet create を使用できます。 詳細については、PowerShell での仮想ネットワーク サービス エンドポイントと SQL Database 用の規則の作成に関する記事を参照してください。

REST API を使用して仮想ネットワーク規則を作成する

SQL 仮想ネットワーク アクション用の PowerShell コマンドレットは、内部的に REST API を呼び出します。 REST API を直接呼び出すことができます。 詳細については、仮想ネットワーク規則: 操作に関するページをご覧ください。

エラー 40914 および 40615 のトラブルシューティング

接続エラー 40914 は、Azure portal の [ファイアウォール] ペインで指定されている 仮想ネットワーク規則 に関係があります。
エラー40615は似ていますが、ファイアウォールの IPアドレスルール に関するものです。

エラー 40914

メッセージ テキスト: "ログインにより要求されたサーバー '[server-name]' を開くことができません。 クライアントはサーバーへのアクセスを許可されていません。

エラーの説明: クライアントは、仮想ネットワークのサービス エンドポイントを持つサブネット内にあります。 しかし、サーバーにはサブネットがデータベースと通信する権利を与える仮想ネットワークルールはありません。

エラーの解決策: Azure portal の [ファイアウォール] ペインで、仮想ネットワーク規則コントロールを使用して、サブネットの仮想ネットワーク規則を追加します。

エラー 40615

メッセージ テキスト: "Cannot open server '{0}' requested by the login. (ログインにより要求されたサーバー '{0}' を開くことができません。) Client with IP address '{1}' is not allowed to access the server. (IP アドレス '{1}' のクライアントはこのサーバーへのアクセスを許可されていません。)"

エラーの説明: サーバーへの接続を許可されていない IP アドレスからクライアントが接続しようとしています。 サーバーのファイアウォールには、指定された IP アドレスからデータベースへの通信をクライアントに許可する IP アドレス規則がありません。

エラーの解決策: IP ルールとしてクライアントの IP アドレスを入力します。 このステップはAzureポータルのファイアウォールペインを使って完了します。

Azure Synapse Analytics の仮想ネットワーク サービス エンドポイント

詳細については、Azure Synapse AnalyticsのVirtual Network Service Endpoints and Rulesをご覧ください。