次の方法で共有


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

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

「クイック スタート: Azure SQL Database for Azure SQL Database と Azure Synapse Analytics 用の単一データベースを作成する」から論理サーバーを作成すると、結果は次の形式のパブリック エンドポイントになります:yourservername.database.windows.net

既定では、論理サーバーはセキュリティを確保するためにすべての接続を拒否します。 次の 1 つ以上のネットワーク アクセス制御を使用して、パブリック エンドポイント経由でデータベースへのアクセスを選択的に許可できます。

  • IP ベースのファイアウォール規則: この機能を使用すると、特定の IP アドレスからの接続を明示的に許可できます。 たとえば、オンプレミスのマシンから、または開始 IP アドレスと終了 IP アドレスを指定して、IP アドレスの範囲を指定できます。

  • Azure サービスおよびリソースにこのサーバーへのアクセスを許可する: 有効化すると、Azure 境界内にあるその他のリソースが SQL Database にアクセスできます。 たとえば、Azure Virtual Machine が SQL Database のリソースにアクセスできるようになります。

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

  • 仮想ネットワーク ファイアウォール規則: この機能を使用して、Azure 境界内の特定の仮想ネットワークからのトラフィックを許可します。

  • Private Link: この機能を使って、特定の仮想ネットワーク内に Azure での論理サーバー用のプライベート エンドポイントを作成します。

重要

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

IP ファイアウォール規則

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

ファイアウォール規則には、次の 2 種類があります。

  • サーバー レベルのファイアウォール規則: これらの規則は、サーバー上のすべてのデータベースに適用されます。 これらは、Azure portal、PowerShell、または sp_set_firewall_rule などの T-SQL コマンドを使用して構成できます。
  • データベース レベルのファイアウォール規則: これらの規則は個々のデータベースに適用され、sp_set_database_firewall_ruleなどの T-SQL コマンドを使用してのみ構成できます。

ファイアウォール規則の名前付けの制約を次に示します。

  • ファイアウォール規則名を空にすることはできません。
  • 次の文字を含めることはできません。 <, >, *, %, &, :, \\, /, ?.
  • ピリオド (.) で終えることはできません。
  • ファイアウォール規則の名前は 128 文字を超えることはできません。

これらの制約を満たしていないファイアウォール規則を作成しようとすると、エラー メッセージが表示され失敗します。 既存の IP ベースのファイアウォール規則に加えられた変更が有効になるまでに最大 5 分かかる場合があります。

Azure サービスを許可する

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

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

[サーバー ファイアウォール設定の管理] ページのスクリーンショット。

[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] を有効にすると、サーバーによって Azure 境界内のすべてのリソースからの通信が許可されます。これは、サブスクリプションの一部かどうかを問いません。 バックグラウンドで、 0.0.0.0の IP アドレスで開始および終了する特別なサーバー レベルのファイアウォール規則が追加されます。

多くの場合、この設定を有効にすると、ほとんどのお客様が望むよりも許容範囲が広くなっています。 この設定を解除して、より制限の厳しい IP ファイアウォール規則に置き換えるか、プライベート アクセス用のオプションを使用することができます。

重要

[Azure サービスおよびリソースにこのサーバーへのアクセスを許可する] をオンにすると、開始 IP アドレスと終了 IP アドレスが 0.0.0.0 の IP ベースのファイアウォール規則が追加されます。

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

インポートエクスポートサービス

[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 サービスおよびリソースにこのサーバーへのアクセスを許可する] 設定を無効にすることができます。

Sql サービス タグ

サービス タグは、セキュリティ規則およびクライアントから SQL Database へのルートで使用できます。 サービス タグは、ネットワーク セキュリティ グループ、Azure Firewall、およびユーザー定義ルートで、セキュリティ規則のソースまたは宛先フィールドで指定することによって使用できます。
Sql サービス タグは 、SQL Database で使用されているすべての IP アドレスで構成されます。 タグはリージョンごとにさらにセグメント化されます。 たとえば、Sql.WestUS では、米国西部の SQL Database で使用されるすべての IP アドレスが一覧表示されます。

Sql サービス タグは、[ゲートウェイ IP アドレス] に記載されている SQL Database への接続を確立するために必要な IP アドレスで構成されます。 さらに、サービス タグは、次のような機能で使用される SQL Database からの送信トラフィックにも関連付けられます:

SqlManagement サービス タグ

SqlManagement サービス タグは、SQL Database に対するコントロール プレーン操作に使用されます。

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

Azure SQL Database のサーバーに対して仮想ネットワーク サービス エンドポイントと規則を使用 すると、VM を含む特定のサブネットからのアクセスを確立および管理するより簡単な代替手段になります。

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