Olayları Microsoft Entra korumalı uç noktalarına teslim etme

Bu makalede, Microsoft Entra Id kimlik doğrulamasını kullanarak Azure Event Grid'den (olay abonelikleri) web kancası uç noktalarınıza olay teslimini güvenli hale getirmek açıklanmaktadır. Microsoft Entra uygulamalarını yapılandırmayı ve Event Grid ile web kancalarınız arasında kimliği doğrulanmış bağlantılar kurmak için uygun rolleri atamayı öğreneceksiniz. Makale, tanıtım için Azure portalını kullanır. Ancak CLI, PowerShell veya SDK'ları kullanarak da özelliği etkinleştirebilirsiniz.

Önemli

Microsoft, bir güvenlik açığını gidermek için 30 Mart 2021'de bir olay aboneliği oluşturma veya güncelleştirme kapsamında ek erişim denetimi yaptı. Abone istemcisinin hizmet sorumlusunun sahip olması veya hedef uygulama hizmet sorumlusuna atanmış bir rolü olması gerekir. Bu makaledeki yeni yönergeleri izleyerek Microsoft Entra Uygulamanızı yeniden yapılandırın. Microsoft Entra uygulamalarına ve hizmet sorumlularına genel bakış için bkz. Microsoft kimlik platformu (v2.0) genel bakış.

Senaryolar

Bu makalede, aşağıdaki iki senaryonun nasıl uygulanacakları ayrıntılı olarak açıklanmaktadır:

  • Aynı Microsoft Entra kiracısında bulunan bir web kancasına olayları teslim etme ve olay aboneliği sağlama. Bu senaryoda bir Microsoft Entra kullanıcısını veya Microsoft Entra uygulamasını olay aboneliği yazıcısı olarak kullanabilirsiniz.

  • Olay aboneliğinden farklı bir Microsoft Entra kiracısında bulunan bir web kancasına olay teslimi. Bu senaryoda bir Microsoft Entra uygulamasını yalnızca etkinlik aboneliği yazarı olarak kullanabilirsiniz.

    İlk senaryoda, tüm adımları veya betikleri hem olay aboneliği hem de web kancası olan tek bir kiracıda çalıştırırsınız. İkinci senaryoda, olay aboneliğine sahip olan kiracıda ve web kancasına sahip olan kiracıda bazı adımlar çalıştırırsınız.

Olayları aynı Microsoft Entra kiracısında bir webhook'a teslim etme

Aşağıdaki diyagramda Event Grid'in olayları, olay aboneliğiyle aynı kiracıda bulunan bir web kancasına nasıl teslim ettiği gösterilmektedir.

Olayların aynı kiracıdaki bir web kancasına güvenli teslimini gösteren görüntü.

Bu bölümde iki alt bölüm vardır. Her iki senaryoyu veya ilginizi çeken senaryoyu okuyun.

Microsoft Entra kullanıcısını kullanarak olay aboneliğini yapılandırma

Bu bölümde, bir Microsoft Entra kullanıcısı kullanarak olay aboneliğini yapılandırma gösterilmektedir.

  1. Microsoft Entra (tek kiracı) ile çalışacak şekilde yapılandırılmış bir web kancası için Microsoft Entra uygulaması oluşturun.

  2. Kiracıda Azure Shell'i açın ve PowerShell ortamını seçin.

  3. Kiracıya bağlanmak için $webhookAadTenantId değerini değiştirin.

    • Değişken:
      • $webhookAadTenantId: Azure kiracı kimliği
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  4. Aşağıdaki betiği açın ve $webhookAppObjectId ve $eventSubscriptionWriterUserPrincipalName değerlerini tanımlayıcılarınızla güncelleştirin, ardından betiği çalıştırmaya devam edin.

    • Değişken:
      • $webhookAppObjectId: Web kancası için oluşturulan Microsoft Entra uygulama kimliği
      • $eventSubscriptionWriterUserPrincipalName: Olay aboneliği oluşturan kullanıcının Azure kullanıcı asıl adı

    Not

    $eventGridAppId değerini değiştirmeniz gerekmez. Bu betikte AzureEventGridSecureWebhookSubscriber$eventGridRoleName için ayarlanmıştır. Bu betiği yürütmek için Microsoft Entra Uygulama Yöneticisi rolünün üyesi olmanız veya Microsoft Entra Id'de web kancası uygulamasının hizmet sorumlusunun sahibi olmanız gerektiğini unutmayın.

    Aşağıdaki hata iletisini görürseniz hizmet sorumlusuna yükseltmeniz gerekir. Güvenlik açığını gidermek için 30 Mart 2021'de olay aboneliği oluşturma veya güncelleştirme işlemi kapsamında ek erişim denetimi yapıldı. Abone istemcisinin hizmet sorumlusunun sahip olması veya hedef uygulama hizmet sorumlusuna atanmış bir rolü olması gerekir.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    
  5. Portalda olay aboneliği oluştururken şu adımları izleyin:

    1. Uç nokta türünü Web Kancası olarak seçin.

    2. Uç nokta URI'sini belirtin.

      Azure portalında uç nokta türü web kancası seçme işleminin ekran görüntüsü.

    3. Olay Abonelikleri Oluştur sayfasının üst kısmındaki Ek özellikler sekmesini seçin.

    4. Ek özellikler sekmesinde şu adımları uygulayın:

      1. Microsoft Entra kimlik doğrulamasını kullan'ı seçin ve kiracı kimliğini ve uygulama kimliğini yapılandırın:

      2. Betiğin çıktısından Microsoft Entra kiracı kimliğini kopyalayın ve Microsoft Entra kiracı kimliği alanına girin.

      3. Betiğin çıktısından Microsoft Entra uygulama kimliğini kopyalayın ve Microsoft Entra Uygulama Kimliği alanına girin. Uygulama kimliğini kullanmak yerine Microsoft Entra Uygulama Kimliği URI'sini kullanabilirsiniz. Uygulama kimliği URI'si hakkında daha fazla bilgi için bu makaleye bakın.

        Azure portalında güvenli web kancası eylem yapılandırmasının ekran görüntüsü.

Microsoft Entra uygulaması kullanarak olay aboneliğini yapılandırma

Bu bölümde, bir Microsoft Entra uygulaması kullanarak olay aboneliğini yapılandırma gösterilmektedir.

  1. Microsoft Entra (Tek kiracı) ile çalışmak üzere yapılandırılmış Event Grid abonelik yazıcısı için bir Microsoft Entra uygulaması oluşturun.

  2. Microsoft Entra uygulaması için bir gizli dizi oluşturun ve değeri kaydedin (daha sonra bu değere ihtiyacınız vardır).

  3. Event Grid konusunun Erişim denetimi (IAM) sayfasına gidin ve Event Grid aboneliği yazıcı uygulamasına Event Grid Katılımcısı rolü atayın. Bu adım, Azure CLI kullanarak Microsoft Entra uygulamasıyla Azure'da oturum açtığınızda Event Grid kaynağına erişmenizi sağlar.

  4. Microsoft Entra (Tek kiracı) ile çalışmak üzere yapılandırılmış web kancası için bir Microsoft Entra uygulaması oluşturun.

  5. Kiracıda Azure Shell'i açın ve PowerShell ortamını seçin.

  6. Kiracıya bağlanmak için $webhookAadTenantId değerini değiştirin.

    • Değişken:
      • $webhookAadTenantId: Azure kiracı kimliği
    $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
    Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
    
  7. Aşağıdaki betiği açın ve $webhookAppObjectId ve $eventSubscriptionWriterAppId değerlerini tanımlayıcılarınızla güncelleştirin, ardından betiği çalıştırmaya devam edin.

    • Değişken:
      • $webhookAppObjectId: Web kancası için oluşturulan Microsoft Entra uygulama kimliği
      • $eventSubscriptionWriterAppId: Event Grid abonelik yazıcı uygulaması için Microsoft Entra uygulama kimliği.

    Not

    değerini $eventGridAppIddeğiştirmeniz gerekmez. Bu betikte, AzureEventGridSecureWebhookSubscriber olarak $eventGridRoleName ayarlandı. Bu betiği yürütmek için Microsoft Entra Uygulama Yöneticisi rolünün üyesi olmanız veya Microsoft Entra Id'de web kancası uygulamasının hizmet sorumlusunun sahibi olmanız gerektiğini unutmayın.

  8. Komutu çalıştırarak Microsoft Entra Application üzerindeki Event Grid aboneliği yazarı olarak oturum açın.

    az login --service-principal -u [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_ID] -p [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  9. komutunu çalıştırarak aboneliğinizi oluşturun.

    az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhook
    

    Not

    Bu senaryoda bir sistem konusu kullanılır. Azure CLI kullanarak özel konular veya etki alanları için abonelik oluşturmak istiyorsanız bkz . CLI başvurusu.

  10. Her şeyi doğru yapılandırdıysanız, Event Grid konu başlığınızda web kancası aboneliğini oluşturabilirsiniz.

    Not

    Bu noktada, Event Grid artık her iletide Microsoft Entra bearer token'ını webhook istemcisine aktarıyor. Web kancanızdaki yetkilendirme belirtecini doğrulamanız gerekir.

Farklı bir Microsoft Entra kiracısında bir web kancasına etkinlikleri teslim etme

Olay aboneliğiniz ile farklı Microsoft Entra kiracılarındaki webhook uç noktanız arasındaki bağlantının güvenliğini sağlamak için, bu bölümde gösterildiği gibi bir Microsoft Entra ID uygulaması kullanın. Şu anda Azure portalında bir Microsoft Entra ID kullanıcısı kullanarak bu bağlantının güvenliğini sağlayamazsınız.

Microsoft Entra ID ve Webhooks diyagramı ile çok kiracılı olayların ekran görüntüsü.

Diyagrama bağlı olarak, her iki kiracıyı da yapılandırmak için sonraki adımları izleyin.

Kiracı A

A Kiracısı'nda aşağıdaki adımları tamamlayın:

  1. Herhangi bir Microsoft Entra (çok kiracılı) ile çalışacak şekilde yapılandırılmış Event Grid abonelik oluşturucu için bir Microsoft Entra uygulaması oluşturun.

  2. Microsoft Entra uygulaması için bir gizli dizi oluşturun ve değeri kaydedin (daha sonra bu değere ihtiyacınız vardır).

  3. Event Grid konusunun Erişim denetimi (IAM) sayfasına gidin. Event Grid abonelik yazarının Microsoft Entra uygulamasına Event Grid Katkıda Bulunan Rolü atayın. Bu adım, Microsoft Entra uygulamasını ve Azure CLI'yi kullanarak Azure'da oturum açtığınızda uygulamaya Event Grid kaynağına erişim verir.

Kiracı B

B Kiracısı'nda aşağıdaki adımları tamamlayın:

  1. Microsoft Entra (tek kiracı) ile çalışacak şekilde yapılandırılmış web kancası için bir Microsoft Entra uygulaması oluşturun.

  2. Azure Shell'i açın ve PowerShell ortamını seçin.

  3. B Kiracısına bağlanmak için $webhookAadTenantId değerini değiştirin.

    • Değişkenler:

      • $webhookAadTenantId: B Kiracısı için Azure Kiracı Kimliği
      $webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]"
      Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
      
  4. Aşağıdaki betiği açın ve $webhookAppObjectId ve $eventSubscriptionWriterAppId değerlerini tanımlayıcılarınızla güncelleştirin. Ardından scripti çalıştırmaya devam edin.

    • Değişken:
      • $webhookAppObjectId: Web kancası için oluşturulan Microsoft Entra uygulama kimliği

      • $eventSubscriptionWriterAppId: Event Grid abonelik oluşturucu için Microsoft Entra uygulama kimliği

        Not

        değerini $eventGridAppIddeğiştirmeniz gerekmez. Bu betikte AzureEventGridSecureWebhookSubscriber için $eventGridRoleName ayarlanır. Bu betiği yürütmek için Microsoft Entra Uygulama Yöneticisi rolünün üyesi olmanız veya Microsoft Entra Id'de web kancası uygulamasının hizmet sorumlusunun sahibi olmanız gerektiğini unutmayın.

    Aşağıdaki hata iletisini görürseniz hizmet sorumlusuna yükseltmeniz gerekir. Güvenlik açığını gidermek için 30 Mart 2021'de olay aboneliği oluşturma veya güncelleştirme işlemi kapsamında ek erişim denetimi yapıldı. Abone istemcisinin hizmet sorumlusunun sahip olması veya hedef uygulama hizmet sorumlusuna atanmış bir rolü olması gerekir.

    New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment
    Code: Authorization_RequestDenied
    Message: Insufficient privileges to complete the operation.
    

Kiracı A

A Kiracısı'nda aşağıdaki adımları tamamlayın:

  1. Azure Shell'i açın ve komutunu çalıştırarak Event Grid abonelik yazıcısı Microsoft Entra Application olarak oturum açın.

    az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
    
  2. komutunu çalıştırarak aboneliğinizi oluşturun.

    az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_B_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhook
    

    Not

    Bu senaryoda bir Event Grid Sistem Konusu kullanıyorsunuz. Azure CLI kullanarak özel konular veya Event Grid etki alanları için abonelik oluşturmak için buraya bakın.

  3. Her şeyi doğru yapılandırdıysanız, Event Grid konu başlığınızda web kancası aboneliğini oluşturabilirsiniz.

    Not

    Bu noktada Event Grid, her iletide webhook istemcisine Microsoft Entra Bearer Token'ı geçirir. Web kancanızda Yetkilendirme belirtecini doğrulamanız gerekir.