이 빠른 시작에서는 기본 Azure Storage 공급자를 사용하여 ID 기반 연결을 사용하여 Durable Functions 앱을 구성하여 앱이 비밀을 관리하지 않고 스토리지 계정에 액세스할 수 있도록 하는 방법을 보여 줍니다. Microsoft Entra ID의 관리 ID는 Azure 플랫폼에서 관리되므로 비밀을 생성하거나 갱신할 필요가 없습니다.
문서 내용:
- 로컬 개발 설정 - 로컬 테스트에 Azurite 또는 개발자 자격 증명 사용
- Azure에 배포된 앱의 ID 기반 연결 - 관리 ID를 활성화하고 함수 앱을 구성합니다.
메모
관리 ID는 Durable Functions 확장 버전 2.7.0 이상에서 지원됩니다.
Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
사전 요구 사항
이 빠른 시작을 완료하려면 다음이 필요합니다.
- Azure 포털에서 만든 기존 Durable Functions 프로젝트 또는 Azure 배포된 로컬 Durable Functions 프로젝트입니다.
- Azure Durable Functions 앱을 실행하는 데 익숙합니다.
Azure 배포된 기존 Durable Functions 프로젝트가 없는 경우 다음 빠른 시작 중 하나로 시작하는 것이 좋습니다.
- 첫 번째 지속형 함수 만들기 - C#
- 첫 번째 지속성 함수 만들기 - JavaScript.
- 첫 번째 지속성 함수 만들기 - Python
- 첫 번째 지속성 함수 만들기 - PowerShell
- 첫 번째 지속성 함수 만들기 - Java
로컬 개발 설정
로컬 개발에는 두 가지 옵션이 있습니다. Azure 자격 증명 없이 빠른 로컬 테스트에 Azurite를 사용합니다. 실제 Azure Storage 계정에 대한 ID 기반 연결을 테스트해야 하는 경우 개발자 자격 증명을 대신 사용합니다.
옵션 1: Azure Storage 에뮬레이터 사용
로컬로 개발할 때는 Azure Storage 로컬 에뮬레이터인 Azurite를 사용하는 것이 좋습니다. local.settings.json에서 "AzureWebJobsStorage": "UseDevelopmentStorage=true"를 지정하여 에뮬레이터에 맞게 앱을 구성합니다.
옵션 2: 로컬 개발을 위한 ID 기반 연결
엄밀히 말하면 관리 ID는 Azure 실행할 때만 앱에서 사용할 수 있습니다. 그러나 개발자 자격 증명을 사용하여 Azure 리소스에 대해 인증하여 ID 기반 연결을 사용하도록 로컬로 실행 중인 앱을 구성할 수 있습니다. 그런 다음, Azure 배포될 때 앱은 관리 ID 구성을 대신 활용합니다.
개발자 자격 증명을 사용하는 경우 연결은 다음 위치에서 다음 순서대로 토큰을 가져오려고 시도합니다.
- Microsoft 애플리케이션 간에 공유되는 로컬 캐시
- Visual Studio 현재 사용자 컨텍스트
- Visual Studio Code 현재 사용자 컨텍스트
- Azure CLI 현재 사용자 컨텍스트
이러한 옵션 중 어느 것도 성공하지 못하면 앱이 인증 토큰을 검색할 수 없음을 나타내는 오류가 발생합니다. Azure Storage 계정에 대한 액세스 권한이 있는 계정으로 나열된 도구 중 하나에 로그인했는지 확인합니다.
로컬 개발자 ID를 사용하도록 런타임 구성
local.settings.jsonAzure Storage 계정의 이름을 지정합니다. 예를 들면 다음과 같습니다.
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }Azure 포털에서 Azure Storage 계정 리소스로 이동합니다.
Access Control(IAM) 탭을 선택한 다음, 역할 할당 추가를 선택합니다.
다음 각 역할을 자신에게 할당합니다. 각 역할에 대해 "+ 멤버 선택"을 선택하고 Visual Studio, Visual Studio Code 또는 Azure CLI 로그인하는 데 사용하는 전자 메일을 검색합니다.
- 스토리지 큐 데이터 기여자
- Storage Blob 데이터 기여자
- 스토리지 테이블 데이터 기여자
메모
Azure 배포할 때 관리 ID에 필요한 세 가지 역할과 동일합니다. 관리 ID에 액세스 역할 할당을 참조하세요.
Azure 포털 액세스 제어 페이지에서 사용자에게 스토리지 데이터 기여자 역할을 할당하는 스크린샷
Azure 배포된 앱에 대한 ID 기반 연결
관리 ID 리소스 사용
시작하려면 애플리케이션에 관리 ID를 사용하도록 설정합니다. 함수 앱에는 시스템이 할당한 관리 ID 또는 사용자가 할당한 관리 ID가 있어야 합니다. 함수 앱에 관리 ID를 사용하도록 설정하고 두 ID 유형의 차이점에 관해 자세히 알아보려면 관리 ID 개요를 참조하세요.
관리 ID에 액세스 역할 할당
Azure 포털에서 앱의 Azure Storage 리소스로 이동한 후, 관리 ID 리소스에 세 개의 역할 기반 액세스 제어(RBAC) 역할을 할당합니다.
- 스토리지 큐 데이터 기여자
- Storage Blob 데이터 기여자
- 스토리지 테이블 데이터 기여자
ID 리소스를 찾으려면 관리 ID에 대한 액세스 할당을 선택하고 + 멤버 선택을 선택합니다.
앱에 관리 ID 구성 추가
앱의 관리 ID를 사용하려면 먼저 앱 설정을 약간 변경해야 합니다.
Azure 포털의 함수 앱 리소스 메뉴에 있는 Settings에서 환경 변수를 선택합니다.
Azure 스토리지 계정을 애플리케이션에 연결하는 설정을 추가합니다.
앱이 실행되는 클라우드에 따라 다음 중 한 가지 방법을 사용합니다.
Azure 클라우드: 앱이 글로벌 Azure 실행되는 경우 Azure 스토리지 계정 이름을 식별하는
AzureWebJobsStorage__accountName설정을 추가합니다. 예제 값:mystorageaccount123Non-Azure cloud: 애플리케이션이 Azure 외부의 클라우드에서 실행되는 경우 다음 세 가지 설정을 추가하여 계정 이름 대신 스토리지 계정의 특정 서비스 URI(또는 endpoints)를 제공해야 합니다.
설정 이름:
AzureWebJobsStorage__blobServiceUri예제 값:
https://mystorageaccount123.blob.core.windows.net/설정 이름:
AzureWebJobsStorage__queueServiceUri예제 값:
https://mystorageaccount123.queue.core.windows.net/설정 이름:
AzureWebJobsStorage__tableServiceUri예제 값:
https://mystorageaccount123.table.core.windows.net/
엔드포인트 탭의 스토리지 계정 정보에서 이러한 URI 변수의 값을 가져올 수 있습니다.
메모
Azure Government 또는 전역 Azure 별개의 다른 클라우드를 사용하는 경우 스토리지 계정 이름 대신 특정 서비스 URI를 제공하는 옵션을 사용해야 합니다. Azure Government에서 Azure Storage를 사용하는 방법에 대한 자세한 내용은 Azure Government의 Storage API 사용법 개발을 참조하세요.
관리 ID 구성을 완료합니다(설정을 변경한 후 "적용"을 클릭해야 함).
시스템이 할당한 ID를 사용하는 경우 다른 변경이 필요 없습니다.
사용자가 할당한 ID를 사용하는 경우 앱 구성에 다음 설정을 추가합니다.
AzureWebJobsStorage__credential: managedidentity를 입력합니다.
AzureWebJobsStorage__clientId: 관리 ID 리소스에서 이 GUID 값을 가져옵니다.
메모
Durable Functions 사용자 할당 ID를 사용할 때
managedIdentityResourceId지원하지 않습니다.clientId를 대신 사용하세요.
구성 확인
관리 ID 구성이 작동하는지 확인하려면 다음을 수행합니다.
- Azure 포털에서 함수 앱으로 이동하여 Durable Functions 오케스트레이션을 트리거합니다(예: HTTP 트리거 함수 사용).
- 상태 엔드포인트를 쿼리하거나 모니터 탭을 확인하여 오케스트레이션이 성공적으로 완료되었는지 확인합니다.
- 인증 오류가 표시되면 다음을 확인합니다.
- 세 가지 스토리지 데이터 기여자 역할은 모두 올바른 ID에 할당됩니다.
-
AzureWebJobsStorage연결 문자열 설정이 제거됩니다. -
AzureWebJobsStorage__accountName(또는 서비스 URI) 설정이 올바릅니다.