Microsoft Entra ID를 사용하여 Durable Functions 구성

Microsoft Entra ID (Microsoft Entra ID)는 클라우드 기반 ID 및 액세스 관리 서비스입니다. ID 기반 연결을 사용하면 Durable Functions에서 비밀을 수동으로 관리할 필요 없이 Azure Storage 계정과 같은 Microsoft Entra 보호된 리소스에 대해 권한 있는 요청을 수행할 수 있습니다. 기본 Azure 스토리지 공급자를 사용하여 Durable Functions는 Azure Storage 계정에 대해 인증을 받아야 합니다. 이 문서에서는 관리 ID 자격 증명클라이언트 비밀 자격 증명이라는 두 가지 종류의 ID 기반 연결을 활용하도록 Durable Functions 앱을 구성하는 방법을 보여 줍니다.

관리 ID를 사용하면 앱이 Azure Key Vault와 같은 다른 Microsoft Entra 보호 리소스에 쉽게 액세스할 수 있습니다. 관리 ID는 Durable Functions 확장 버전 2.7.0 이상에서 지원됩니다.

참고 항목

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

필수 조건

다음 단계에서는 기존 Durable Functions 앱을 시작하고 작동 방법을 잘 알고 있다고 가정합니다. 특히 이 빠른 시작에서는 이미 다음이 구현되었다고 가정합니다.

  • Azure Portal에서 Durable Functions 프로젝트를 만들거나 로컬 Durable Functions를 Azure에 배포했습니다.

그렇지 않은 경우 위의 모든 요구 사항을 달성하는 방법에 대한 자세한 지침을 제공하는 다음 문서 중 하나로 시작하는 것이 좋습니다.

관리 ID 사용

시스템 할당 관리 ID 또는 사용자 할당 관리 ID 중 하나의 ID만 함수에 필요합니다. 함수에 관리 ID를 사용하도록 설정하고 두 ID 간의 차이점에 대해 자세히 알아보려면 여기에서 자세한 지침을 읽어보세요.

관리 ID에 RBAC(역할 기반 액세스 제어) 할당

Azure Portal에서 앱의 스토리지 리소스로 이동합니다. 다음 지침에 따라 관리 ID 리소스에 다음 역할을 할당합니다.

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

Azure Portal에서 관리 ID 구성 추가

Azure 함수 앱의 구성 페이지로 이동하고 다음과 같이 변경합니다.

  1. 기본값 "AzureWebJobsStorage"를 제거합니다.

Screenshot of default storage setting.

  1. 다음 값 설정 중 하나를 추가하여 Azure Storage 계정을 연결합니다.

    • AzureWebJobsStorage__accountName: 예: mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri: 예: https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri: 예: https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri: 예: https://mystorageaccount123.table.core.windows.net/

      참고 항목

      Azure Government 또는 글로벌 Azure와 별개의 다른 클라우드를 사용하는 경우 이 두 번째 옵션을 사용하여 특정 서비스 URL을 제공해야 합니다. 이러한 설정의 값은 엔드포인트 탭 아래의 스토리지 계정에서 찾을 수 있습니다. Azure Government에서 Azure Storage를 사용하는 방법에 대한 자세한 내용은 Azure Government에서 Storage API로 개발 설명서를 참조하세요.

    Screenshot of endpoint sample.

  2. 관리 ID 구성을 완료합니다.

    • 시스템 할당 ID를 사용해야 하는 경우 아무것도 지정하지 않습니다.

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

      • AzureWebJobsStorage__credential: managedidentity

      • AzureWebJobsStorage__clientId: (Microsoft Entra 관리 센터에서 가져온 GUID 값)

      Screenshot of user identity client id.

클라이언트 비밀 자격 증명을 사용하도록 앱 구성

Microsoft Entra ID에 클라이언트 애플리케이션을 등록하는 것은 Azure 서비스에 대한 액세스를 구성할 수 있는 또 다른 방법입니다. 다음 단계에서는 Azure Storage 계정에 대한 인증을 위해 클라이언트 비밀 자격 증명을 사용하는 방법을 알아봅니다. 이 방법은 로컬 및 Azure 둘 다의 함수 앱에서 사용할 수 있습니다. 그러나 클라이언트 비밀 자격 증명은 구성 및 관리가 더 복잡하며 Azure Functions 서비스와 비밀 자격 증명을 공유해야 하므로 관리 ID보다 덜 권장됩니다.

필수 조건

다음 단계에서는 기존 Durable Functions 앱을 시작하고 작동 방법을 잘 알고 있다고 가정합니다. 특히 이 빠른 시작에서는 이미 다음이 구현되었다고 가정합니다.

  • 로컬 컴퓨터 또는 Azure Portal에서 Durable Functions 프로젝트를 만들었습니다.

Microsoft Entra ID에 클라이언트 애플리케이션 등록

  1. 이러한 지침에 따라 Azure Portal의 Microsoft Entra ID에서 클라이언트 애플리케이션을 등록합니다.

  2. 클라이언트 애플리케이션에 대한 클라이언트 비밀을 만듭니다. 등록된 애플리케이션에서 다음을 수행합니다.

    1. 인증서 및 비밀을 선택하고 새 클라이언트 암호를 선택합니다.

    2. 설명을 입력하고 만료 필드에서 유효한 비밀 시간을 선택합니다.

    3. 페이지를 나가면 다시 표시되지 않으므로 비밀 값을 복사하고 신중하게 저장합니다.

    Screenshot of client secret page.

클라이언트 애플리케이션에 RBAC(역할 기반 액세스 제어) 할당

다음 단계를 수행하여 클라이언트 애플리케이션에 이러한 세 가지 역할을 할당합니다.

  • Storage 큐 데이터 기여자
  • Storage Blob 데이터 기여자
  • 스토리지 테이블 데이터 기여자
  1. 함수의 스토리지 계정 액세스 제어(IAM) 페이지로 이동하고 새 역할 할당을 추가합니다.

    Screenshot of access control page.

  2. 필요한 역할을 선택하고 다음을 클릭한 다음, 애플리케이션을 검색하고 검토한 후 추가합니다.

    Screenshot of role assignment page.

클라이언트 비밀 구성 추가

Azure에서 실행하고 테스트하려면 Azure Portal의 Azure 함수 앱 구성 페이지에서 다음을 지정합니다. 로컬에서 실행하고 테스트하려면 함수의 local.settings.json 파일에서 다음을 지정합니다.

  1. 기본값 "AzureWebJobsStorage"를 제거합니다.

  2. 다음 값 설정 중 하나를 추가하여 Azure Storage 계정을 연결합니다.

    • AzureWebJobsStorage__accountName: 예: mystorageaccount123

    • 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 변수의 값은 엔드포인트 탭 아래의 스토리지 계정에서 찾을 수 있습니다.

    Screenshot of endpoint sample.

  3. 다음 값을 지정하여 클라이언트 비밀 자격 증명을 추가합니다.

    • AzureWebJobsStorage__clientId: (Microsoft Entra 애플리케이션 페이지에 있는 GUID 값)

    • AzureWebJobsStorage__ClientSecret: (이전 단계에서 Microsoft Entra 관리 센터에서 생성된 비밀 값)

    • AzureWebJobsStorage__tenantId: (Microsoft Entra 애플리케이션이 등록된 테넌트 ID)

    클라이언트 ID 및 테넌트 ID 값은 클라이언트 애플리케이션의 개요 페이지에서 찾을 수 있습니다. 클라이언트 비밀 값은 이전 단계에서 신중하게 저장한 값입니다. 페이지를 새로 고친 후에는 사용할 수 없습니다.

    Screenshot of application's overview page.