Azure SignalR Service のカスタム ドメインを構成する方法

Azure SignalR Service で提供される既定のドメインに加えて、カスタム DNS ドメインをサービスに追加することもできます。 この記事では、SignalR Service にカスタム ドメインを追加する方法について説明します。

Note

カスタム ドメインは Premium レベルの機能です。 Standard レベルのリソースは、ダウンタイムなしで Premium レベルにアップグレードできます。

カスタム ドメインを構成するには、次の手順を実行する必要があります。

  1. カスタム ドメイン証明書を追加する。
  2. DNS CNAME レコードを作成する。
  3. カスタム ドメインを追加する。

前提条件

  • Azure App Service またはサード パーティのレジストラーを介して登録されたカスタム ドメイン。
  • アクティブなサブスクリプションが含まれる Azure アカウント。
  • Azure リソース グループ。
  • Azure SignalR Service リソース。
  • Azure Key Vault インスタンス。
  • Key Vault インスタンスに格納されているカスタム ドメインの SSL 証明書。 「Key Vault 証明書の概要」を参照してください。
  • Azure DNS ゾーン。 (省略可能)

カスタム証明書を追加する

カスタム ドメインを追加する前に、カスタム SSL 証明書を追加する必要があります。 SignalR Service は、マネージド ID を介してキー コンテナーに格納されている証明書にアクセスします。

ドメイン証明書を追加するには、3 つの手順があります。

  1. SignalR Service でマネージド ID を有効にする。
  2. マネージド ID に、キー コンテナーへのアクセス権を付与する。
  3. SignalR Service にカスタム証明書を追加する。

SignalR Service でマネージド ID を有効にする

システム割り当てまたはユーザー割り当てマネージド ID のどちらかを使用できます。 この記事では、システム割り当てマネージド ID の使用について説明します。

  1. Azure portal で、SignalR Service リソースに移動します。

  2. 左側のメニューから [ID] を選択します。

  3. [システム割り当て済み] 表で、[状態][オン] に設定します。

    Screenshot of enabling managed identity.

  4. [保存] を選択し、システム割り当てマネージド ID を有効にするように求められたら [はい] を選択します。

ID が作成されると、オブジェクト (プリンシパル) ID が表示されます。 SignalR Service は、システム割り当てマネージド ID のオブジェクト ID を使用してキー コンテナーにアクセスします。 マネージド ID の名前は、SignalR Service インスタンスの名前と同じです。 次のセクションでは、名前またはオブジェクト ID を使用してプリンシパル (マネージド ID) を検索する必要があります。

マネージド ID に、キー コンテナーへのアクセス権を付与する

SignalR Service では、マネージド ID を使用してキー コンテナーにアクセスします。 マネージド ID に、キー コンテナーにアクセスするためのアクセス許可を付与する必要があります。

アクセス許可を付与する手順は、キー コンテナーのアクセス許可モデルとして、"コンテナーのアクセス ポリシー" と "Azure ロールベースのアクセス制御" のどちらを選択したかによって異なります。

キー コンテナーのアクセス許可モデルとしてコンテナーのアクセス ポリシーを使用する場合は、次の手順に従って新しいアクセス ポリシーを追加します。

  1. キー コンテナー リソースに移動します。

  2. 左側のメニューから [アクセス ポリシー] を選択します。

  3. [作成] を選択します。 Screenshot of Key Vault's access policy page.

  4. [アクセス許可] タブで、次を実行します。

    1. [シークレットのアクセス許可] で、[取得] を選択します。
    2. [証明書のアクセス許可] で、[取得] を選択します。
  5. [次へ] を選択して、[プリンシパル] タブに進みます。

    Screenshot of Permissions tab of Key Vault's Create an access policy page.

  6. 検索ボックスにマネージド ID のオブジェクト ID を入力します。

  7. 検索結果からマネージド ID を選択します。

  8. [確認および作成] タブを選択します。

    Screenshot of the Principal tab of Key Vault's Create an access policy page.

  9. [確認と作成] タブから、[作成] を選択します。

SignalR Service インスタンスのマネージド ID が、アクセス ポリシーの表に一覧表示されます。

Screenshot of Key Vault's Access policies page.

SignalR Service にカスタム証明書を追加する

SignalR Service にカスタム証明書を追加するには、次の手順に従います。

  1. Azure portal で、SignalR Service リソースに移動します。

  2. メニュー ペインで [カスタム ドメイン] を選択します。

  3. [カスタム証明書][追加] を選択します。

    Screenshot of custom certificate management.

  4. カスタム証明書の名前を入力します。

  5. [Key Vault から選択] を選択して、Key Vault 証明書を選択します。 次の [Key Vault ベース URI] を選択すると、[Key Vault シークレット名] が自動的に入力されます。 または、これらのフィールドを手動で入力することもできます。

  6. 証明書を特定のバージョンに固定する場合は、必要に応じて [Key Vault シークレット バージョン] を指定できます。

  7. [追加] を選択します。

Screenshot of adding a custom certificate.

SignalR Service によって証明書がフェッチされ、その内容が検証されます。 成功すると、証明書の [プロビジョニング状態][成功] になります。

Screenshot of an added custom certificate.

カスタム ドメインの CNAME レコードを作成する

カスタム ドメインの CNAME レコードを Azure DNS ゾーン内に、またはサード パーティのレジストラー サービスを使用して作成する必要があります。 CNAME レコードによって、カスタム ドメインから SignalR Service の既定のドメインへのエイリアスが作成されます。 SignalR Service では、このレコードを使用してカスタム ドメインの所有権が検証されます。

たとえば、既定のドメインが contoso.service.signalr.net で、カスタム ドメインが contoso.example.com の場合は、example.com に CNAME レコードを作成する必要があります。

CNAME レコードを作成したら、DNS 参照を実行して CNAME 情報を表示できます。 たとえば、linux dig (DNS 参照) コマンドからの出力は、次の出力のようになります。

 contoso.example.com. 0 IN CNAME contoso.service.signalr.net.

Azure DNS ゾーンを使用している場合、CNAME レコードを追加する方法については、DNS レコードの管理に関するページを参照してください。

Screenshot of adding a CNAME record in Azure DNS Zone.

他の DNS プロバイダーを使用している場合は、プロバイダーのガイドに従って CNAME レコードを作成します。

カスタム ドメインの追加

次に、カスタム ドメインを SignalR Service に追加します。

  1. Azure portal で、SignalR Service リソースに移動します。

  2. メニュー ペインで [カスタム ドメイン] を選択します。

  3. [カスタム ドメイン][追加] を選択します。

    Screenshot of custom domain management.

  4. カスタム ドメインの名前を入力します。

  5. カスタム ドメインの完全なドメイン名を入力します (contoso.com など)。

  6. このカスタム ドメインに適用されるカスタム証明書を選択します。

  7. [追加] を選択します。

    Screenshot of adding a custom domain.

カスタム ドメインの検証

カスタム ドメインを検証するには、正常性 API を使用できます。 正常性 API は、SignalR Service インスタンスの正常性状態を返すパブリック エンドポイントです。 正常性 API は https://<your custom domain>/api/health から利用できます。

cURL を使用する例を次に示します。

PS C:\> curl.exe -v https://contoso.example.com/api/health
...
> GET /api/health HTTP/1.1
> Host: contoso.example.com

< HTTP/1.1 200 OK

証明書エラーなしで状態コード 200 が返されます。

プライベート ネットワークで Key Vault にアクセスする

キー コンテナーにプライベート エンドポイントを構成した場合、SignalR Service はパブリック ネットワーク経由でキー コンテナーにアクセスできません。 共有プライベート エンドポイントを作成することで、SignalR Service にプライベート ネットワーク経由でのキー コンテナーへのアクセス権を付与できます。

共有プライベート エンドポイントを作成したら、前述の「SignalR Service にカスタム証明書を追加する」セクションの説明に従ってカスタム証明書を追加できます。

重要

Key Vault URI 内のドメインを変更する必要はありません。 たとえば、Key Vault ベース URI が https://contoso.vault.azure.net の場合、この URI を使用してカスタム証明書を構成します。

Key Vault ファイアウォール設定で、SignalR Service の IP アドレスを明示的に許可する必要はありません。 詳細については、「Key Vault プライベート リンク診断」を参照してください。

証明書のローテーション

カスタム証明書の作成時にシークレット バージョンを指定しない場合、Azure SignalR Service は Key Vault の最新バージョンを定期的にチェックします。 新しいバージョンが観察されると、自動的に適用されます。 通常、遅延は 1 時間以内です。

または、Key Vault の特定のシークレット バージョンにカスタム証明書をピン留めすることもできます。 新しい証明書を適用する必要がある場合は、シークレットバージョンを編集してから、カスタム証明書を事前に更新できます。

クリーンアップ

この記事で作成したリソースを使用する予定がない場合は、そのリソース グループを削除できます。

注意事項

リソース グループを削除すると、その中に含まれているすべてのリソースが削除されます。 指定したリソース グループにこの記事の範囲外のリソースが含まれている場合、それらも削除されます。

次のステップ