Azure App Service에서 실행 중인 ASP.NET Core 앱을 Azure App Configuration에 다음 방법 가운데 하나를 사용하여 연결하는 방법을 알아봅니다:
- 시스템 할당 관리 ID(SMI)
- 사용자 할당 관리 ID(UMI)
- 서비스 주체
- 연결 문자열
이 자습서에서는 Azure CLI를 사용하여 다음 작업을 완료합니다:
- Azure 리소스 설정
- 웹앱과 App Configuration 간에 연결을 만드세요
- 앱을 빌드하고 Azure App Service에 배포하세요
Prerequisites
Azure에 로그인
Azure CLI에서 az login을(를) 실행하여 Azure에 로그인하세요.
Azure 리소스 설정
먼저 Azure 리소스를 만드세요.
다음 샘플 리포지토리를 복제하세요:
git clone https://github.com/Azure-Samples/serviceconnector-webapp-appconfig-dotnet.git
Azure에 웹앱 배포
다음 단계를 따라 App Service를 만들고 샘플 앱을 배포하세요. 구독 기여자 또는 소유자 역할이 있는지 확인합니다.
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
| Parameter |
Description |
Example |
| Location |
사용자에게 가까운 위치를 선택합니다.
az account list-locations --output table을 사용하여 위치를 나열합니다. |
eastus |
| Resource group name |
이 리소스 그룹을 사용하여 이 자습서를 완료하는 데 필요한 모든 Azure 리소스를 구성합니다. |
service-connector-tutorial-rg |
| 앱 서비스 이름 |
앱 서비스 이름은 Azure에서 리소스의 이름으로 사용되며 서버 엔드포인트의 형태로 앱에 대한 정규화된 도메인 이름을 형성합니다. 허용되는 문자는 A-Z, 0-9 및 -입니다. Azure는 임의의 문자열을 추가하여 모든 Azure에서 서버 엔드포인트를 고유하게 만듭니다. |
webapp-appconfig-smi |
App Service를 만들고 사용자 할당 관리 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
| Parameter |
Description |
Example |
| Location |
사용자에게 가까운 위치를 선택합니다.
az account list-locations --output table을 사용하여 위치를 나열합니다. |
eastus |
| Resource group name |
이 리소스 그룹을 사용하여 이 자습서를 완료하는 데 필요한 모든 Azure 리소스를 구성합니다. |
service-connector-tutorial-rg |
| 앱 서비스 이름 |
앱 서비스 이름은 Azure에서 리소스의 이름으로 사용되며 서버 엔드포인트의 형태로 앱에 대한 정규화된 도메인 이름을 형성합니다. 허용되는 문자는 A-Z, 0-9 및 -입니다. Azure는 임의의 문자열을 추가하여 모든 Azure에서 서버 엔드포인트를 고유하게 만듭니다. |
webapp-appconfig-umi |
사용자가 할당한 관리 ID를 만듭니다. 출력을 임시 메모장에 저장하세요.
az identity create --resource-group $RESOURCE_GROUP_NAME --name "myIdentity"
App Service를 만들고 서비스 주체를 사용해 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
| Parameter |
Description |
Example |
| Location |
사용자에게 가까운 위치를 선택합니다.
az account list-locations --output table을 사용하여 위치를 나열합니다. |
eastus |
| Resource group name |
이 리소스 그룹을 사용하여 이 자습서를 완료하는 데 필요한 모든 Azure 리소스를 구성합니다. |
service-connector-tutorial-rg |
| 앱 서비스 이름 |
앱 서비스 이름은 Azure에서 리소스의 이름으로 사용되며 서버 엔드포인트의 형태로 앱에 대한 정규화된 도메인 이름을 형성합니다. 허용되는 문자는 A-Z, 0-9 및 -입니다. Azure는 임의의 문자열을 추가하여 모든 Azure에서 서버 엔드포인트를 고유하게 만듭니다. |
webapp-appconfig-sp |
서비스 주체를 생성합니다. 실제 구독 ID로 yourSubscriptionID를 바꿔야 합니다. 출력을 임시 메모장에 저장하세요.
az ad sp create-for-rbac --name myServicePrincipal --role Contributor --scopes /subscriptions/{yourSubscriptionID}/resourceGroups/$RESOURCE_GROUP_NAME
Warning
사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 이 절차에서 설명하는 인증 흐름에는 애플리케이션에 대한 신뢰도가 매우 높아야 합니다. 다른 흐름에 없는 위험을 수반합니다. 이 흐름은 관리 ID와 같은 보다 안전한 다른 흐름을 실행할 수 없는 경우에만 사용되어야 합니다.
App Service를 만들고 연결 문자열을 사용해 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
| Parameter |
Description |
Example |
| Location |
사용자에게 가까운 위치를 선택합니다.
az account list-locations --output table을 사용하여 위치를 나열합니다. |
eastus |
| Resource group name |
이 리소스 그룹을 사용하여 이 자습서를 완료하는 데 필요한 모든 Azure 리소스를 구성합니다. |
service-connector-tutorial-rg |
| 앱 서비스 이름 |
앱 서비스 이름은 Azure에서 리소스의 이름으로 사용되며 서버 엔드포인트의 형태로 앱에 대한 정규화된 도메인 이름을 형성합니다. 허용되는 문자는 A-Z, 0-9 및 -입니다. Azure는 임의의 문자열을 추가하여 모든 Azure에서 서버 엔드포인트를 고유하게 만듭니다. |
webapp-appconfig-cs |
Azure App Configuration 저장소를 만듭니다.
APP_CONFIG_NAME='my-app-config'
az appconfig create --resource-group $RESOURCE_GROUP_NAME --name $APP_CONFIG_NAME --sku Free --location eastus
테스트 구성 파일을 Azure App Configuration에 가져오세요.
시스템 할당 관리 ID를 사용해 테스트 구성 파일을 Azure App Configuration에 가져오세요.
디렉터리를 폴더 ServiceConnectorSample로 변경합니다.
./sampleconfigs.json 테스트 구성 파일을 App Configuration 저장소로 가져옵니다.
Cloud Shell을 사용하는 경우 명령을 실행하기 전에 sampleconfigs.json 업로드합니다.
az appconfig kv import --name $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
사용자 할당 관리 ID를 사용해 테스트 구성 파일을 Azure App Configuration에 가져오세요.
디렉터리를 폴더 ServiceConnectorSample로 변경합니다.
./sampleconfigs.json 테스트 구성 파일을 App Configuration 저장소로 가져옵니다.
Cloud Shell을 사용하는 경우 명령을 실행하기 전에 sampleconfigs.json 업로드합니다.
az appconfig kv import --name $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
서비스 주체를 사용해 테스트 구성 파일을 Azure App Configuration에 가져오세요.
디렉터리를 폴더 ServiceConnectorSample로 변경합니다.
./sampleconfigs.json 테스트 구성 파일을 App Configuration 저장소로 가져옵니다.
Cloud Shell을 사용하는 경우 명령을 실행하기 전에 sampleconfigs.json 업로드합니다.
az appconfig kv import --name $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
Warning
사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 이 절차에서 설명하는 인증 흐름에는 애플리케이션에 대한 신뢰도가 매우 높아야 합니다. 다른 흐름에 없는 위험을 수반합니다. 이 흐름은 관리 ID와 같은 보다 안전한 다른 흐름을 실행할 수 없는 경우에만 사용되어야 합니다.
연결 문자열을 사용해 테스트 구성 파일을 Azure App Configuration에 가져오세요.
디렉터리를 폴더 ServiceConnectorSample로 변경합니다.
./sampleconfigs.json 테스트 구성 파일을 App Configuration 저장소로 가져옵니다.
Cloud Shell을 사용하는 경우 명령을 실행하기 전에 sampleconfigs.json 업로드합니다.
az appconfig kv import --name $APP_CONFIG_NAME --source file --format json --path ./sampleconfigs.json --separator : --yes
웹앱을 App Configuration에 연결
웹 애플리케이션과 App Configuration 저장소 간에 연결을 만드세요.
시스템 할당 관리 ID 인증을 사용해 웹 애플리케이션과 App Configuration 저장소 간에 연결을 만드세요. 이 연결은 Service Connector를 통해 수행됩니다.
az webapp connection create appconfig --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_smi" --system-identity
system-identity은(는) 시스템 할당 관리 ID(SMI) 인증 유형을 나타냅니다. 서비스 커넥터는 UMI(사용자 할당 관리 ID), 연결 문자열(비밀) 및 서비스 주체의 인증도 지원합니다.
사용자 할당 관리 ID 인증을 사용해 웹 애플리케이션과 App Configuration 저장소 간에 연결을 만드세요. 이 연결은 Service Connector를 통해 수행됩니다.
az webapp connection create appconfig --resource-group $RESOURCE_GROUP_NAME --name $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 인증 유형을 나타냅니다. 또한 Service Connector는 시스템 할당 관리 ID, 연결 문자열(비밀) 및 서비스 주체 인증을 지원합니다.
client-id을(를) 찾을 수 있는 두 가지 방법이 있습니다:
- Azure CLI에서
az identity show --name "myIdentity" --resource-group $RESOURCE_GROUP_NAME --query 'clientId'을(를) 입력하세요.
- Azure Portal에서 이전에 만든 관리 ID를 열고 개요에서 클라이언트 ID 아래에 값을 가져옵니다.
서비스 주체를 사용해 웹 애플리케이션과 App Configuration 저장소 간에 연결을 만드세요. 이 구성은 서비스 커넥터를 통해 수행됩니다.
az webapp connection create appconfig --resource-group $RESOURCE_GROUP_NAME --name $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은(는) 서비스 주체 인증 유형을 나타냅니다. 또한 Service Connector는 시스템 할당 UMI(관리 ID), UMI(사용자 할당 관리 ID) 및 연결 문자열(비밀)과 같은 인증을 지원합니다.
연결 문자열을 사용해 웹 애플리케이션과 App Configuration 저장소 간에 연결을 만드세요. 이 연결은 Service Connector를 통해 수행됩니다.
az webapp connection create appconfig --resource-group $RESOURCE_GROUP_NAME --name $APP_SERVICE_NAME --app-config $APP_CONFIG_NAME --tg $RESOURCE_GROUP_NAME --connection "app_config_cs" --secret
secret은(는) 연결 문자열 인증 유형을 나타냅니다. Service Connector는 시스템 할당 관리 ID, 사용자 할당 관리 ID, 서비스 주체와 같은 인증도 지원합니다.
연결 유효성을 검사하세요
연결이 작동하는지 확인하려면 웹앱으로 이동합니다. 웹앱에 액세스하는 가장 쉬운 방법은 Azure Portal에서 웹앱을 여는 것입니다.
개요 페이지에서 기본 도메인을 선택합니다. 웹사이트가 작동되면 다음이 표시됩니다: Hello. 이제 당신의 Azure WebApp이 ServiceConnector에 의해 App Configuration에 연결되었습니다.
작동 방법
각 인증 유형에 대한 백그라운드에서 서비스 커넥터가 관리하는 것을 알아보세요.
Service Connector가 대신 연결 구성을 관리합니다:
- 애플리케이션이 이에 액세스하고 App Configuration 엔드포인트를 가져올 수 있도록 웹앱의
AZURE_APPCONFIGURATION_ENDPOINT를(을) 설정하세요.
샘플 코드에 액세스합니다.
- 웹앱의 시스템 할당 관리 ID 인증을 활성화하고 App Configuration에 Data Reader 역할을 부여하여 애플리케이션이 Azure.Identity의 DefaultAzureCredential을 사용해 App Configuration에 인증할 수 있도록 하세요.
샘플 코드에 액세스합니다.
Service Connector가 대신 연결 구성을 관리합니다:
- 애플리케이션이 웹앱
AZURE_APPCONFIGURATION_ENDPOINTAZURE_APPCONFIGURATION_CLIENTID 에 액세스하고 코드에서 앱 구성 엔드포인트를 가져올 수 있도록 웹앱을 설정합니다.
- 웹앱의 사용자 할당 관리 ID 인증을 활성화하고 App Configuration에 Data Reader 역할을 부여하여 애플리케이션이 Azure.Identity의 DefaultAzureCredential을 사용해 App Configuration에 인증할 수 있도록 하세요.
샘플 코드에 액세스합니다.
Service Connector가 대신 연결 구성을 관리합니다:
- 애플리케이션이 이에 액세스하고 App Configuration 엔드포인트를 가져올 수 있도록 웹앱의
AZURE_APPCONFIGURATION_ENDPOINT를(을) 설정하세요.
샘플 코드에 액세스합니다.
- WebApp AppSettings에 서비스 주체 자격 증명을 저장합니다
AZURE_APPCONFIGURATION_CLIENTID.
AZURE_APPCONFIGURATION_TENANTID, AZURE_APPCONFIGURATION_CLIENTSECRET를 수행하고 서비스 주체에 App Configuration Data Reader 역할을 부여하여 애플리케이션이 Azure.Identity의 ClientSecretCredential을(를) 사용해 코드에서 App Configuration에 인증될 수 있도록 하세요.
Service Connector가 대신 연결 구성을 관리합니다:
- 애플리케이션이 이에 액세스하고 App Configuration 연결 문자열을 가져올 수 있도록 웹앱의
AZURE_APPCONFIGURATION_CONNECTIONSTRING를(을) 설정하세요.
샘플 코드에 액세스합니다.
- 웹앱의 시스템 할당 관리 ID 인증을 활성화하고 App Configuration에 Data Reader 역할을 부여하여 애플리케이션이 Azure.Identity의 DefaultAzureCredential을 사용해 App Configuration에 인증할 수 있도록 하세요.
샘플 코드에 액세스합니다.
자세한 내용은 Service Connector 내부를 참조하세요.
테스트(선택 사항)
선택적으로 다음 테스트를 수행하세요:
App Configuration 저장소에서 SampleApplication:Settings:Messages 키 값을 업데이트하세요.
az appconfig kv set --name <myAppConfigStoreName> --key SampleApplication:Settings:Messages --value hello --yes
앞에서 설명한 대로 Azure 웹앱으로 이동하여 페이지를 새로 고칩니다. 메시지가 다음으로 업데이트된 것을 볼 수 있습니다. hello.
리소스 정리
완료되면 이러한 Azure 리소스를 더 이상 사용하지 않을 경우 명령을 실행 az group delete 하여 삭제합니다. 이 명령은 리소스 그룹과 그 안에 있는 모든 리소스를 삭제합니다.
az group delete --name <myResourceGroupName> --yes
다음 단계