Azure SQL Database と Azure Synapse Analytics のネットワーク アクセスの制御

対象: Azure SQL データベースAzure Synapse Analytics (専用 SQL プールのみ)

Azure SQL Database と Azure Synapse Analytics 用の論理サーバーを Azure portal から作成すると、結果は yourservername.database.windows.net という形式のパブリック エンドポイントになります。

次のネットワーク アクセスの制御を使用して、パブリック エンドポイントを介したデータベースへのアクセスを選択的に許可できます。

  • Azure サービスおよびリソースにこのサーバーへのアクセスを許可する: 有効な場合、Azure 境界内の他のリソース (たとえば、Azure Virtual Machine) が SQL Database にアクセスできます
  • IP ファイアウォール規則:この機能を使用すると、特定の IP アドレスからの (たとえば、オンプレミスのマシンからの) 接続を明示的に許可できます

また、次の方法で仮想ネットワークからデータベースへのプライベート アクセスを許可することもできます。

  • 仮想ネットワーク ファイアウォール規則: この機能を使用して、Azure 境界内の特定の仮想ネットワークからのトラフィックを許可します
  • Private Link: この機能を使って、特定の仮想ネットワーク内に Azure での論理サーバー用のプライベート エンドポイントを作成します

重要

この記事は、SQL Managed Instance には適用され "ません"。 ネットワーク構成の詳細については、Azure SQL Managed Instance への接続に関するページを参照してください。

これらのアクセス制御とその機能の概要については、以下のビデオをご覧ください。

Azure サービスを許可する

Azure portal から新しい論理サーバーを作成するとき、[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] は、既定ではオフになっており、有効ではありません。 この設定は、パブリック サービス エンドポイントを使用した接続が許可されている場合に表示されます。

この設定は、次のように、論理サーバーを作成した後で [ネットワーク] の設定で変更することもできます。

Screenshot of manage server firewall

[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] を有効にすると、サーバーによって Azure 境界内のすべてのリソースからの通信が許可されます。これは、サブスクリプションの一部である場合もあれば、一部でない場合もあります。

多くの場合、この設定を有効にすると、ほとんどのお客様が望むよりも許容範囲が広くなっています。 この設定をオフに設定し、より制限の厳しい IP ファイアウォール規則または仮想ネットワーク ファイアウォール規則に置き換えてもかまいません。

ただし、その場合、仮想ネットワークの一部ではない Azure の仮想マシンで実行され、そのため Azure IP アドレスを介してデータベースに接続される次の機能に影響があります。

Import Export Service

[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] が有効になっていない場合、インポート/エクスポート サービスは機能しません。 ただし、Azure VM から SqlPackage を手動で実行するか、DACFx API を使用してコード内で直接エクスポートを実行することにより、この問題を回避することができます。

データ同期

[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] を有効にせずにデータ同期機能を使用するには、ハブ データベースをホストしているリージョンの SQL サービス タグから IP アドレスを追加する、個々のファイアウォール規則エントリを作成する必要があります。 これらのサーバーレベルのファイアウォール規則を、ハブメンバーの両方のデータベース (異なるリージョンに存在する可能性がある) をホストするサーバーに追加します。

次の PowerShell スクリプトを使用して、米国西部リージョンの SQL サービス タグに対応する IP アドレスを生成します。

PS C:\>  $serviceTags = Get-AzNetworkServiceTag -Location eastus2
PS C:\>  $sql = $serviceTags.Values | Where-Object { $_.Name -eq "Sql.WestUS" }
PS C:\> $sql.Properties.AddressPrefixes.Count
70
PS C:\> $sql.Properties.AddressPrefixes
13.86.216.0/25
13.86.216.128/26
13.86.216.192/27
13.86.217.0/25
13.86.217.128/26
13.86.217.192/27

ヒント

Location パラメーターを指定しても、Get-AzNetworkServiceTag は SQL サービス タグのグローバル範囲を返します。 それを必ずフィルターに掛けて、同期グループによって使用されるハブ データベースをホストするリージョンを見つけます

PowerShell スクリプトの出力は、クラスレス ドメイン間ルーティング (CIDR) 表記であることに注意してください。 これは、次のように Get-IPrangeStartEnd.ps1 を使用して、開始と終了の IP アドレスの形式に変換する必要があります。

PS C:\> Get-IPrangeStartEnd -ip 52.229.17.93 -cidr 26
start        end
-----        ---
52.229.17.64 52.229.17.127

この追加 PowerShell スクリプトを使用し、すべての IP アドレスを CIDR から開始と終了の IP アドレスの形式に変換できます。

PS C:\>foreach( $i in $sql.Properties.AddressPrefixes) {$ip,$cidr= $i.split('/') ; Get-IPrangeStartEnd -ip $ip -cidr $cidr;}
start          end
-----          ---
13.86.216.0    13.86.216.127
13.86.216.128  13.86.216.191
13.86.216.192  13.86.216.223

これで、これらを個別のファイアウォール規則として追加し、[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] 設定を無効にすることができます。

IP ファイアウォール規則

IP ベースのファイアウォールは、Azure の論理サーバーの機能であり、明示的にクライアント マシンの IP アドレスを追加するまで、サーバーへのすべてのアクセスを遮断します。

仮想ネットワーク ファイアウォールの規則

サーバー ファイアウォールでは、IP 規則だけでなく、"仮想ネットワーク規則" を定義することもできます。 詳細については、Azure SQL Database の仮想ネットワーク サービス エンドポイントと規則に関する記事をご覧ください。

Azure のネットワーク用語

仮想ネットワーク ファイアウォール規則について調べる際には、次の Azure のネットワーク用語に注意してください

仮想ネットワーク: ご自分の Azure サブスクリプションに仮想ネットワークを関連付けることができます

サブネット: 仮想ネットワークにはサブネットが含まれます。 保持している任意の Azure 仮想マシン (VM) がサブネットに割り当てられます。 1 つのサブネットには、複数の VM や他のコンピューティング ノードが含まれる場合があります。 お使いの仮想ネットワークの外部にあるコンピューティング ノードは、アクセスを許可するようにセキュリティを構成しない限り、お使いの仮想ネットワークにはアクセスできません。

仮想ネットワーク サービス エンドポイント:仮想ネットワーク サービス エンドポイントは、プロパティ値に 1 つ以上の正式な Azure サービスの種類名が含まれるサブネットです。 この記事では、SQL Database という名前の Azure サービスを参照する Microsoft.Sql という種類名に注目します。

仮想ネットワーク規則: お使いのサーバーの仮想ネットワーク規則は、サーバーのアクセス制御リスト (ACL) に記載されているサブネットです。 SQL Database のデータベースの ACL に含まれるためには、サブネットに Microsoft.Sql という種類名が含まれている必要があります。 仮想ネットワーク規則は、サブネット上にあるどのノードからの通信も許可するように、お使いのサーバーに指示します。

IP 規則と仮想ネットワーク ファイアウォールの規則

Azure SQL Database のファイアウォールでは、SQL Database への通信が許可される IP アドレス範囲を指定できます。 この方法は、Azure プライベート ネットワークの外部にある安定した IP アドレスに適しています。 ただし、Azure プライベート ネットワーク内の仮想マシン (VM) では、"動的" IP アドレスが構成されます。 VM を再起動したときに動的 IP アドレスが変化し、その結果 IP ベースのファイアウォール規則が無効になることがあります。 運用環境では、ファイアウォール規則に動的 IP アドレスを指定することは、賢明ではありません。

この制限は、VM の "静的" IP アドレスを取得することで回避できます。 詳細については、「Azure portal を使用して静的パブリック IP アドレスを持つ仮想マシンを作成する」を参照してください。 ただし、静的 IP の方法は管理が困難になる場合があり、大規模に実行した場合、コストがかかります。

仮想ネットワーク規則は、対象の VM を含む特定のサブネットからのアクセスを確立および管理するためのより簡単な代替手段です。

Note

サブネット上に SQL Database を保持することは、まだできません。 サーバーが仮想ネットワーク内のサブネット上のノードになった場合、仮想ネットワークはお使いの SQL Database と通信できます。 この場合、仮想ネットワーク規則や IP ルールがなくても、VM は SQL Database と通信できます。

プライベート リンクを使用すると、プライベート エンドポイント経由でサーバーに接続できます。 プライベート エンドポイントは、特定の仮想ネットワークおよびサブネット内のプライベート IP アドレスです。

次のステップ