Azure VM での Azure Search インデクサーから SQL Server への接続の構成Configure a connection from an Azure Search indexer to SQL Server on an Azure VM

インデクサーを使用した Azure Search への Azure SQL Database の接続」で説明したように、Azure VM 上の SQL Server (略して SQL Azure VM) に対してインデクサーを作成することは、Azure Search でサポートされています。ただし、最初にセキュリティ関連のいくつかの前提条件に対応する必要があります。As noted in Connecting Azure SQL Database to Azure Search using indexers, creating indexers against SQL Server on Azure VMs (or SQL Azure VMs for short) is supported by Azure Search, but there are a few security-related prerequisites to take care of first.

Azure Search から VM 上の SQL Server への接続は、パブリック インターネット接続です。Connections from Azure Search to SQL Server on a VM is a public internet connection. これらの接続のために通常従うすべてのセキュリティ手段は以下にも適用されます。All of the security measures you would normally follow for these connections apply here as well:

  • Azure VM 上の SQL Server インスタンスの完全修飾ドメイン名のために、認証機関プロバイダーから証明書を取得します。Obtain a certificate from a Certificate Authority provider for the fully qualified domain name of the SQL Server instance on the Azure VM.
  • 証明書を VM インストールし、この記事の手順を使用して、VM で暗号化された接続を有効にし、構成します。Install the certificate on the VM, and then enable and configure encrypted connections on the VM using the instructions in this article.

暗号化された接続を有効にするEnable encrypted connections

Azure Search には、パブリック インターネット接続経由のすべてのインデクサー要求のための暗号化されたチャネルが必要です。Azure Search requires an encrypted channel for all indexer requests over a public internet connection. このセクションでは、これを機能させるための手順を示します。This section lists the steps to make this work.

  1. 証明書のプロパティを調べて、サブジェクト名が VM の完全修飾ドメイン名 (FQDN) であることを確認します。Check the properties of the certificate to verify the subject name is the fully qualified domain name (FQDN) of the Azure VM. プロパティは、CertUtils などのツールまたは証明書スナップインを使用して表示できます。You can use a tool like CertUtils or the Certificates snap-in to view the properties. FQDN は、 Azure Portal で、VM サービス ブレードの [Essentials] セクションにある [パブリック IP アドレス/DNS 名ラベル]フィールドから入手できます。You can get the FQDN from the VM service blade's Essentials section, in the Public IP address/DNS name label field, in the Azure portal.

    • 新しい Resource Manager テンプレートを使用して作成された VM の場合、FQDN の形式は <your-VM-name>.<region>.cloudapp.azure.com です。For VMs created using the newer Resource Manager template, the FQDN is formatted as <your-VM-name>.<region>.cloudapp.azure.com
    • クラシック VM として作成された VM の場合、FQDN の形式は <your-cloud-service-name.cloudapp.net> です。For older VMs created as a Classic VM, the FQDN is formatted as <your-cloud-service-name.cloudapp.net>.
  2. レジストリ エディター (regedit) を使用して、証明書を使用するように SQL Server を構成します。Configure SQL Server to use the certificate using the Registry Editor (regedit).

    このタスクにはよく SQL Server 構成マネージャーが使用されますが、このシナリオでは使用できません。Although SQL Server Configuration Manager is often used for this task, you can't use it for this scenario. SQL Server 構成マネージャーでは、インポートされている証明書が検出されません。これは、Azure 上の VM の FQDN が、VM によって特定された FQDN と一致しないためです (VM は、ドメインをローカル コンピューターまたはそれが参加しているネットワーク ドメインとして識別します)。It won't find the imported certificate because the FQDN of the VM on Azure doesn't match the FQDN as determined by the VM (it identifies the domain as either the local computer or the network domain to which it is joined). 名前が一致しない場合は、regedit を使用して証明書を指定します。When names don't match, use regedit to specify the certificate.

    • regedit で、レジストリ キー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[MSSQL13.MSSQLSERVER]\MSSQLServer\SuperSocketNetLib\Certificate に移動します。In regedit, browse to this registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[MSSQL13.MSSQLSERVER]\MSSQLServer\SuperSocketNetLib\Certificate.

      [MSSQL13.MSSQLSERVER] の部分は、バージョンとインスタンス名によって異なります。The [MSSQL13.MSSQLSERVER] part varies based on version and instance name.

    • 証明書キーの値を、VM にインポートした SSL 証明書の拇印に設定します。Set the value of the Certificate key to the thumbprint of the SSL certificate you imported to the VM.

      拇印を取得する方法は複数ありますが、いくつかの方法は他の方法よりも優れています。There are several ways to get the thumbprint, some better than others. MMC の 証明書 スナップインからコピーする場合は、 このサポート記事で説明されているように非表示の先頭文字を含めてしまい、その結果、接続を試みたときにエラーが発生する可能性があります。If you copy it from the Certificates snap-in in MMC, you will probably pick up an invisible leading character as described in this support article, which results in an error when you attempt a connection. この問題を修正するための回避策はいくつかあります。Several workarounds exist for correcting this problem. 最も簡単な方法は、regedit のキー値フィールドで Backspace キーを押してから拇印の最初の文字を再入力して、先頭文字を削除することです。The easiest is to backspace over and then retype the first character of the thumbprint to remove the leading character in the key value field in regedit. また、別のツールを使用して拇印をコピーすることもできます。Alternatively, you can use a different tool to copy the thumbprint.

  3. サービス アカウントにアクセス許可を付与します。Grant permissions to the service account.

    SQL Server サービス アカウントに SSL 証明書の秘密キーに関する適切なアクセス許可が付与されていることを確認します。Make sure the SQL Server service account is granted appropriate permission on the private key of the SSL certificate. この手順を見過ごすと、SQL Server は起動されません。If you overlook this step, SQL Server will not start. このタスクには証明書スナップインまたは CertUtils を使用できます。You can use the Certificates snap-in or CertUtils for this task.

  4. SQL Server サービスを再起動します。Restart the SQL Server service.

VM で SQL Server への接続を構成するConfigure SQL Server connectivity in the VM

Azure Search に必要な、暗号化された接続を設定した後は、Azure VM 上の SQL Server に固有の追加の構成手順があります。After you set up the encrypted connection required by Azure Search, there are additional configuration steps intrinsic to SQL Server on Azure VMs. その構成手順をまだ実行していない場合は、以下のいずれかの記事を参照して構成を実行します。If you haven't done so already , the next step is to finish configuration using either one of these articles:

特に、各記事の、インターネット経由での接続に関するセクションを確認してください。In particular, review the section in each article for "connecting over the internet".

ネットワーク セキュリティ グループ (NSG) を構成するConfigure the Network Security Group (NSG)

外部から Azure VM にアクセスできるように、NSG および対応する Azure エンドポイントまたはアクセス制御リスト (ACL) を構成することはめずらしくありません。It is not unusual to configure the NSG and corresponding Azure endpoint or Access Control List (ACL) to make your Azure VM accessible to other parties. 独自のアプリケーション ロジックから SQL Azure VM に接続できるようにするために、この構成を既に実行している可能性があります。Chances are you've done this before to allow your own application logic to connect to your SQL Azure VM. Azure Search から SQL Azure VM への接続もこれと同じです。It's no different for an Azure Search connection to your SQL Azure VM.

以下のリンクでは、VM デプロイメントの NSG を構成する手順を説明しています。The links below provide instructions on NSG configuration for VM deployments. これらの手順を、IP アドレスに基づいて ACL および Azure Search エンドポイントに使用してください。Use these instructions to ACL an Azure Search endpoint based on its IP address.

注意

バックグラウンドの場合は、「 ネットワーク セキュリティ グループ (NSG) についてFor background, see What is a Network Security Group?

IP アドレスの指定ではいくつかの課題が生じる可能性がありますが、問題点と考えられる回避策を理解していれば簡単に解決できます。IP addressing can pose a few challenges that are easily overcome if you are aware of the issue and potential workarounds. 以降のセクションでは、ACL 内の IP アドレスに関する問題に対処するための推奨事項を説明します。The remaining sections provide recommendations for handling issues related to IP addresses in the ACL.

Search サービスの IP アドレスへのアクセスを制限するRestrict access to the search service IP address

SQL Azure VM をすべての接続要求に広く開放するのではなく、ACL で Search サービスの IP アドレスへのアクセスを制限することを強くお勧めします。We strongly recommend that you restrict the access to the IP address of your search service in the ACL instead of making your SQL Azure VMs wide open to any connection requests. IP アドレスは、Search サービスの FQDN ( <your-search-service-name>.search.windows.netなど) に ping を実行することで、簡単に確認できます。You can easily find out the IP address by pinging the FQDN (for example, <your-search-service-name>.search.windows.net) of your search service.

IP アドレスの変動の管理Managing IP address fluctuations

Search サービスに検索ユニットが 1 つ (1 つのレプリカと 1 つのパーティション) しかない場合は、日常的なサービスの再起動で IP アドレスが変更され、Search サービスの IP アドレスを含む既存の ACL が無効になることがあります。If your search service has only one search unit (that is, one replica and one partition), the IP address will change during routine service restarts, invalidating an existing ACL with your search service's IP address.

その後で生じる接続エラーを回避する方法の 1 つは、Azure Search で複数のレプリカと 1 つのパーティションを使用することです。One way to avoid the subsequent connectivity error is to use more than one replica and one partition in Azure Search. それによってコストは増加しますが、IP アドレスの問題も解決します。Doing so increases the cost, but it also solves the IP address problem. Azure Search では、複数の検索ユニットがあるときには IP アドレスが変更されません。In Azure Search, IP addresses don't change when you have more than one search unit.

2 つめの方法は、接続を失敗させた後で NSG 内の ACL を再構成することです。A second approach is to allow the connection to fail, and then reconfigure the ACLs in the NSG. 平均すると、IP アドレスは数週間おきに変更されると想定されます。On average, you can expect IP addresses to change every few weeks. 管理されたインデックス作成をめったに行わないお客様の場合は、この方法を実行できる可能性があります。For customers who do controlled indexing on an infrequent basis, this approach might be viable.

3 つめの実行可能な (しかしあまり安全ではない) 方法は、Search サービスがプロビジョニングされている Azure リージョンの IP アドレス範囲を指定することです。A third viable (but not particularly secure) approach is to specify the IP address range of the Azure region where your search service is provisioned. Azure リソースへのパブリック IP アドレスの割り当てに使用する IP アドレス範囲のリストは、「 Azure データセンターの IP アドレス範囲」で公開されています。The list of IP ranges from which public IP addresses are allocated to Azure resources is published at Azure Datacenter IP ranges.

Azure Search ポータルの IP アドレスを含めるInclude the Azure Search portal IP addresses

Azure Portal を使用してインデクサーを作成する場合は、作成時に、Azure Search ポータル ロジックから SQL Azure VM にアクセスできることも必要になります。If you are using the Azure portal to create an indexer, Azure Search portal logic also needs access to your SQL Azure VM during creation time. Azure Search ポータルの IP アドレスは、 stamp2.search.ext.azure.comに ping を実行すると確認できます。Azure search portal IP addresses can be found by pinging stamp2.search.ext.azure.com.

次の手順Next steps

これで構成が完了し、Azure VM 上 の SQL Server を Azure Search インデクサーのデータ ソースとして指定できるようになりました。With configuration out of the way, you can now specify a SQL Server on Azure VM as the data source for an Azure Search indexer. 詳細については、「 インデクサーを使用した Azure Search への Azure SQL Database の接続 」を参照してください。See Connecting Azure SQL Database to Azure Search using indexers for more information.