---
title: "Azure SQL ServerおよびWebアプリのIPホワイトリスト"
slug: "ip-whitelisting-for-azure-sql-server-and-web-apps"
abstract: "IPホワイトリストを使って、Azure SQLサーバーやAzureウェブアプリへのアクセス権を管理しましょう。"
---
# Azure SQL ServerおよびWebアプリのIPホワイトリスト

Sitecore on AzureはAzure Web AppおよびAzure SQLサーバー技術を使用しています。IPホワイトリストは、特定のIPアドレスからサービスにアクセスするコンピュータに対してAzure Web AppsおよびSQLサーバーリソースへのアクセスを提供します。同時に、未指定のIPアドレスからの不正アクセスを試みるコンピュータのアクセスをブロックします。このトピックでは、考慮事項、Sitecore 9.0.xのIPホワイトリスト設定、およびSQLサーバーファイアウォールのIPホワイトリスト設定について説明します。

## 考慮事項

Azure SQL ServerやWebアプリのIPホワイトリスト設定をする前に、以下の点を考慮してください。

-   Azure Web Appsサービスは静的IPを提供していません。しかし、MicrosoftはバックエンドでIPアドレスを変更する前に約90日前の通知を提供しています。Sitecoreは、当社の事前の知らないうちにIPアドレスが変更される技術的なケースを保証することはできません。例えば、App Serviceプランの拡大やアプリケーションを別のプランから別のプランへ移動させると、IPアドレスが変更されることがあります。
    
-   Microsoftは、Web AppsとAzure App Services製品の他のテナント間でアウトバウンドIPアドレスを共有できます。つまり、他の加入者が所有するAzureテナントが、Sitecore Webアプリケーションに関連付けられたAzureのアウトバウンドIPアドレスをホワイトリストに登録している場合、MLabクラスターなどの外部リソースにアクセスする可能性が理論上はわずかに存在します。
    
    非静的で非一意なIPアドレスに伴う潜在的な影響は比較的小さいです。それでもAzureは、静的で一意なIPアドレスとその他の標準機能を備えた孤立したホスティング環境([App Service Environment](https://docs.microsoft.com/en-us/azure/app-service/environment/app-service-app-service-environment-intro))を提供しています。
    
-   ウェブアプリケーションの[サービスプランの変更](https://peter.intheazuresky.com/2016/02/26/azure-web-apps-outgoing-ip-questionanswer/)(スケーリングアップやアウトなど)は、Web Appsが新しいアウトバウンドIPアドレスを取得する原因となることがあります。これによりIPホワイトリスト設定が無効になり、旧IPアドレスを参照することになります。
    

## Sitecore 9.0.xのIPホワイトリストの設定

特定のウェブアプリケーションのアクセスを指定されたIPアドレスに制限するには、ウェブアプリケーションのメニューから可能です。ただし、特定のウェブアプリケーションのIPホワイトリストを設定するには、**設定**、**ネットワーク**、<ウェブ*アプリの概要ページ*\>から行ってください。**IP制限**の「**IP制限の設定**」をクリックします。IPアドレスやIPアドレス範囲を指定すると、サブネットマスクを指定することでルールを追加できます。

![Configure IP restrictions](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/92/managed-cloud/images/ConfigureIPRestricitons.JPG)

Azure Web AppsやオンプレミスのASP.Netアプリケーション(特にSitecore 9トポロジー)などのSitecoreインスタンスは、設定ファイル内の接続文字列で互いを参照し合います。つまり、特定のSitecoreインスタンスでIPホワイトリストを有効にする場合、そのSitecoreインスタンスのアウトバウンドIPアドレス(および参照される*すべての*インスタンス)もホワイトリストに登録しなければなりません。

例えば、コンテンツ配信の役割が3つのSitecoreインスタンス(xConnectコレクション、xDB参照データ、マーケティングオートメーションなど)を参照している場合、3つのインスタンスすべてでコンテンツ配信インスタンスのアウトバウンドIPアドレスをホワイトリストに登録しなければなりません。

インスタンスが持つコンポーネント参照は、トポロジーやサイズなどの要因によって変わります。Sitecore Managed Cloud Azure上で異なるサイズのSitecore製品やトポロジーを提供しています。アーキテクチャやスケーリング特性の違いにより、これらのコンポーネント参照や接続文字列は製品ごとに異なる場合があります。

GetConnectionString.ps1PowerShellスクリプトを使ってAzure上のSitecoreインスタンスのコンポーネント参照を見つけ、前述のIPホワイトリストを適用できます。  

PowerShellスクリプトは以下のパラメータの値を必要とします:

-   Resource Group Name\- Managed Cloudセットを含むリソースグループの名前。
    
    Subscription ID\- リソースグループを含むAzureサブスクリプションのGUID
    

このスクリプトは以下の例に似たJSONコードを生成します:

{
 "test-whitelisting-9x-131490-cm": {
"ReferencedWebAppsComponents": 
 { "ConnectionStringName": "xconnect.collection", "WebAppUrl": "https://test-whitelisting-9x-131490-xc-search.azurewebsites.net", "WebAppName": "test-whitelisting-9x-131490-xc-search"
 },
 { "ConnectionStringName": "xdb.referencedata.client", "WebAppUrl": "https://test-whitelisting-9x-131490-xc-refdata.azurewebsites.net", "WebAppName": "test-whitelisting-9x-131490-xc-refdata"
 },
 { "ConnectionStringName": "reporting.apikey", "WebAppUrl": "https://test-whitelisting-9x-131490-rep.azurewebsites.net", "WebAppName": "test-whitelisting-9x-131490-rep"
 },
 { "ConnectionStringName": "xdb.marketingautomation.reporting.client", "WebAppUrl": "https://test-whitelisting-9x-131490-ma-rep.azurewebsites.net", "WebAppName": "test-whitelisting-9x-131490-ma-rep"
 },
 { "ConnectionStringName": "xdb.marketingautomation.operations.client", "WebAppUrl": "https://test-whitelisting-9x-131490-ma-ops.azurewebsites.net", "WebAppName": "test-whitelisting-9x-131490-ma-ops"
 }
 ,
 "WebAppName": "test-whitelisting-9x-131490-cm",
 "OutboundIpAddresses":"52.230.1.186,52.230.15.158,52.230.7.174,52.230.11.232,52.230.7.87"
}

この例は完全な出力ファイルの一部を示しています。Sitecore製品やトポロジーによって、出力ファイル内のリソース数は大きく異なる場合があります。したがって、コンポーネントを参照しているすべての役割はホワイトリストに含まれます。

この例では、Content Managementの役割が他の5つのインスタンスを参照しています。つまり、5つのインスタンスすべてでContent ManagementのアウトバウンドIPアドレスをホワイトリストに登録する必要があります。

この具体的な例は、すべてのコンポーネントがAzure上でホストされているSitecore製品に関するものです。xDBのような他のトポロジーの役割の中には、Azureやオンプレミスサーバー上でインスタンスをホストするものもあります。その場合、Azureであれオンプレミスサーバーであれ、その特定のコンポーネントのIPアドレスをホワイトリストに登録しなければなりません。

xDBの場合、オンプレミスのXMコンテンツ管理ロールはAzure上でホストされている*xdb.referencedata.client*の役割を参照します。したがって、*xdb.referencedata.client* Azure Webアプリで、*Content Management*役割をホストしているサーバーのIPアドレスをホワイトリストに登録する必要があります。「[AzureのSitecoreのxDB設定](https://doc.sitecore.com/xp/en/developers/93/sitecore-experience-manager/configure-sitecore-for-xdb-on-azure.html)」では、Managed Cloud xDBセットの*Content Delivery*と*Content Management*役割の設定方法を学べます。

> !注reporting.apikey接続文字列は、Sitecore *Reporting*ロールが受信リクエストを認証するために使用するキーに対応します。Reporting Webアプリでは、reporting.apikey接続文字列を参照するすべてのSitecoreロールのIPアドレスをホワイトリストに登録しなければなりません。

## SQLサーバーのファイアウォール用IPホワイトリストの設定

AzureソリューションのSitecoreがMicrosoft SQL Serverを使用している場合、サーバー上のデータベースにアクセスする必要があるコンピュータのIPアドレスを明示的にホワイトリストに登録しなければなりません。そうでなければ、SQL Serverファイアウォールがすべてのアクセスを阻止してしまいます。SQL Serverファイアウォールの権限やルールは、以下のいずれかの方法で設定できます:

-   **Azureサービスへのアクセスを許可**する - これにより、どのAzureリソースでもファイアウォール経由でアクセスできます。これには、他の組織が所有するサブスクリプションにあるAzureリソースも含まれます。
    
-   **Azureサービスへのアクセスを無効**にする - このオプションでは、SQLサーバーへのアクセスを必要とするAzure上のコンピュータやリソースに関連付けられたIPアドレスを明示的にホワイトリストに登録する必要があります。この手順はSitecoreのバージョンやトポロジーによって異なります。
    
-   **Azure SQL ServerファイアウォールのマシンIPアドレスを指定します**。これはAzure上のデータベースに接続するオンプレミスインスタンスのためです。サーバー Azure SQL、オンプレミスマシンのIPアドレスをホワイトリストに登録し、[AzureのxDBのSitecoreを設定し](https://doc.sitecore.com/xp/en/developers/93/sitecore-experience-manager/configure-sitecore-for-xdb-on-azure.html)なければなりません。Azure SQLサーバーファイアウォールには、クライアントインスタンスの接続文字列が参照するデータベースが含まれています。ここでクライアントのIPアドレスをホワイトリストに登録する必要があります。
    
-   **ホワイトリスト化リソース、特にWeb Apps on Azure**では、Azure上でSitecoreを実行する各ウェブアプリケーションSitecore、GetConnectionString.ps1PowerShellスクリプトを使ってデータベースのすべての接続文字列をリストアップします。スクリプトはJSONファイルでリストを生成し、以下のパラメータの値が必要です:  
    
    -   Resource Group Name\- Managed Cloudセットを含むリソースグループの名前。
    -   Subscription ID\- リソースグループを含むAzureサブスクリプションのGUID。
    
    PowerShellスクリプトは以下のJSONコードを生成します:
    
    "test9xbd-113010-rep": {
     "connectionStrings":
     
     {
     "name": "core",
    "initialcatalog": "test9xbd-113010-core-db",
    "datasource": "test9xbd-113010-sql.database.windows.net,1433"
     },
    "name": " master ",
    "initialcatalog": "test9xbd-113010-master-db",
    "datasource": "test9xbd-113010-sql.database.windows.net,1433"
     },
    "name": "web",
    "initialcatalog": " test9xbd-113010-web-db",
    "datasource": "test9xbd-113010-sql.database.windows.net,1433"
     },
    "name": "reporting",
    "initialcatalog": " test9xbd-113010-rep-db",
    "datasource": "test9xbd-113010-sql.database.windows.net,1433"
     },
     
    
    "OutboundIpAddresses": "104.43.16.94,104.43.20.5,104.43.13.79,207.46.235.213"
    
    このコードサンプルは、報告するWebアプリが参照しているSQLサーバーのデータベースへの接続文字列を一覧にしています。報告するWebアプリの送信IPアドレスはSQLサーバーのファイアウォールで指定する必要があります。そのためには:
    
    -   [Microsoft Azureファイアウォールのガイドライン](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-firewall-configure)に従い、IPホワイトリスト用のIPアドレスまたは開始・終了IPの範囲を指定します。
    -   [仮想ネットワークの設定。](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-vnet-service-endpoint-rule-overview) 仮想ネットワークのルールは、Azure SQLデータベースサーバーが仮想ネットワーク内の特定のサブネットから送信される通信を受け入れるかどうかを制御します。