빠른 시작: 관리 ID를 사용하여 Durable Functions 구성

이 빠른 시작에서는 기본 Azure Storage 공급자를 사용하여 ID 기반 연결을 사용하여 Durable Functions 앱을 구성하여 앱이 비밀을 관리하지 않고 스토리지 계정에 액세스할 수 있도록 하는 방법을 보여 줍니다. Microsoft Entra ID의 관리 ID는 Azure 플랫폼에서 관리되므로 비밀을 생성하거나 갱신할 필요가 없습니다.

문서 내용:

메모

관리 ID는 Durable Functions 확장 버전 2.7.0 이상에서 지원됩니다.

Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

사전 요구 사항

이 빠른 시작을 완료하려면 다음이 필요합니다.

  • Azure 포털에서 만든 기존 Durable Functions 프로젝트 또는 Azure 배포된 로컬 Durable Functions 프로젝트입니다.
  • Azure Durable Functions 앱을 실행하는 데 익숙합니다.

Azure 배포된 기존 Durable Functions 프로젝트가 없는 경우 다음 빠른 시작 중 하나로 시작하는 것이 좋습니다.

로컬 개발 설정

로컬 개발에는 두 가지 옵션이 있습니다. 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 구성을 대신 활용합니다.

개발자 자격 증명을 사용하는 경우 연결은 다음 위치에서 다음 순서대로 토큰을 가져오려고 시도합니다.

  1. Microsoft 애플리케이션 간에 공유되는 로컬 캐시
  2. Visual Studio 현재 사용자 컨텍스트
  3. Visual Studio Code 현재 사용자 컨텍스트
  4. Azure CLI 현재 사용자 컨텍스트

이러한 옵션 중 어느 것도 성공하지 못하면 앱이 인증 토큰을 검색할 수 없음을 나타내는 오류가 발생합니다. Azure Storage 계정에 대한 액세스 권한이 있는 계정으로 나열된 도구 중 하나에 로그인했는지 확인합니다.

로컬 개발자 ID를 사용하도록 런타임 구성

  1. local.settings.jsonAzure Storage 계정의 이름을 지정합니다. 예를 들면 다음과 같습니다.

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Azure 포털에서 Azure Storage 계정 리소스로 이동합니다.

  3. Access Control(IAM) 탭을 선택한 다음, 역할 할당 추가를 선택합니다.

  4. 다음 각 역할을 자신에게 할당합니다. 각 역할에 대해 "+ 멤버 선택"을 선택하고 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에 대한 액세스 할당을 선택하고 + 멤버 선택을 선택합니다.

Azure 포털에서 관리 ID에 스토리지 액세스 역할을 할당하는 스크린샷입니다.

앱에 관리 ID 구성 추가

앱의 관리 ID를 사용하려면 먼저 앱 설정을 약간 변경해야 합니다.

  1. Azure 포털의 함수 앱 리소스 메뉴에 있는 Settings에서 환경 변수를 선택합니다.

  2. 설정 목록에서 AzureWebJobsStorage를 찾은 후 삭제 아이콘을 선택합니다.  Azure Portal 함수 앱 설정에서 AzureWebJobsStorage 환경 변수의 스크린샷.

  3. Azure 스토리지 계정을 애플리케이션에 연결하는 설정을 추가합니다.

    앱이 실행되는 클라우드에 따라 다음 중 한 가지 방법을 사용합니다.

    • Azure 클라우드: 앱이 글로벌 Azure 실행되는 경우 Azure 스토리지 계정 이름을 식별하는 AzureWebJobsStorage__accountName 설정을 추가합니다. 예제 값: mystorageaccount123

    • Non-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 변수의 값을 가져올 수 있습니다.

    Blob, 큐 및 테이블 서비스 URI를 보여 주는 스토리지 계정 엔드포인트 탭의 스크린샷

    메모

    Azure Government 또는 전역 Azure 별개의 다른 클라우드를 사용하는 경우 스토리지 계정 이름 대신 특정 서비스 URI를 제공하는 옵션을 사용해야 합니다. Azure Government에서 Azure Storage를 사용하는 방법에 대한 자세한 내용은 Azure Government의 Storage API 사용법 개발을 참조하세요.

  4. 관리 ID 구성을 완료합니다(설정을 변경한 후 "적용"을 클릭해야 함).

    • 시스템이 할당한 ID를 사용하는 경우 다른 변경이 필요 없습니다.

    • 사용자가 할당한 ID를 사용하는 경우 앱 구성에 다음 설정을 추가합니다.

      • AzureWebJobsStorage__credential: managedidentity를 입력합니다.

      • AzureWebJobsStorage__clientId: 관리 ID 리소스에서 이 GUID 값을 가져옵니다.

    클라이언트 ID 값을 보여 주는 사용자 할당 관리 ID 리소스의 스크린샷

    메모

    Durable Functions 사용자 할당 ID를 사용할 때 managedIdentityResourceId 지원하지 않습니다. clientId를 대신 사용하세요.

구성 확인

관리 ID 구성이 작동하는지 확인하려면 다음을 수행합니다.

  1. Azure 포털에서 함수 앱으로 이동하여 Durable Functions 오케스트레이션을 트리거합니다(예: HTTP 트리거 함수 사용).
  2. 상태 엔드포인트를 쿼리하거나 모니터 탭을 확인하여 오케스트레이션이 성공적으로 완료되었는지 확인합니다.
  3. 인증 오류가 표시되면 다음을 확인합니다.
    • 세 가지 스토리지 데이터 기여자 역할은 모두 올바른 ID에 할당됩니다.
    • AzureWebJobsStorage 연결 문자열 설정이 제거됩니다.
    • AzureWebJobsStorage__accountName (또는 서비스 URI) 설정이 올바릅니다.

다음 단계