Dayanıklı Görev Zamanlayıcı için yönetilen kimliği yapılandırma

Dayanıklı Görev Zamanlayıcı, kimlik doğrulaması için yönetilen kimliği kullanır. Kullanıcı tarafından atanan veya sistem tarafından atanan yönetilen kimliği kullanabilirsiniz. Kullanıcı tarafından atanan kimlikler, uygulamanın yaşam döngüsüne bağlı olmadığından ve uygulama sağlama kaldırıldıktan sonra yeniden kullanılabilir olduğundan önerilir.

Bu makale, yönetilen kimliği yapılandırmanın iki yolunu kapsar:

  • Hızlı kurulum : Rol atama, kimlik eki ve ortam değişkeni yapılandırmasını otomatik hale getiren tek bir CLI komutu.
  • El ile kurulum — Her yapılandırma adımı üzerinde tam denetim için adım adım yönergeler.

Prerequisites

Kalıcı Görev Zamanlayıcı RBAC Rolleri

Bir kimliğe aşağıdaki Dayanıklı Görev Zamanlayıcı ile ilgili rolleri vekleyebilirsiniz:

Rol Açıklama
Kalıcı Görev Verisi Katılımcısı Tüm veri erişim işlemleri için rol. Bu rol, diğer tüm rollerin üst kümesidir.
Dayanıklı Görev Çalışanı Çalışan uygulamaları tarafından Dayanıklı Görev Zamanlayıcı ile etkileşime geçmek için kullanılan rol. Uygulamanız yalnızca düzenleme, etkinlik ve varlıkları işlemek için kullanılıyorsa bu rolü atayın.
Dayanıklı Görev Veri Okuyucusu Tüm Dayanıklı Görev Zamanlayıcı verilerini okuma rolü. Yalnızca orkestrasyonları listelemeniz ve varlık yüklerini okumanız gerekiyorsa bu rolü atayın.

Uyarı

Çoğu uygulama, Dayanıklı Görev Verileri Katkısı Rolü gerektirir.

az durabletask scheduler attach ile hızlı kurulum

komutu rol az durabletask scheduler attach atamasını, kimlik ekini ve ortam değişkeni yapılandırmasını tek bir komutta otomatikleştirir.

Aşağıdaki örnek, Kullanıcı Tarafından Atanan Yönetilen Kimlik kullanarak İşlev Uygulamasına bir zamanlayıcı ekler ve bu kimlik Durable Task Data Contributor rolüne sahiptir.

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

Kapsayıcı Uygulaması için:

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

Uyarı

parametresini --identity atlarsanız, komut bunun yerine sistem tarafından atanan yönetilen kimliği kullanır.

Daha fazla bilgi için bkz. az durabletask scheduler attach.

El ile kurulum

Her adım üzerinde ayrıntılı denetime ihtiyacınız varsa RBAC atamak, kimliği eklemek ve ortam değişkenlerini tek tek yapılandırmak için aşağıdaki el ile yönergeleri izleyin.

Yönetilen kimlik kaynağına rol tabanlı erişim denetimi (RBAC) atama

  1. Kullanıcının atadığı yönetilen kimliği oluşturun

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Atamayı oluşturulan kimlik kaynağına ayarla

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. Kapsamı ayarlayın. En az ayrıcalıklı erişim için görev hub'ı kapsamını kullanın. Zamanlayıcı kapsamını yalnızca kimliğin bir zamanlayıcıdakitüm görev hub'larına erişmesi gerekiyorsa kullanın.

    Görev hub'ı kapsamı (önerilen)

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

    Zamanlayıcı kapsamı (tüm görev hub'ları)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Erişim izni verin. Rol atamasını oluşturmak ve erişim vermek için aşağıdaki komutu çalıştırın.

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

    Beklenen çıkış

    Aşağıdaki çıkış örneği, zamanlayıcı düzeyinde Dayanıklı Görev Veri Katılımcısı rolü atanmış bir geliştirici kimliğini göstermektedir.

    {
      "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"
    }
    

Uyarı

Aşağıdaki yönerge, kapsamı belirli bir görev hub'ına göre belirlenmiş bir rol atamasını gösterir. Zamanlayıcıdaki tüm görev hub'larına erişmeniz gerekiyorsa, atamayı zamanlayıcı düzeyinde gerçekleştirin.

  1. Kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.

  2. Portalda Dayanıklı Görev Zamanlayıcı kaynağına gidin.

  3. Bir görev merkezi adı seçin.

  4. Sol menüde Erişim denetimi (IAM) öğesini seçin.

  5. Rol ataması eklemek için Ekle'yi seçin.

    Portaldaki Erişim Denetimi bölmesinde rol ataması ekleme işleminin ekran görüntüsü.

  6. Dayanıklı Görev Verileri Katkıda Bulunanı'yı arayın ve seçin. sonrakiseçin.

    Portalda Dayanıklı Görev Verileri Katkı Sağlayıcı rol ataması seçiminin ekran görüntüsü.

  7. Üyeler sekmesinde, Erişim ata için Yönetilen kimlik'i seçin.

  8. Üyeler için + Üye seç'i seçin.

  9. Yönetilen kimlikleri seçin bölmesinde Yönetilen kimlik açılan listesini genişletin ve Kullanıcı tarafından atanan yönetilen kimlik'i seçin.

    Portalda kullanacağınız kullanıcı tarafından atanan yönetilen kimlik türünü seçme işleminin ekran görüntüsü.

  10. Daha önce oluşturulan kullanıcı tarafından yönetilen kimliği seçin ve Seç'i seçin.

  11. Rolü atamayı tamamlamak için Gözden geçir ve ata seçin.

Uygulamanıza yönetilen kimlik atama

Artık kimliğin Dayanıklı Görev Zamanlayıcı'ya erişmek için gerekli RBAC'ye sahip olduğuna göre, bunu uygulamanıza atamanız gerekir.

  1. Yönetilen kimliğin kaynak kimliğini alın.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. Kimliği uygulamaya atayın.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. Portaldaki uygulamanızdan Ayarlar>Kimliği'ni seçin.

  2. Kullanıcı tarafından atanan sekmesini seçin.

  3. + Ekle'yi ve ardından son bölümde oluşturulan kimliği seçin. Add (Ekle) seçeneğini belirleyin.

    Portalda işlev uygulamanıza kullanıcı tarafından atanan yönetilen kimliği ekleme işleminin ekran görüntüsü.

Uygulamanıza ortam değişkenleri ekleme

Uygulamanıza aşağıdaki iki ortam değişkenini ekleyin:

Ortam değişkeni Değer 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 Görev hub'ının adı my-task-hub

Uyarı

system-assigned kimliği kullanıyorsanız, bağlantı dizgesinden ClientID parametresini çıkarın: "Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity".

  1. bağlantı dizesi için gerekli bilgileri alın.

    Zamanlayıcı uç noktasını alın:

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

    Yönetilen kimliğin istemci kimliğini alın:

    az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Uygulamanızda her iki ortam değişkenini de ayarlayın.

    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. bağlantı dizesi için gerekli bilgileri alın.

    Zamanlayıcı uç noktanızı almak için zamanlayıcı kaynağınızın Genel Bakış sekmesine gidin ve Temel Bileşenler bölümünde Uç Nokta'yı bulun.

    Yönetilen kimlik istemci kimliğinizi almak için yönetilen kimlik kaynağınızın Genel Bakış sekmesine gidin ve Temel Bilgiler bölümünde İstemci Kimliği'ni bulun.

     Azure portalında İstemci Kimliği konumunu gösteren yönetilen kimliğe genel bakış sayfasının ekran görüntüsü.

  2. Portalda uygulamanıza gidin.

  3. Sol menüde Ayarlar>Ortam değişkenleri'ni seçin.

  4. değerine DURABLE_TASK_SCHEDULER_CONNECTION_STRINGsahip adlı Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID> bir ortam değişkeni ekleyin.

  5. Görev hub'ınızın adıyla adlı TASKHUB_NAME bir ortam değişkeni ekleyin.

  6. Değişkenleri kaydetmek için Uygula'yı ve ardından Onayla'yı seçin.