Azure SQL Managed Instance でプライベート ドメイン名を解決する
適用対象: Azure SQL Managed Instance
この記事では、Azure SQL Managed Instance によってプライベート ドメイン名が解決される方法について説明します。
概要
特定の状況では、パブリック DNS レコードに存在しないドメイン名を SQL Server データベース エンジンで解決することが必要です。 たとえば、次のシナリオにはプライベート ドメイン名が含まれる可能性があります。
- データベース メールを使ったメールの送信
- リンク サーバーを使ったリモート データ ソースへのアクセス
- Managed Instance リンクを使ったクラウドへのデータのレプリケート。
Azure SQL Managed Instance は、Azure のVirtual Network にデプロイされ、既定では Azure が提供する名前解決を使用してインターネット アドレスを解決します。
既定の名前解決のビヘイビアーを変更し、プライベート ドメイン名を解決できるようにするには、次のことができます。
- Azure プライベート DNS ゾーンを使う: Azure プライベート DNS とは
- カスタム DNS サーバーを使う: Azure 仮想ネットワーク内のリソースの名前解決
重要
Virtual Networkの DNS サーバーを Azure からカスタムに、またはその逆に変更する場合は、そのVirtual Network内の SQL Managed Instance にも変更を通知する必要があります。 これについては、「SQL Managed Instance の更新」セクションで説明します。
Managed InstanceのVirtual Networkに Azure プライベート DNS ゾーンをアタッチまたは更新するだけの場合は、これを行う必要はありません。 これらの変更は、Managed Instanceに自動的に反映されます。
考慮事項
- ネットワーク制約 に記載されているように、Azure SQL Managed Instance で内部的に使われているドメイン名の解決を、オーバーライドまたは無効にしないように注意してください。 カスタム DNS サーバーは、パブリック ドメイン名を解決できるように常に構成します。
- メール サーバーやオンプレミスの SQL Server インスタンスなど、Azure SQL Managed Instance で解決するサービスには、必ず完全修飾ドメイン名 (FQDN) を使います。 それらのサービスがプライベート DNS ゾーン内にある場合でも、FQDN を使ってください。 たとえば、
smtp.contoso.com
を使用します。 同じVirtual Network内の SQL Server VM を参照するリンク サーバーを作成したり、レプリケーションを構成したりする場合でも、FQDN と既定の DNS サフィックスが必要です (例:SQLVM.internal.cloudapp.net
)。
SQL Managed Instances を更新する
DNS サーバーの設定が既存の SQL マネージド インスタンスを持つ仮想ネットワークで変更された場合、それらのインスタンスをホストする仮想クラスターおよび基盤となるマシン グループは、DNS 構成の変更と同期する必要があります。 仮想クラスターを更新すると、そこでホストされているすべての SQL Managed Instance に反映されます。
仮想クラスターの DNS サーバー設定を更新すると、仮想ネットワークに設定されたカスタム DNS サーバーの IP アドレスが、そのクラスター内のインスタンスの優先 DNS サーバーになります。 インスタンスは引き続き Azure の DNS リゾルバー アドレスをバックアップとして保持しますが、最初にカスタム DNS サーバーを使用してアドレスを解決するようになりました。
Azure portal を使って、既存の仮想クラスターの DNS サーバーの設定を更新します。
- Azure Portalを開きます。
- 構成しているサブネット内のManaged Instanceを含むリソース グループを開き、DNS サーバー設定を更新する [SQL Managed Instance] を選択します。
- [概要] で、インスタンスが属する 仮想クラスター を選択します。
- [DNS サーバー設定の同期] を選択して、クラスターを更新します。
構成を確認する
仮想クラスターの DNS サーバー設定を更新した後、そのクラスター内のManaged Instanceに対して有効になっていることを確認できます。 そうするための方法の 1 つは、ネットワーク インターフェイスで現在構成されている DNS サーバーの一覧を出力する SQL Server エージェント ジョブ を作成して実行することです。
マネージド インスタンスのネットワーク インターフェイスで構成されている DNS サーバーの一覧を表示するには。
- SQL Server Management Studio を起動します。
- DNS 設定を更新したクラスター内のManaged Instanceに接続します。
- オブジェクト エクスプローラー で、SQL Server エージェント を展開します。
- [ジョブ] を右クリックし、[新しいジョブ...] を選択します。
- [全般] で、ジョブの名前を書き込みます (例:「DNS 設定の確認」)。
- [手順] で [新規...] を選択します。
- ステップの名前を書き込みます (例:「実行」)。
- [TYPE] を PowerShell に設定します。
- [コマンド] で、次のコマンドをペーストします。
Get-DnsClientServerAddress
- [OK] を選択し、次に[OK] を選択して両方のダイアログ ウィンドウを閉じます。
- オブジェクト エクスプローラー で、作成した[ジョブ]を右クリックして、[ステップ...でジョブを開始] を選択します。ジョブが実行されます。
- ジョブが終了したら、再度右クリックし、[履歴の表示] を選択します。
- [ログ ファイルの概要] で、ジョブを展開し、その下の最初で唯一のステップを選択します。
- [選択された行の詳細:] で、コマンドの出力を確認し、DNS サーバーの IP アドレスが含まれていることを確認します。
アクセス許可
仮想ネットワーク全体で DNS サーバーの構成を同期するユーザーは、次のいずれかの条件を満たしている必要があります。
- サブスクリプション共同作成者ロールのメンバーである
Microsoft.Sql/virtualClusters/updateManagedInstanceDnsServers/action
アクセス許可を持つカスタム ロールが割り当てられている。
次の手順
- 概要については、「Azure SQL Managed Instance とは」をご覧ください
- マネージド インスタンスによるトラフィックの解決と転送の方法については、「Azure SQL Managed Instance の接続アーキテクチャ」をご覧ください。
- 詳細については、「SQL Managed Instance 仮想クラスターのアーキテクチャ」を参照してください。
- Azure 仮想ネットワークでの DNS の解決について詳しくは、「Azure 仮想ネットワーク内のリソースの名前解決」をご覧ください。
- 新しいマネージド インスタンスの作成方法を紹介するチュートリアルが必要な場合、マネージド インスタンスの作成に関するページを参照してください。
- Managed Instance用のVirtual Networkの構成については、接続アーキテクチャ を参照してください。