チュートリアル: Web アプリを サービス コネクタ でAzure App Configurationに接続する
[アーティクル] 10/16/2024
2 人の共同作成者
フィードバック
この記事の内容
次のいずれかの方法を使用して、Azure App Serviceで実行されている ASP.NET Core アプリをAzure App Configurationに接続する方法について説明します:
システム割り当てマネージド ID (SMI)
ユーザー割り当てマネージド ID (UMI)
サービス プリンシパル
接続文字列
このチュートリアルでは、Azure CLI を使用して以下のタスクを実了します:
Azure リソースの設定
Web アプリとApp Configuration間の接続を作成する
お客様のアプリをビルドして Azure App Service にデプロイします
前提条件
Azure へのサインイン
Azure CLI で az login
を実行して Azure にサインインします。
Azure リソースの設定
まず、Azure リソースを作成します。
次のサンプルリポジトリをクローンする:
git clone https://github.com/Azure-Samples/serviceconnector-webapp-appconfig-dotnet.git
Web アプリを Azure にデプロイする
次のステップに従って App Service を作成し、サンプル アプリをデプロイします。 サブスクリプション共同作成者または所有者のロールがあることを確認します。
アプリ サービスを作成し、システム割り当てマネージド ID を使用して App Config と対話するサンプル アプリをデプロイします。
# Change directory to the SMI sample
cd serviceconnector-webapp-appconfig-dotnet\system-managed-identity
# Create a web app
LOCATION='eastus'
RESOURCE_GROUP_NAME='service-connector-tutorial-rg'
APP_SERVICE_NAME='webapp-appconfig-smi'
az webapp up --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME
パラメーター
説明
例
場所
近くの場所を選択します。 場所を一覧表示するには、az account list-locations --output table
を使用します。
eastus
リソース グループ名
このリソース グループを使用して、このチュートリアルを完了するために必要なすべての Azure リソースを整理します。
サービス-コネクタ-チュートリアル-rg
App Service の名前
アプリ サービス名は、Azure 内のリソースの名前として使用され、またサーバー エンドポイント のフォームで、アプリの完全修飾ドメイン名を形成するためにも使用されますhttps://<app-service-name>.azurewebsites.com
。 この名前はAzure 全体で一意である必要があり、使用できる文字はA
-Z
、 0
-9
、 と -
のみです。
webapp-appconfig-smi
アプリ サービスを作成し、ユーザー割り当てマネージド ID を使用して App Config と対話するサンプル アプリをデプロイします。
# Change directory to the UMI sample
cd serviceconnector-webapp-appconfig-dotnet\user-assigned-managed-identity
# Create a web app
LOCATION='eastus'
RESOURCE_GROUP_NAME='service-connector-tutorial-rg'
APP_SERVICE_NAME='webapp-appconfig-umi'
az webapp up --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME
パラメーター
説明
例
場所
近くの場所を選択します。 場所を一覧表示するには、az account list-locations --output table
を使用します。
eastus
リソース グループ名
このリソース グループを使用して、このチュートリアルを完了するために必要なすべての Azure リソースを整理します。
サービス-コネクタ-チュートリアル-rg
App Service の名前
アプリ サービス名は、Azure 内のリソースの名前として使用され、またサーバー エンドポイント のフォームで、アプリの完全修飾ドメイン名を形成するためにも使用されますhttps://<app-service-name>.azurewebsites.com
。 この名前はAzure 全体で一意である必要があり、使用できる文字はA
-Z
、 0
-9
、 と -
のみです。
webapp-appconfig-umi
ユーザー割り当てマネージド ID を作成します。 出力を一時メモ帳に保存します。
az identity create --resource-group $RESOURCE_GROUP_NAME -n "myIdentity"
アプリサービス を作成し、サービス プリンシパルを使用して App Config と対話するサンプル アプリをデプロイします。
# Change directory to the service principal sample
cd serviceconnector-webapp-appconfig-dotnet\service-principal
# Create a web app
LOCATION='eastus'
RESOURCE_GROUP_NAME='service-connector-tutorial-rg'
APP_SERVICE_NAME='webapp-appconfig-sp'
az webapp up --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME
パラメーター
説明
例
場所
近くの場所を選択します。 場所を一覧表示するには、az account list-locations --output table
を使用します。
eastus
リソース グループ名
このリソース グループを使用して、このチュートリアルを完了するために必要なすべての Azure リソースを整理します。
サービス-コネクタ-チュートリアル-rg
App Service の名前
アプリ サービス名は、Azure 内のリソースの名前として使用され、またサーバー エンドポイント のフォームで、アプリの完全修飾ドメイン名を形成するためにも使用されますhttps://<app-service-name>.azurewebsites.com
。 この名前はAzure 全体で一意である必要があり、使用できる文字はA
-Z
、 0
-9
、 と -
のみです。
webapp-appconfig-sp
サービス プリンシパルを作成し、yourSubscriptionID
実際のサブスクリプション ID に 必ず置換してください。 出力を一時メモ帳に保存します。
az ad sp create-for-rbac --name myServicePrincipal --role Contributor --scopes /subscriptions/{yourSubscriptionID}/resourceGroups/$RESOURCE_GROUP_NAME
警告
Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で説明されている認証フローでは、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。
アプリ サービスを作成し、接続文字列を使用して App Config と対話するサンプル アプリをデプロイします。
# Change directory to the service principal sample
cd serviceconnector-webapp-appconfig-dotnet\connection-string
# Create a web app
LOCATION='eastus'
RESOURCE_GROUP_NAME='service-connector-tutorial-rg'
APP_SERVICE_NAME='webapp-appconfig-cs'
az webapp up --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME
パラメーター
説明
例
場所
近くの場所を選択します。 場所を一覧表示するには、az account list-locations --output table
を使用します。
eastus
リソース グループ名
このリソース グループを使用して、このチュートリアルを完了するために必要なすべての Azure リソースを整理します。
サービス-コネクタ-チュートリアル-rg
App Service の名前
アプリ サービス名は、Azure 内のリソースの名前として使用され、またサーバー エンドポイント のフォームで、アプリの完全修飾ドメイン名を形成するためにも使用されますhttps://<app-service-name>.azurewebsites.com
。 この名前はAzure 全体で一意である必要があり、使用できる文字はA
-Z
、 0
-9
、 と -
のみです。
webapp-appconfig-cs
Azure App Configuration 保存の作成
APP_CONFIG_NAME='my-app-config'
az appconfig create -g $RESOURCE_GROUP_NAME -n $APP_CONFIG_NAME --sku Free -l eastus
テスト構成ファイルをAzure App Configurationにインポートします。
システム割り当てマネージド ID を使用してテスト構成ファイルをAzure App Configurationにインポートします。
フォルダーに Cd を挿入する ServiceConnectorSample
App Configuration 保存に ./sampleconfigs.json テスト構成ファイルをインポートします。 Azure Cloud Shellを使用している場合は、コマンドを実行する前に sampleconfigs.json をアップロードします。
az appconfig kv import -n $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
ユーザー割り当てマネージド ID を使用してテスト構成ファイルをAzure App Configurationにインポートします。
フォルダーに Cd を挿入する ServiceConnectorSample
App Configuration 保存に ./sampleconfigs.json テスト構成ファイルをインポートします。 Azure Cloud Shellを使用している場合は、コマンドを実行する前に sampleconfigs.json をアップロードします。
az appconfig kv import -n $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
サービス プリンシパルを使用してテスト構成ファイルをAzure App Configurationにインポートします。
フォルダーに Cd を挿入する ServiceConnectorSample
App Configuration 保存に ./sampleconfigs.json テスト構成ファイルをインポートします。 Azure Cloud Shellを使用している場合は、コマンドを実行する前に sampleconfigs.json をアップロードします。
az appconfig kv import -n $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
警告
Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で説明されている認証フローでは、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。
接続文字列を使用してテスト構成ファイルをAzure App Configurationにインポートします。
フォルダーに Cd を挿入する ServiceConnectorSample
App Configuration 保存に ./sampleconfigs.json テスト構成ファイルをインポートします。 Azure Cloud Shellを使用している場合は、コマンドを実行する前に sampleconfigs.json をアップロードします。
az appconfig kv import -n $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
Web アプリをAzure App Configurationに接続する
Web アプリケーションとAzure App Configuration 保存の間に接続を作成します。
システム割り当てマネージド ID 認証を使用して、Web アプリケーションとAzure App Configuration 保存の間に接続を作成します。 この接続は、サービス コネクタ を介して行われます。
az webapp connection create appconfig -g $RESOURCE_GROUP_NAME -n $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_smi" --system-identity
system-identity
は、システム割り当てマネージド ID (SMI) 認証の型を指します。 サービス コネクタでは以下の様な、ユーザー割り当てマネージド ID (UMI)、接続文字列 (シークレット)、サービス プリンシパルなどの認証もサポートされています。
システム割り当てマネージド ID 認証を使用して、Web アプリケーションとAzure App Configuration 保存の間に接続を作成します。 この接続は、サービス コネクタ を介して行われます。
az webapp connection create appconfig -g $RESOURCE_GROUP_NAME -n $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_umi" --user-identity client-id=<myIdentityClientId> subs-id=<myTestSubsId>
user-identity
は、ユーザー割り当てマネージド ID 認証の型を指します。 サービス コネクタでは以下の様な、システム割り当てマネージド ID、接続文字列 (シークレット)、サービス プリンシパルなどの認証もサポートされています。
client-id
を検索するには、次の 2 つの方法があります:
Azure CLI に、az identity show -n "myIdentity" -g $RESOURCE_GROUP_NAME --query 'clientId'
を入力します。
Microsoft Azure portalで、前に作成したマネージド ID を開き、[概要] で [クライアント ID] 下 の値を取得します。
サービス プリンシパルを使い、Web アプリケーションとAzure App Configuration 保存の間に接続を作成します。 これは、サービス コネクタ を使用して行います。
az webapp connection create appconfig -g $RESOURCE_GROUP_NAME -n $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_sp" --service-principal client-id=<mySPClientId> secret=<mySPSecret>
service-principal
は、サービス プリンシパル認証の型を指します。 サービス コネクタでは以下の様な、システム割り当てマネージド ID(UMI)、ユーザー割り当てマネージド ID(UMI)、接続文字列 (シークレット)などの認証もサポートされています。
接続文字列を使い、Web アプリケーションとAzure App Configuration 保存の間に接続を作成します。 この接続は、サービス コネクタ を介して行われます。
az webapp connection create appconfig -g $RESOURCE_GROUP_NAME -n $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_cs" --secret
secret
は、接続文字列認証の型を参照します。 サービス コネクタでは以下の様な、システム割り当てマネージド ID、ユーザー割り当てマネージド ID、サービス プリンシパルなどの認証もサポートされています。
接続の検証
接続が機能しているかどうかを検査するには、ブラウザーから Web アプリ https://<myWebAppName>.azurewebsites.net/
に移動します。 Web サイトが起動すると、「Hello」が表示され、 Azure WebApp が 今ServiceConnector によってApp Configurationに接続されました」が表示されます。
しくみ
認証の型ごとに、サービス コネクタがバックグラウンドで管理するものを以下に示します。
サービス コネクタ によって接続構成が管理されます:
アプリケーションが Web アプリにアクセスし、App Configuration エンドポイントを取得できるように Web アプリAZURE_APPCONFIGURATION_ENDPOINT
を設定します。 サンプル コード にアクセスします。
Web アプリのシステム割り当てマネージド認証をアクティブ化し、App Configurationにデータ閲覧者ロールを許可して、アプリケーションが Azure.Identity の DefaultAzureCredential を使用してApp Configurationに対して認証できるようにします。 サンプル コード にアクセスします。
サービス コネクタ によって接続構成が管理されます:
アプリケーションが Web アプリにアクセスし、コード のApp Configuration エンドポイントを取得できるように Web アプリAZURE_APPCONFIGURATION_ENDPOINT
、AZURE_APPCONFIGURATION_CLIENTID
を設定します。
Web アプリのユーザー割り当てマネージド認証をアクティブ化し、App Configurationにデータ閲覧者ロールを許可して、Azure.Identity の DefaultAzureCredential を使用してアプリケーションがApp Configurationに対して認証できるようにします。 サンプル コード にアクセスします。
サービス コネクタ によって接続構成が管理されます:
アプリケーションが Web アプリにアクセスし、App Configuration エンドポイントを取得できるように Web アプリAZURE_APPCONFIGURATION_ENDPOINT
を設定します。 サンプル コード にアクセスします。
サービス プリンシパルの資格情報を WebApp AppSettingsAZURE_APPCONFIGURATION_CLIENTID
に保存します。 AZURE_APPCONFIGURATION_TENANTID
、AZURE_APPCONFIGURATION_CLIENTSECRET
そしてApp Configurationデータ閲覧者ロールをサービス プリンシパルに許可し、そのため、Azure.Identity ClientSecretCredential
からの使用によって、コード 内のApp Configurationに対してアプリケーションを認証できます。
サービス コネクタ によって接続構成が管理されます:
アプリケーションが Web アプリにアクセスし、App Configuration 接続文字列を取得できるように Web アプリAZURE_APPCONFIGURATION_CONNECTIONSTRING
を設定します。 サンプル コード にアクセスします。
Web アプリのシステム割り当てマネージド認証をアクティブ化し、App Configurationにデータ閲覧者ロールを許可して、アプリケーションが Azure.Identity の DefaultAzureCredential を使用してApp Configurationに対して認証できるようにします。 サンプル コード にアクセスします。
詳細については、「サービス コネクタ の内部 」を参照してください。
テスト (省略可能)
必要に応じて、次のテストを実行します:
App Configuration Microsoft Store内のキーSampleApplication:Settings:Messages
の値を更新します。
az appconfig kv set -n <myAppConfigStoreName> --key SampleApplication:Settings:Messages --value hello --yes
https://<myWebAppName>.azurewebsites.net/
に移動してページを更新して、Azure Web アプリに 移動します。 メッセージが 「hello」 に更新されていることがわかります。
リソースをクリーンアップする
完了したら、これらの Azure リソースを使用しなくなった場合は、az group delete
コマンドを実行して削除します。 このコマンドを使用すると、リソース グループとその中のすべてのリソースが削除されます。
az group delete -n <myResourceGroupName> --yes
次のステップ
Service Connector の詳細については、以下のチュートリアルに従ってください。