지속성 작업 스케줄러는 인증에 관리 ID를 사용합니다. 사용자 할당 또는 시스템 할당 관리 ID를 사용할 수 있습니다. 사용자 할당 ID는 앱의 수명 주기에 연결되지 않고 앱 프로비전 해제 후 다시 사용할 수 있으므로 권장됩니다.
이 문서에서는 관리 ID를 구성하는 두 가지 방법을 설명합니다.
사전 요구 사항
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
- 지속성 작업 스케줄러 및 작업 허브 리소스가 이미 프로비전되었습니다.
-
확장이 설치된
durabletask(az extension add --name durabletask). - 스케줄러 리소스의 소유자 또는 사용자 액세스 관리자 역할(역할 할당을 만드는 데 필요).
지속형 작업 스케줄러 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(역할 기반 액세스 제어) 할당
사용자 할당 관리 ID 만들기
az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME담당자를 만든 ID 리소스로 설정
assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv)범위를 설정합니다. 최소 권한 액세스에 작업 허브 범위를 사용합니다. 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"액세스 권한을 부여합니다. 다음 명령을 실행하여 역할 할당을 만들고 액세스 권한을 부여합니다.
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" }
메모
다음 명령은 특정 작업 허브로 범위가 지정된 역할 할당을 보여 줍니다. 스케줄러의 모든 작업 허브에 액세스해야 하는 경우 스케줄러 수준에서 할당을 수행합니다.
포털에서 지속성 작업 스케줄러 리소스로 이동합니다.
작업 허브 이름을 선택합니다.
왼쪽 메뉴에서 액세스 제어(IAM)를 선택합니다.
추가를 선택하여 역할 할당을 추가합니다.
내구성 있는 작업 데이터 기여자를 검색하여 선택합니다. 다음을 선택합니다.
구성원 탭에서 액세스 권한 할당을 위해관리 ID를 선택합니다.
멤버를 위해 + 멤버 선택하기를 클릭합니다.
관리 ID 선택 창에서 관리 ID 드롭다운을 확장하고 사용자 할당 관리 ID를 선택합니다.
이전에 만든 사용자 관리 ID를 선택하고 선택을 선택합니다.
검토 + 할당을 선택하여 역할 할당을 완료합니다.
앱에 관리 ID 할당
이제 ID에 지속성 작업 스케줄러에 액세스하는 데 필요한 RBAC가 있으므로 앱에 할당해야 합니다.
관리 ID의 리소스 ID를 가져옵니다.
resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)앱에 ID를 할당합니다.
az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
포털의 앱에서 설정>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" 생략합니다.
필요한 연결 문자열 정보를 가져옵니다.
스케줄러 엔드포인트를 가져옵니다.
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앱에서 두 환경 변수를 모두 설정합니다.
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>"
필요한 연결 문자열 정보를 가져옵니다.
스케줄러 엔드포인트를 얻으려면 스케줄러 리소스의 개요 탭으로 이동하고 Essentials 섹션에서 엔드포인트를 찾습니다.
관리 ID 클라이언트 ID를 가져오려면 관리 ID 리소스의 개요 탭으로 이동하고 Essentials 섹션에서 클라이언트 ID를 찾습니다.
Azure 포탈에서 클라이언트 ID 위치를 보여주는 관리 ID 개요 페이지의 스크린샷. 포털에서 앱으로 이동합니다.
왼쪽 메뉴에서 설정>환경 변수를 선택합니다.
DURABLE_TASK_SCHEDULER_CONNECTION_STRING라는 이름으로 환경 변수를 추가하고 값으로Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>를 설정합니다.작업 허브의 이름으로 명명된
TASKHUB_NAME환경 변수를 추가합니다.적용을 선택한 다음, 변수를 저장하려면 [확인]을 선택합니다.