Service Connector の内部構造

Service Connector は、Azure サービス間の接続を簡単に作成および管理する方法を提供するように設計された Azure 拡張リソース プロバイダーです。

Service Connector には、次の機能が用意されています。

  • 1 つの Azure CLI コマンドで Azure サービスを接続するか、Azure portal を使用していくつかの手順で接続できます。
  • クラウド ネイティブ アプリケーションで使用される、ますます増加するデータベース、ストレージ、リアルタイム サービス、状態、シークレット ストアをサポートします。
  • ネットワーク設定と認証を構成し、接続環境変数またはプロパティを自動的に管理します。
  • 接続を検証し、障害のある接続を修正するための提案を示します。

サービス接続の概要

"サービス接続" の概念は、Service Connector のリソース モデルで重要となる概念です。 サービス接続は、2 つのサービス間のリンクの抽象化を表します。 サービス接続には、次のプロパティがあります。

プロパティ 説明
接続名 サービス接続の一意の名前。
ソース サービスの種類 ソース サービスは、ターゲット サービスに接続できるサービスです。 通常は Azure コンピューティング サービスであり、Azure アプリ Service、Azure Functions、Azure Container Apps、Azure Spring Apps が含まれます。
ターゲット サービスの種類 ターゲット サービスは、コンピューティング サービスの接続先となるバッキング サービスまたは依存関係サービスです。 Service Connector では、主要なデータベース、ストレージ、リアルタイム サービス、状態、シークレット ストアなど、さまざまなターゲット サービスの種類がサポートされます。
クライアントの種類 クライアントの種類とは、コンピューティング ランタイム スタック、開発フレームワーク、または特定の種類のクライアント ライブラリを意味し、接続環境変数またはプロパティの特定の形式が受け入れられます。
認証の種類 サービス接続で使用される認証の種類。 これには、シークレットまたは接続文字列、マネージド ID、またはサービス プリンシパルを指定できます。

ソース サービスとターゲット サービスでは、複数の同時サービス接続がサポートされます。つまり、各リソースを複数のリソースに接続できます。

Service Connector では、ソース インスタンスのプロパティ内の接続が管理されます。 接続の作成、取得、更新、削除は、Azure portal でソース サービス インスタンスを開くか、ソース サービスの CLI コマンドを使用して直接行います。

接続は、サブスクリプションまたはテナント間で行うことができます。つまり、ソースおよびターゲットのサービスが異なるサブスクリプションまたはテナントに属している可能性があります。 新しいサービス接続を作成すると、既定では、接続リソースはコンピューティング サービス インスタントと同じリージョン内に作成されます。

サービス接続の作成と更新

Service Connector では、次を含むサービス接続の作成または更新中に複数のタスクが実行されます。

  • ネットワークとファイアウォールの設定を構成する。 ネットワーク ソリューションの詳細 を確認します。

  • 接続情報の構成。 接続構成の詳細 を確認します。

  • 認証情報の構成。 Service Connector では、ソース サービスとターゲット サービスの間で使用可能なすべての認証の種類がサポートされます。

    • システム割り当てマネージド ID。 Service Connector では、ソース サービスでシステム割り当てマネージド ID がまだ有効になっていない場合は有効になり、ターゲット サービスの RBAC ロールがマネージド ID に付与されます。 ユーザーは、付与するロールを指定できます。
    • ユーザー割り当てマネージド ID。 Service Connector では、ソース サービスでユーザー割り当てマネージド ID がまだ有効になっていない場合は有効になり、ターゲット サービスの RBAC ロールがマネージド ID に付与されます。 ユーザーは、付与するロールを指定できます。
    • 接続文字列。 Service Connector は、ストレージ、Redis Cache などのターゲット サービスから接続文字列を取得するか、Azure Database for SQL、PostgreSQL などのユーザー入力に基づいて接続文字列を構築します。
    • サービス プリンシパル。 Service Connector は、ターゲット サービスの RBAC ロールをマネージド ID に付与します。 ユーザーは、付与するロールを指定できます。

    Service Connector は、対応する認証構成をソース サービスに保存します。たとえば、認証の種類がユーザー割り当てマネージド ID のストレージのAZURE_CLIENT_ID、AZURE_TENANT_ID、AZURE_STORAGEACCOUNT_ENDPOINTの保存などです。

  • 障害が発生した場合の接続ロールバックの作成または更新

このプロセス中に手順が失敗した場合、Service Connector により、前のすべての手順がロールバックされ、ソースおよびターゲットのインスタンスで初期設定が保持されます。

リソース プロバイダー

Microsoft.ServiceLinker は、Service Connector のリソース プロバイダーの名前です。

Azure portal でユーザーが [Service Connector] タブを開くとServiceLinker リソース プロバイダーがユーザーのアクティブなサブスクリプションに自動的に登録されます。 登録を生成したユーザーは、登録イベントのイニシエーターとして一覧表示されます。

Service Connector では、ユーザーはサブスクリプション間でサービスを接続できます。 ユーザーが、別のサブスクリプションに登録されたターゲット サービスへの接続を作成すると、Service Linker もまた、ターゲット サービスのサブスクリプションに登録されます。 接続を最終的に作成する前に、ユーザーが [確認と作成] タブを選択すると、この登録が行われます。

接続の構成

接続構成は、ソース サービスで設定されます。

Azure portal で、ソース サービスを開き、[Service Connector] に移動します。 各接続を展開して、接続の構成を表示します。

Screenshot of the Azure portal showing service connection details.

CLI では、list-configuration コマンドを使用して、接続の構成を取得します。

az webapp connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>
az spring connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>
az containerapp connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>

構成の名前付け規則

Service Connector では、接続の作成時に接続の構成が設定されます。 環境変数のキーと値のペアは、クライアントの種類と認証の種類に基づいて決定されます。 たとえば、Azure SDK とマネージド ID を使用するには、クライアント ID、クライアント シークレットなどが必要です。JDBC ドライバーを使用するには、データベース接続文字列が必要です。 以下の規則に従って、構成に名前を付けます。

  • Spring Boot クライアント: 各ターゲット サービスの Spring Boot ライブラリには、独自の名前付け規則があります。 たとえば、MySQL 接続の設定は、spring.datasource.urlspring.datasource.usernamespring.datasource.password になります。 Kafka 接続の設定は、spring.kafka.properties.bootstrap.servers です。

  • その他のクライアント:

    • 最初の接続構成のキー名には、形式 <Cloud>_<Type>_<Name> が使用されます。 たとえば、AZURE_STORAGEBLOB_RESOURCEENDPOINTCONFLUENTCLOUD_KAFKA_BOOTSTRAPSERVER のようになります。
    • ターゲット リソースの種類が同じ場合、2 番目の接続構成のキー名は形式 <Cloud>_<Type>_<Connection Name>_<Name> になります。 たとえば、AZURE_STORAGEBLOB_CONN2_RESOURCEENDPOINTCONFLUENTCLOUD_KAFKA_CONN2_BOOTSTRAPSERVER のようになります。

サービス ネットワーク ソリューション

Service Connector では、接続の作成時にユーザーが選択できる 3 つのネットワーク ソリューションが用意されています。 これらのソリューションは、リソース間のセキュリティで保護され効率的な通信を促進するように設計されています。

  1. ファイアウォール: このソリューションでは、パブリック ネットワークとコンピューティング リソースを介して接続し、パブリック IP アドレスを使用してターゲット リソースにアクセスできます。 このオプションを選択すると、Service Connector は、ターゲット リソースのファイアウォール設定を検証し、ソース リソースのパブリック IP アドレスからの接続を許可するルールを追加します。 リソースのファイアウォールがすべての Azure リソースへのアクセスを許可することをサポートしている場合、Service Connector はこの設定を有効にします。 ただし、ターゲット リソースが既定で、すべてのパブリック ネットワーク トラフィックを拒否している場合、Service Connector はこの設定を変更しません。 この場合、別のオプションを選択するか、ネットワーク設定を手動で更新してから再試行する必要があります。

  2. サービス エンドポイント: このソリューションは、コンピューティング リソースが、仮想ネットワークを介してターゲット リソースに接続できるようにし、接続トラフィックがパブリック ネットワークを通過しないようにします。 これは、特定の前提条件が満たされている場合にのみ使用できます。

    • コンピューティング リソースは、仮想ネットワーク統合を有効にしている必要があります。 Azure アプリ サービスの場合は、ネットワーク設定で構成できます。Azure Spring Apps の場合、ユーザーはリソースの作成段階で仮想ネットワークの挿入を設定する必要があります。
    • ターゲット サービスが、サービス エンドポイントをサポートしている必要があります。 サポートされているサービスの一覧については、「仮想ネットワーク サービス エンドポイント」を参照してください。

    このオプションを選択すると、Service Connector は仮想ネットワーク内のコンピューティング リソースのプライベート IP アドレスをターゲット リソースの仮想ネットワーク規則に追加し、ソース リソースのサブネット構成でサービス エンドポイントを有効にします。 ユーザーに十分なアクセス許可がない場合や、リソースの SKU またはリージョンでサービス エンドポイントがサポートされていない場合は、接続の作成は失敗します。

  3. プライベート エンドポイント: このソリューションは、仮想ネットワークを介してリソースに接続するための推奨の方法であり、特定の前提条件が満たされた場合にのみ利用できます。

  • コンピューティング リソースは、仮想ネットワーク統合を有効にしている必要があります。 Azure アプリ サービスの場合は、ネットワーク設定で構成できます。Azure Spring Apps の場合、ユーザーはリソースの作成段階で VNet インジェクションを設定する必要があります。

  • ターゲット サービスが、プライベート エンドポイントをサポートしている必要があります。 サポートされているサービスの一覧については、「プライベート リンク リソース」を参照してください。

    このオプションを選択すると、Service Connector は、コンピューティング リソースまたはターゲット リソースでこれ以上の構成を実行しません。 代わりに、有効なプライベート エンドポイントの存在を検証し、見つからなかった場合には接続に失敗します。 便宜上、ユーザーは接続の作成時に Azure portal で [新しいプライベート エンドポイント] チェック ボックスを選択できます。 これを使用すると、Service Connector はプライベート エンドポイントのすべての関連リソースを適切な順序で自動的に作成し、接続の作成プロセスを簡略化します。

サービス接続の検証

Service connector では、接続の検証時に次の要素を確認します。

  • ソースおよびターゲットのリソースが存在する。
  • ソース: 正しい接続情報が登録されている。
  • ターゲット: 正しいネットワークとファイアウォールの設定が登録されている。
  • ソースおよびターゲットのリソース: 正しい認証情報が登録されている。

接続の削除

サービス接続が削除されると、接続情報も削除されます。

次のステップ

Service Connector の詳細については、概念に関する以下の記事を参照してください。