빠른 시작: 관리 ID로 Durable Functions 구성

액세스 관리 서비스 Microsoft Entra ID의 관리 ID를 사용하면 앱이 비밀을 수동으로 처리하지 않고도 Azure Storage 계정 등의 다른 Microsoft Entra로 보호된 리소스에 액세스할 수 있습니다. 이 ID는 Azure 플랫폼에서 관리되며, 비밀을 프로비전하거나 순환하지 않아도 됩니다. Azure 리소스에 대한 액세스를 인증하는 권장 방법은 이러한 ID를 사용하는 것입니다.

이 빠른 시작에서는 기본 Azure Storage 공급자를 사용하는 Durable Functions 앱이 스토리지 계정 액세스에 ID 기반 연결을 사용하도록 구성하는 단계를 완료합니다.

참고 항목

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

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

필수 조건

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

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

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

로컬 개발

Azure Storage 에뮬레이터 사용

로컬로 개발할 때는 Azure Storage의 로컬 에뮬레이터인 Azurite를 사용하는 것이 좋습니다. local.settings.json에서 "AzureWebJobsStorage": "UseDevelopmentStorage = true"를 지정하여 에뮬레이터에 맞게 앱을 구성합니다.

로컬 개발을 위한 ID 기반 연결

엄밀히 말해, 관리 ID는 Azure에서 실행할 때만 앱에서 사용할 수 있습니다. 그러나 개발자 자격 증명으로 Azure 리소스에 대해 인증하여 로컬 실행 앱이 ID 기반 연결을 사용하도록구성할 수 있습니다. 그런 다음, Azure에 배포되면 앱은 관리 ID 구성을 대신 활용합니다.

개발자 자격 증명을 사용하는 경우 연결은 Azure 리소스에 액세스하기 위해 다음 위치에서 지정된 순서로 토큰을 가져오려고 시도합니다.

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

이러한 옵션 중 어느 것도 성공하지 못하면 앱이 Azure 리소스에 대한 인증 토큰을 검색할 수 없다는 오류가 표시됩니다.

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

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

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Azure Portal에서 Azure Storage 계정 리소스로 이동하고 액세스 제어(IAM) 탭으로 이동한 후 역할 할당 추가를 클릭합니다. 다음 역할을 찾습니다.

    • Storage 큐 데이터 기여자
    • Storage Blob 데이터 기여자
    • 스토리지 테이블 데이터 기여자

    "+ 구성원 선택"을 클릭하고 팝업 창에서 메일을 찾아 자신에게 역할을 할당합니다. (이 메일은 Visual Studio 제품군의 Microsoft 애플리케이션, Azure CLI 또는 편집기에 로그인하는 데 사용하는 메일입니다.)

    사용자에 대한 액세스 할당을 보여 주는 스크린샷

Azure에 배포된 앱에 대한 ID 기반 연결

관리 ID 리소스 사용

시작하려면 애플리케이션에 관리 ID를 사용하도록 설정합니다. 함수 앱에는 시스템이 할당한 관리 ID 또는 사용자가 할당한 관리 ID가 있어야 합니다. 함수 앱에 관리 ID를 사용하도록 설정하고 두 ID 유형의 차이점에 관해 자세히 알아보려면 관리 ID 개요를 참조하세요.

관리 ID에 액세스 역할 할당

Azure Portal에서 앱의 Azure Storage 리소스로 이동하고 관리 ID 리소스에 세 개의 RBAC(역할 기반 액세스 제어) 역할을 할당합니다.

  • Storage 큐 데이터 기여자
  • Storage Blob 데이터 기여자
  • 스토리지 테이블 데이터 기여자

ID 리소스를 찾으려면 관리 ID에 대한 액세스 할당을 선택하고 + 멤버 선택을 선택합니다.

관리 ID에 대한 액세스 할당을 보여 주는 스크린샷

앱에 관리 ID 구성 추가

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

  1. Azure Portal의 설정 아래의 함수 앱 리소스 메뉴에서 환경 변수를 선택합니다.

  2. 설정 목록에서 AzureWebJobsStorage를 찾은 후 삭제 아이콘을 선택합니다. 기본 스토리지 설정의 스크린샷

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

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

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

    • Azure 외 클라우드: 앱이 Azure 외부의 클라우드에서 실행되는 경우 다음 세 가지 설정을 추가하여 계정 이름 대신 스토리지 계정의 특정 서비스 URI(또는 엔드포인트)를 제공해야 합니다.

      • 설정 이름: 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를 사용하여 개발을 참조하세요.

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

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

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

      • AzureWebJobsStorage__credential: managedidentity를 입력합니다.

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

      사용자 ID 클라이언트 ID의 스크린샷

    참고 항목

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