App Service Environment のカスタム ドメイン サフィックス
App Service Environment は、App Service アプリを大規模かつ安全に実行するために完全に分離された専用の環境を提供する、Azure App Service の機能です。 App Service Environment の既定のドメイン サフィックスの DNS 設定では、アプリがその名前でのみアクセスできるように制限されることはありません。 カスタム ドメイン サフィックスは、内部ロード バランサー (ILB) App Service Environment 機能です。この機能を通じ、独自のドメイン サフィックスを使用して App Service Environment 内のアプリにアクセスできます。
App Service Environment がない場合は、App Service Environment v3 の作成方法に関するページを参照してください。
注意
この記事では、App Service Isolated v2 プランで使用される App Service Environment v3 の機能、利点、およびユースケースについて説明します。
カスタム ドメイン サフィックスは、App Service Environment によって使われるルート ドメインを定義します。 Azure App Service のパブリック版では、すべての Web アプリの既定のルート ドメインは azurewebsites.netです。 ILB App Service Environment の場合、既定のルート ドメインは appserviceenvironment.net です。 ただし、ILB App Service Environment はお客様の仮想ネットワークの内部にあるため、お客様は会社の内部仮想ネットワーク内で使用するのに適した既定のドメインに加えて、ルート ドメインを使用できます。 たとえば、Contoso Corporation という架空の企業では、Contoso の仮想ネットワーク内でのみ解決およびアクセス可能になるよう設計されたアプリに対して、internal-contoso.com という既定のルート ドメインが使用されます。 この仮想ネットワーク内のアプリにアクセスするには、APP-NAME.internal-contoso.com にアクセスします。
カスタム ドメイン サフィックスは App Service Environment 用です。 この機能は、App Service のカスタム ドメイン バインドとは異なります。 カスタム ドメイン バインドの詳細については、「既存のカスタム DNS 名を Azure App Service にマッピングする」を参照してください。
カスタム ドメイン サフィックスに使われる証明書に *.scm.CUSTOM-DOMAIN のサブジェクト代替名 (SAN) エントリが含まれる場合、scm サイトも APP-NAME.scm.CUSTOM-DOMAIN から到達できます。 基本認証を使用して、カスタム ドメイン経由でのみ scm にアクセスできます。 シングル サインオンは、既定のルート ドメインでのみ可能です。
以前のバージョンとは異なり、App Service Environment v3 上の App Services の FTPS エンドポイントには、既定のドメイン サフィックスを使用してのみアクセスできます。
カスタム ドメイン サフィックス エンドポイントへの接続では、TLS ベースの接続用の Server Name Indication (SNI) を使う必要があります。
前提条件
- App Service Environment v3 の ILB バリエーション。
- 有効な SSL/TLS 証明書は、.PFX 形式で Azure Key Vault に格納する必要があります。 App Service で証明書を使用する方法の詳細については、「Azure App Service で TLS/SSL 証明書を追加する」を参照してください。
- 証明書は 20 kb 未満である必要があります。
マネージド ID
マネージド ID は、SSL/TLS 証明書が格納されている Azure Key Vault に対する認証に使用されます。 現在、App Service Environment に関連付けられているマネージド ID がない場合は、マネージド ID を構成する必要があります。
システム割り当てまたはユーザー割り当てのマネージド ID のどちらかを使用できます。 ユーザー割り当てマネージド ID を作成するには、「ユーザー割り当てマネージド ID の管理」を参照してください。 システム割り当てマネージド ID を使用したいものの、App Service Environment でこの ID がまだ割り当てられない場合は、カスタム ドメイン サフィックス ポータルを使用すると効率的に作成できます。 または、App Service Environment の [ID] ページに移動し、そこでマネージド ID を構成して割り当てることができます。
システム割り当てマネージド ID を有効にするには、[状態] を [オン] に設定します。
ユーザー割り当てマネージド ID を割り当てるには、[追加] を選択し、使用するマネージド ID を見つけます。
App Service Environment にマネージド ID を 割り当てた後、マネージド ID に Azure Key Vault に対する十分なアクセス許可があることを確認します。 コンテナー アクセス ポリシーまたは Azure のロールベースのアクセス制御を使用できます。
コンテナー アクセス ポリシーを使用する場合、マネージド ID には少なくともキー コンテナーに対するシークレット "取得" のアクセス許可が必要です。
Azure のロールベースのアクセス制御を使用してキー コンテナーへのアクセスを管理する場合は、少なくとも "キー コンテナー シークレット ユーザー" ロールをマネージド ID に付与する必要があります。
Certificate
カスタム ドメイン サフィックスの証明書は、Azure Key Vault に格納する必要があります。 証明書は、.PFX 形式でアップロードし、20 kb 未満である必要があります。 現時点では、.PEM 形式の証明書はサポートされていません。 App Service Environment では、ユーザーが選んだマネージド ID を使って証明書が取得されます。
証明書は、選択したカスタム ドメイン名のワイルドカード証明書である必要があります。 たとえば、internal-contoso.com には *.internal-contoso.com に対応する証明書が必要です。 カスタム ドメイン サフィックスによって使われる証明書に、scm のサブジェクト代替名 (SAN) エントリ (例: *.scm.internal.contoso.com) が含まれている場合、カスタム ドメイン サフィックスを使って scm サイトを利用することもできます。
Azure Key Vault で証明書をローテーションする場合、App Service Environment は 24 時間以内に変更を取得します。
Key Vault へのネットワーク アクセス
キー コンテナーには、パブリックにアクセスすることも、App Service Environment がデプロイされているサブネットからアクセスできるプライベート エンドポイントを介してアクセスすることもできます。 プライベート エンドポイントを構成する方法については、「Key Vault を Azure Private Link と統合する」を参照してください。 パブリック アクセスを使用する場合は、App Service Environment の送信 IP アドレスからのトラフィックのみを受け入れるように、キー コンテナーをセキュリティで保護できます。 App Service Environment では、キー コンテナーにアクセスするときに、プラットフォームの送信 IP アドレスをソース アドレスとして使用されます。 IP アドレスは、Azure portal の [IP アドレス] ページで確認できます。
Azure portal を使用してカスタム ドメイン サフィックスを構成する
- Azure portal から、App Service Environment の [カスタム ドメイン サフィックス] ページに移動します。
- カスタム ドメイン名を入力します。
- App Service Environment に対して定義するマネージド ID を選択します。 システム割り当てまたはユーザー割り当てのマネージド ID のどちらかを使用できます。 まだ行っていない場合は、マネージド ID を構成できます。 マネージド ID は、カスタム ドメイン サフィックスのページから、マネージド ID 選択ボックスの [ID の追加] オプションを使って、直接構成できます。
- カスタム ドメイン サフィックスの証明書を選択します。
- キー コンテナーへのアクセスにプライベート エンドポイントを使用する場合、ネットワーク アクセスがプライベート エンドポイントに制限されるため、ポータル インターフェイスを使用して証明書を選択することはできません。 証明書の URL を手動で入力する必要があります。
- ページの最上部で [保存] を選択します。 構成の最新の更新を表示するには、ページを更新します。
- カスタム ドメイン サフィックスの構成が設定されるまで数分かかります。 ページの上部にある [最新の情報に更新] を選んで、状態を確認します。 バナーが最新の進行状況で更新されます。 完了すると、バナーにカスタム ドメイン サフィックスが構成されていることが示されます。
Azure Resource Manager を使用してカスタム ドメイン サフィックスを構成する
Azure Resource Manager テンプレートを使って App Service Environment のカスタム ドメイン サフィックスを構成するには、次のプロパティを含める必要があります。 前提条件を満たしていること、マネージド ID と証明書にアクセスできること、Azure Key Vault に対する適切なアクセス許可があることを確かめます。
テンプレートに割り当てる前に、マネージド ID を構成し、それが存在することを確認する必要があります。 マネージド ID の詳細については、マネージド ID の概要に関するページを参照してください。
ユーザー割り当てマネージド ID を使用する
"resources": [
{
"apiVersion": "2022-03-01",
"type": "Microsoft.Web/hostingEnvironments",
"name": ...,
"location": ...,
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/asev3-cdns-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ase-cdns-managed-identity"
}
},
"properties": {
"customDnsSuffixConfiguration": {
"dnsSuffix": "antares-test.net",
"certificateUrl": "https://kv-sample-key-vault.vault.azure.net/secrets/wildcard-antares-test-net",
"keyVaultReferenceIdentity": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/asev3-cdns-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ase-cdns-managed-identity"
},
"internalLoadBalancingMode": "Web, Publishing",
etc...
}
}
システム割り当てマネージド ID を使用する
"resources": [
{
"apiVersion": "2022-03-01",
"type": "Microsoft.Web/hostingEnvironments",
"name": ...,
"location": ...,
"identity": {
"type": "SystemAssigned"
}
"properties": {
"customDnsSuffixConfiguration": {
"dnsSuffix": "antares-test.net",
"certificateUrl": "https://kv-sample-key-vault.vault.azure.net/secrets/wildcard-antares-test-net",
"keyVaultReferenceIdentity": "systemassigned"
},
"internalLoadBalancingMode": "Web, Publishing",
etc...
}
}
Azure Resource Explorer を使用してカスタム ドメイン サフィックスを構成する
既存の ILB App Service Environment は、Azure Resource Explorer を使って更新することもできます。
- リソース エクスプローラーで、App Service Environment のノードに移動します (subscriptions>{サブスクリプション名}>resourceGroups>{リソース グループ名}>providers>Microsoft.Web>hostingEnvironments の順に移動)。 次に、更新する特定の App Service Environment を選択します。
- 上部のツール バーで [読み取り/書き込み] を選び、リソース エクスプローラーで対話形式の編集をできるようにします。
- [編集] ボタンを選び、Resource Manager テンプレートを編集できるようにします。
- 右側のペインの一番下までスクロールします。 [customDnsSuffixConfiguration] 属性は一番下にあります。
- [dnsSuffix]、[certificateUrl]、[keyVaultReferenceIdentity] の値を入力します。
- [ID] 属性に移動し、使用しているマネージド ID に関連付けられている詳細情報を入力します。
- 上部にある [PUT] ボタンを選び、App Service Environment に変更をコミットします。
- [customDnsSuffixConfiguration] の [provisioningState]は、構成の更新状態を示します。
DNS の構成
カスタム ドメイン サフィックスを使って App Service Environment 内のアプリにアクセスするには、独自の DNS サーバーを構成するか、カスタム ドメインの Azure プライベート DNS ゾーンで DNS を構成する必要があります。
独自の DNS サーバーを使用する場合は、以下のレコードを追加します。
- カスタム ドメインのゾーンを作成します。
- そのゾーン内で、* に App Service Environment で使用される受信 IP アドレスを指し示す A レコードを作成します。
- そのゾーン内で、@ に App Service Environment で使用される受信 IP アドレスを指し示す A レコードを作成します。
- 必要に応じて、App Service Environment によって使われるインバウンド IP アドレスを指し示す * A レコードを使って、scm サブドメイン用のゾーンを作成します
Azure DNS プライベート ゾーンで DNS を構成するには、次の操作を行ってください。
- カスタム ドメイン用に名前が付けられた Azure DNS プライベート ゾーンを作成します。 次の例では、カスタム ドメインは internal.contoso.com です。
- そのゾーン内で、* に App Service Environment で使用される受信 IP アドレスを指し示す A レコードを作成します。
- そのゾーン内で、@ に App Service Environment で使用される受信 IP アドレスを指し示す A レコードを作成します。
- Azure DNS プライベート ゾーンを App Service Environment の仮想ネットワークにリンクします。
- 必要に応じて、そのゾーン内で、*.scm に App Service Environment で使用される受信 IP アドレスを指し示す A レコードを作成します。
ドメインに DNS を構成する際の詳細情報については、「App Service Environmentを使用する」を参照してください。
Note
カスタム ドメイン サフィックス用の DNS を構成するだけでなく、App Service のすべての機能が期待どおりに機能するように、既定のドメイン サフィックス用に DNS を構成することも検討する必要があります。
アプリにアクセスする
App Service Environment のカスタム ドメイン サフィックスと DNS を構成すると、App Service Environment のいずれかの App Service アプリの [カスタム ドメイン] ページに移動し、アプリに割り当てられたカスタム ドメインの追加を確認できます。
ILB App Service Environment 上のアプリは、構成したカスタム ドメインまたは上記の画像にあるような既定のドメイン appserviceenvironment.net に移動することで、HTTPS 経由で安全にアクセスできます。 既定の App Service Environment ドメインとカスタム ドメインを使用してアプリにアクセスする機能は、App Service Environment v3 でのみサポートされる独自の機能です。
ただし、パブリック マルチテナント サービスで実行されているアプリと同様に、個々のアプリに対してカスタム ホスト名を構成してから、各アプリに固有の SNI TLS/SSL 証明書バインドを構成することもできます。
トラブルシューティング
App Service プラットフォームでは、App Service Environment でキー コンテナーにアクセスできるかどうか、および証明書が有効かどうかが定期的に確認されます。 マネージド ID、キー コンテナー、または App Service Environment のアクセス許可またはネットワーク設定が適切に設定されていないか、最近変更された場合、カスタム ドメイン サフィックスを構成することはできません。 スクリーンショットに示されている例のようなエラーが表示されます。 前提条件を調べて、必要なアクセス許可が構成されていることを確認してください。 また、証明書が機能低下または期限切れであることを App Service プラットフォームが検出した場合も、同様のエラー メッセージが表示されます。