御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します

Service Connectorを使用してAzure App Serviceから他のリソースへの接続を簡単に構成する

Microsoft Build 2022 のアップデートでサービスコネクター(Service Connector)という機能がGAされたようです。AzureサービスからAzureサービスへの接続設定を簡単に構築してくれるサービスのようで実際に試してみたので紹介していきます。

Azureサービスの接続を簡単にできる機能 Service Connector が一般提供開始

以下公式発表の引用です。

本日、Azure でのサービス コネクタの一般提供を発表しました。Service Connector のシングルクリックまたはシングルコマンドのエクスペリエンスを使用して、Azure App Service、Azure Container Apps、Azure Spring Apps をデータベース、ストレージ、リアルタイム メッセージング サービスにシームレスに接続できます。また、各接続のさまざまな側面の接続正常性状態も取得します。 Service Connector を使用すると、サービスの配線と接続管理の複雑さが解消されるため、ビジネス ロジックの構築に集中し、Azure にサービス間の構成を任せることができます。 Connecting services has never been so easy with Service Connector – now Generally Available - Microsoft Tech Community より引用 
App Service などのアプリケーションから他のサービスへの接続をAzurePortalのGUIから簡単にできるよって機能のようですね。

サービスコネクタを試してみた(Azure App Service → Azure Blob Storage)

早速 Azure App Service からサービスコネクタを試してみようと思います。
接続する App Service の画面まで移動し「設定」→「サービス コネクタ」を選択します。

「+Create」のボタンを押下すると、下記のような「Create connection」画面が表示されます。
Service typeが接続先のサービスですね。Azure App Serviceからよく接続する SQL Database、Cosmosを始めとするDatabase、Storage や Azure Key Vault になど様々なリソースが対応してますね。
今回はサービスコネクターを使用してAzure App Service から Azure Blob Storage へのアクセスを構成してみようと思います。「Basics」タブの設定は下記の画像のように行います。

続いて「Authentication」タブの設定では認証をどのように設定するかが聞かれます。今回は接続文字列を使用した認証の接続を構成しようと思うので「Connection String」を選択します。このとき、接続文字列をAzure Key Vault に格納するよう「Store Secret In Key Vault」のチェックをオンにしました。そうするとAzure App Service から Azure Key Vault へのサービスコネクタが必要になりますが、こちらも同じように作成してあげましょう(手順は省略します)。

続いて「Virtual Network」のタブでは接続先のサービスに接続するためのネットワーク接続方法が聞かれます。今回は「Configure firewall rules to enable to target service.」を選択します。こちらを選択すると接続の作成時に自動的にファイアウォールルールを設定してくれるみたいです。

最後に検証が行われて「Create」を押せば設定は終了です。設定作業はかなり簡単に終わった印象です。

どう変わったか見ていきましょう。
Azure Key Vault に移動してみるとシークレットができていて中を見ると先ほど指定したBlob Storageの接続文字列が自動的に格納されているようです。

Key Vault のアクセスポリシーを見てみると自動的に接続元の App Service がアクセスできるようにアプリケーションが追加されています。接続元の App Service を確認してみたらManaged Idも自動的にONになっていましたね。この設定がされたことで対象のApp Service から接続先のAzure Blob Storage への接続文字列の取得ができるように設定されていることがわかります。

最後に App Service のアプリケーション設定を見てみるとこちらも自動的にBlob Storageの接続文字列が格納されているKey Vaultの接続が構成されていますね。
あとは普段通りコード側でこちらの環境変数を使用して Key Vault の接続文字列の値を取得する処理をかいてあげるだけですね。ここまでの設定を一瞬でやってくれるとは便利ですね。
App Serviceのサービスコネクターのページを開いてみると、作成した接続が一覧に表示されています。このリンクをクリックするとアクセス権のないディレクトリに飛ばされてエラーになるのですがここだけよくわかりませんでした。

公式ページに接続正常性状態も確認できるよって書いてあったと思うのですが、本当だったらここをクリックすると確認できるとかなのでしょうか...

サービスコネクタを使ってみた感想

ご紹介したとおり、かなり簡単にサービスを構成できましたね。機能としてはなくても大丈夫な機能でしたが、サービスの接続に関して設定めんどくさいなと思っていた部分がかなり簡略化された印象です。サービスコネクタを使うメリットとしては開発者が時間をかけずにサービスを構成できることはもちろん、手動で設定を行うことで外部からアクセス可能になるなどの設定をしてしまうリスクなども低減できそうですね。セキュリティ面でのメリットもありそうです。まさに痒い所に手が届く機能だと思いました。

参考ページ

techcommunity.microsoft.com

docs.microsoft.com