Service Connector の内部構造
Service Connector は、Azure サービス間の接続を簡単に作成および管理する方法を提供するように設計された Azure 拡張リソース プロバイダーです。
Service Connector には、次の機能が用意されています。
- 1 つの Azure CLI コマンドで Azure サービスを接続するか、Azure portal を使用していくつかの手順で接続できます。
- クラウド ネイティブ アプリケーションで使用される、ますます増加するデータベース、ストレージ、リアルタイム サービス、状態、シークレット ストアをサポートします。
- ネットワーク設定と認証を構成し、接続環境変数またはプロパティを自動的に管理します。
- 接続を検証し、障害のある接続を修正するための提案を示します。
サービス接続の概要
"サービス接続" の概念は、Service Connector のリソース モデルで重要となる概念です。 サービス接続は、2 つのサービス間のリンクの抽象化を表します。 サービス接続には、次のプロパティがあります。
プロパティ | 説明 |
---|---|
接続名 | サービス接続の一意の名前。 |
ソース サービスの種類 | ソース サービスは、ターゲット サービスに接続できるサービスです。 通常は Azure コンピューティング サービスであり、Azure App Service、Azure Container Apps、Azure Functions、Azure Kubernetes Service (AKS)、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 などのターゲット サービスから接続文字列を取得するか、SQL 用 Azure Database、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] に移動します。 各接続を展開して、接続の構成を表示します。
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.url
、spring.datasource.username
、spring.datasource.password
になります。 Kafka 接続の設定は、spring.kafka.properties.bootstrap.servers
です。その他のクライアント:
- 最初の接続構成のキー名には、形式
<Cloud>_<Type>_<Name>
が使用されます。 たとえば、AZURE_STORAGEBLOB_RESOURCEENDPOINT
、CONFLUENTCLOUD_KAFKA_BOOTSTRAPSERVER
のようになります。 - ターゲット リソースの種類が同じ場合、2 番目の接続構成のキー名は形式
<Cloud>_<Type>_<Connection Name>_<Name>
になります。 たとえば、AZURE_STORAGEBLOB_CONN2_RESOURCEENDPOINT
、CONFLUENTCLOUD_KAFKA_CONN2_BOOTSTRAPSERVER
のようになります。
- 最初の接続構成のキー名には、形式
サービス ネットワーク ソリューション
Service Connector では、接続の作成時にユーザーが選択できる 3 つのネットワーク ソリューションが用意されています。 これらのソリューションは、リソース間のセキュリティで保護され効率的な通信を促進するように設計されています。
ファイアウォール: このソリューションでは公衆ネットワークを通じた接続が可能になり、コンピューティング リソースは、パブリック IP アドレスを持つターゲット リソースにアクセスします。 このオプションを選択すると、Service Connector は、ターゲット リソースのファイアウォール設定を検証し、ソース リソースのパブリック IP アドレスからの接続を許可するルールを追加します。 リソースのファイアウォールがすべての Azure リソースへのアクセスの許可をサポートしている場合、Service Connector により、この設定が有効にされます。 ただし、ターゲット リソースが既定で、すべてのパブリック ネットワーク トラフィックを拒否している場合、Service Connector はこの設定を変更しません。 この場合、別のオプションを選択するか、ネットワーク設定を手動で更新してから再試行する必要があります。
サービス エンドポイント: このソリューションは、コンピューティング リソースが、仮想ネットワークを介してターゲット リソースに接続できるようにし、接続トラフィックがパブリック ネットワークを通過しないようにします。 特定の前提条件が満たされた場合にのみ利用できます。
- コンピューティング リソースは、仮想ネットワーク統合を有効にしている必要があります。 Azure App Service の場合、これはネットワーキング設定で構成できます。Azure Spring Apps の場合、ユーザーはリソース作成段階中に Virtual Network のインジェクションを設定する必要があります。
- ターゲット サービスが、サービス エンドポイントをサポートしている必要があります。 サポートされているサービスの一覧については、「仮想ネットワーク サービス エンドポイント」を参照してください。
このオプションを選択すると、Service Connector は、仮想ネットワーク内のコンピューティング リソースのプライベート IP アドレスを、ターゲット リソースの Virtual Network ルールに追加し、ソース リソースのサブネット構成のサービス エンドポイントを有効にします。 ユーザーに十分なアクセス許可がない場合や、リソースの SKU またはリージョンでサービス エンドポイントがサポートされていない場合は、接続の作成は失敗します。
プライベート エンドポイント: このソリューションは、仮想ネットワークを介してリソースに接続するための推奨の方法であり、特定の前提条件が満たされた場合にのみ利用できます。
コンピューティング リソースは、仮想ネットワーク統合を有効にしている必要があります。 Azure App Service の場合、これはネットワーキング設定で構成できます。Azure Spring Apps の場合、ユーザーはリソース作成段階中に VNet インジェクションを設定する必要があります。
ターゲット サービスが、プライベート エンドポイントをサポートしている必要があります。 サポートされているサービスの一覧については、「プライベート リンク リソース」を参照してください。
このオプションを選択すると、Service Connector は、コンピューティング リソースまたはターゲット リソースでこれ以上の構成を実行しません。 代わりに、有効なプライベート エンドポイントの存在を検証し、見つからなかった場合には接続に失敗します。 利便性のため、ユーザーは、接続の作成時に Azure portal の [新しいプライベート エンドポイント] チェックボックスをオンにすることができます。 これを使用すると、Service Connector は自動的に、プライベート エンドポイントのすべての関連リソースを適切な順序で作成し、接続作成プロセスを単純化します。
サービス接続の検証
Service connector では、接続の検証時に次の要素を確認します。
- ソースおよびターゲットのリソースが存在する。
- ソース: 正しい接続情報が登録されている。
- ターゲット: 正しいネットワークとファイアウォールの設定が登録されている。
- ソースおよびターゲットのリソース: 正しい認証情報が登録されている。
接続の削除
サービス接続が削除されると、接続情報も削除されます。
次のステップ
Service Connector の詳細については、概念に関する以下の記事を参照してください。