지속성 작업 스케줄러에 대한 관리 ID 구성

지속성 작업 스케줄러는 인증에 관리 ID를 사용합니다. 사용자 할당 또는 시스템 할당 관리 ID를 사용할 수 있습니다. 사용자 할당 ID는 앱의 수명 주기에 연결되지 않고 앱 프로비전 해제 후 다시 사용할 수 있으므로 권장됩니다.

이 문서에서는 관리 ID를 구성하는 두 가지 방법을 설명합니다.

  • 빠른 설정 - 역할 할당, ID 첨부 파일 및 환경 변수 구성을 자동화하는 단일 CLI 명령입니다.
  • 수동 설정 - 각 구성 단계를 완전히 제어하기 위한 단계별 지침입니다.

사전 요구 사항

지속형 작업 스케줄러 RBAC 역할

다음 지속성 작업 스케줄러 관련 역할을 ID에 부여할 수 있습니다.

역할 설명
지속성 작업 데이터 기여자 모든 데이터 액세스 작업에 대한 역할입니다. 이 역할은 다른 모든 역할의 상위 집합입니다.
지속성 작업 작업자 작업자 애플리케이션에서 지속성 작업 스케줄러와 상호 작용하는 데 사용하는 역할입니다. 앱이 오케스트레이션, 활동 및 엔터티를 처리하는 데 사용되는 경우 이 역할을 할당합니다.
강력한 작업 데이터 판독기 모든 지속성 작업 스케줄러 데이터를 읽는 역할입니다. 오케스트레이션을 나열하고 엔터티 페이로드를 읽어야 하는 경우에만 이 역할을 할당합니다.

메모

대부분의 앱에는 지속성 작업 데이터 기여자 역할이 필요합니다.

다음을 사용하여 빠르게 설정 az durabletask scheduler attach

az durabletask scheduler attach 명령은 단일 명령으로 역할 할당, ID 첨부 파일 및 환경 변수 구성을 자동화합니다.

다음 예제에서는 지속성 작업 데이터 기여자 역할과 함께 사용자 할당 관리 ID를 사용하여 스케줄러를 함수 앱에 연결합니다.

az durabletask scheduler attach \
  --resource-group RESOURCE_GROUP_NAME \
  --name SCHEDULER_NAME \
  --task-hub-name TASKHUB_NAME \
  --role-type contributor \
  --target /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/FUNCTION_APP_NAME \
  --identity /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/IDENTITY_NAME

컨테이너 앱의 경우:

az durabletask scheduler attach \
  --resource-group RESOURCE_GROUP_NAME \
  --name SCHEDULER_NAME \
  --task-hub-name TASKHUB_NAME \
  --role-type contributor \
  --target /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.App/containerApps/CONTAINER_APP_NAME \
  --identity /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/IDENTITY_NAME

메모

매개 변수를 --identity 생략하면 명령에서 시스템 할당 관리 ID를 대신 사용합니다.

자세한 내용을 보려면 az durabletask scheduler attach를 참조하십시오.

수동 설정

각 단계를 세부적으로 제어해야 하는 경우 아래의 수동 지침에 따라 RBAC를 할당하고, ID를 연결하고, 환경 변수를 개별적으로 구성합니다.

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

  1. 사용자 할당 관리 ID 만들기

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. 담당자를 만든 ID 리소스로 설정

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. 범위를 설정합니다. 최소 권한 액세스에 작업 허브 범위를 사용합니다. ID가 스케줄러 내의 모든 작업 허브에 액세스해야 하는 경우에만 스케줄러 범위를 사용합니다.

    작업 허브 범위(권장)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME/taskHubs/TASKHUB_NAME"
    

    Scheduler 범위(모든 작업 허브)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. 액세스 권한을 부여합니다. 다음 명령을 실행하여 역할 할당을 만들고 액세스 권한을 부여합니다.

    az role assignment create \
      --assignee "$assignee" \
      --role "Durable Task Data Contributor" \
      --scope "$scope"
    

    예상 출력

    다음 출력 예제에서는 스케줄러 수준에서 지속성 작업 데이터 기여자 역할로 할당된 개발자 ID를 보여줍니다.

    {
      "condition": null,
      "conditionVersion": null,
      "createdBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "createdOn": "2024-12-20T01:36:45.022356+00:00",
      "delegatedManagedIdentityResourceId": null,
      "description": null,
      "id": "/subscriptions/YOUR_SUBSCRIPTION_ID/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID",
      "name": "ROLE_ASSIGNMENT_ID",
      "principalId": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "principalName": "YOUR_EMAIL",
      "principalType": "User",
      "resourceGroup": "YOUR_RESOURCE_GROUP",
      "roleDefinitionId": "/subscriptions/YOUR_SUBSCRIPTION/providers/Microsoft.Authorization/roleDefinitions/ROLE_DEFINITION_ID",
      "roleDefinitionName": "Durable Task Data Contributor",
      "scope": "/subscriptions/YOUR_SUBSCRIPTION/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME",
      "type": "Microsoft.Authorization/roleAssignments",
      "updatedBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "updatedOn": "2024-12-20T01:36:45.022356+00:00"
    }
    

메모

다음 명령은 특정 작업 허브로 범위가 지정된 역할 할당을 보여 줍니다. 스케줄러의 모든 작업 허브에 액세스해야 하는 경우 스케줄러 수준에서 할당을 수행합니다.

  1. 사용자 할당 관리 ID를 생성하십시오.

  2. 포털에서 지속성 작업 스케줄러 리소스로 이동합니다.

  3. 작업 허브 이름을 선택합니다.

  4. 왼쪽 메뉴에서 액세스 제어(IAM)를 선택합니다.

  5. 추가를 선택하여 역할 할당을 추가합니다.

    포털의 액세스 제어 창에서 역할 할당을 추가하는 스크린샷

  6. 내구성 있는 작업 데이터 기여자를 검색하여 선택합니다. 다음을 선택합니다.

    포털에서 지속성 작업 데이터 기여자 역할 할당을 선택하는 스크린샷

  7. 구성원 탭에서 액세스 권한 할당을 위해관리 ID를 선택합니다.

  8. 멤버를 위해 + 멤버 선택하기를 클릭합니다.

  9. 관리 ID 선택 창에서 관리 ID 드롭다운을 확장하고 사용자 할당 관리 ID를 선택합니다.

    포털에서 사용할 사용자 할당 관리 ID 유형을 선택하는 스크린샷

  10. 이전에 만든 사용자 관리 ID를 선택하고 선택을 선택합니다.

  11. 검토 + 할당을 선택하여 역할 할당을 완료합니다.

앱에 관리 ID 할당

이제 ID에 지속성 작업 스케줄러에 액세스하는 데 필요한 RBAC가 있으므로 앱에 할당해야 합니다.

  1. 관리 ID의 리소스 ID를 가져옵니다.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. 앱에 ID를 할당합니다.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. 포털의 앱에서 설정>ID를 선택합니다.

  2. 사용자 할당 탭을 선택합니다.

  3. + 추가를 선택한 다음 마지막 섹션에서 만든 ID를 선택합니다. 추가를 선택합니다.

    포털에서 함수 앱에 사용자 할당 관리 ID를 추가하는 스크린샷

앱에 환경 변수 추가

앱에 다음 두 환경 변수를 추가합니다.

환경 변수 Value Example
DURABLE_TASK_SCHEDULER_CONNECTION_STRING Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID> Endpoint=https://myscheduler.westus2.durabletask.io;Authentication=ManagedIdentity;ClientID=00000000-0000-0000-0000-000000000000
TASKHUB_NAME 작업 허브의 이름 my-task-hub

메모

system-assigned ID를 사용하는 경우 연결 문자열 ClientID 매개 변수인 "Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity" 생략합니다.

  1. 필요한 연결 문자열 정보를 가져옵니다.

    스케줄러 엔드포인트를 가져옵니다.

    az durabletask scheduler show --resource-group RESOURCE_GROUP_NAME --name SCHEDULER_NAME --query 'properties.endpoint' --output tsv
    

    관리 ID의 클라이언트 ID를 가져옵니다.

    az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. 앱에서 두 환경 변수를 모두 설정합니다.

    az functionapp config appsettings set \
      --resource-group RESOURCE_GROUP_NAME \
      --name FUNCTION_APP_NAME \
      --settings \
        DURABLE_TASK_SCHEDULER_CONNECTION_STRING="Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>" \
        TASKHUB_NAME="<TASKHUB_NAME>"
    
  1. 필요한 연결 문자열 정보를 가져옵니다.

    스케줄러 엔드포인트를 얻으려면 스케줄러 리소스의 개요 탭으로 이동하고 Essentials 섹션에서 엔드포인트를 찾습니다.

    관리 ID 클라이언트 ID를 가져오려면 관리 ID 리소스의 개요 탭으로 이동하고 Essentials 섹션에서 클라이언트 ID를 찾습니다.

    Azure 포탈에서 클라이언트 ID 위치를 보여주는 관리 ID 개요 페이지의 스크린샷.

  2. 포털에서 앱으로 이동합니다.

  3. 왼쪽 메뉴에서 설정>환경 변수를 선택합니다.

  4. DURABLE_TASK_SCHEDULER_CONNECTION_STRING라는 이름으로 환경 변수를 추가하고 값으로 Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>를 설정합니다.

  5. 작업 허브의 이름으로 명명된 TASKHUB_NAME 환경 변수를 추가합니다.

  6. 적용을 선택한 다음, 변수를 저장하려면 [확인]을 선택합니다.