1. Managed Cloudセキュリティ

Azure SQL ServerおよびWebアプリのIPホワイトリスト

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

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)を提供しています。

  • ウェブアプリケーションのサービスプランの変更(スケーリングアップやアウトなど)は、Web Appsが新しいアウトバウンドIPアドレスを取得する原因となることがあります。これによりIPホワイトリスト設定が無効になり、旧IPアドレスを参照することになります。

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

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

Configure IP restrictions

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設定」では、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を設定しなければなりません。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サーバーのファイアウォールで指定する必要があります。そのためには:

この記事を改善するための提案がある場合は、 お知らせください!