Event Grid güvenliğini ve kimlik doğrulamasıEvent Grid security and authentication

Azure Event Grid, kimlik doğrulaması üç tür vardır:Azure Event Grid has three types of authentication:

  • Web kancası olay teslimiWebHook event delivery
  • Olay abonelikleriEvent subscriptions
  • Özel Konu yayımlamaCustom topic publishing

Web kancası olay teslimiWebHook Event delivery

Web kancaları olayları Azure Event Grid'den almak için birçok yöntemlerinden biridir.Webhooks are one of the many ways to receive events from Azure Event Grid. Yeni bir olay hazır olduğunda, Event Grid hizmet istek gövdesinde olay ile yapılandırılmış uç noktasına bir HTTP isteği gönderir.When a new event is ready, Event Grid service POSTs an HTTP request to the configured endpoint with the event in the request body.

Web kancalarını destekleyen birçok diğer hizmetleri gibi Event Grid, olayları için bu endpoint göndermeye başlamadan sahipliğini Web kancası uç noktanızın kanıtlamak gerektirir.Like many other services that support webhooks, Event Grid requires you to prove ownership of your Webhook endpoint before it starts delivering events to that endpoint. Bu gereksinim, uç noktanızı olaylarla taşmasını gelen kötü niyetli bir kullanıcı önler.This requirement prevents a malicious user from flooding your endpoint with events. Aşağıda listelenen üç Azure hizmetlerinden herhangi birinin kullandığınızda, Azure altyapısının bu doğrulama otomatik olarak işler:When you use any of the three Azure services listed below, the Azure infrastructure automatically handles this validation:

HTTP tetikleyicisi tabanlı Azure işlevi gibi başka türde bir uç noktasını kullanıyorsanız, Event Grid ile bir doğrulama anlaşması'na katılmak uç nokta kodunuzun gerekir.If you're using any other type of endpoint, such as an HTTP trigger based Azure function, your endpoint code needs to participate in a validation handshake with Event Grid. Event Grid aboneliği doğrulama iki şekilde destekler.Event Grid supports two ways of validating the subscription.

  1. ValidationCode el sıkışması (programlı) : Uç noktanız için kaynak kodu denetimi, bu yöntem tavsiye edilir.ValidationCode handshake (programmatic): If you control the source code for your endpoint, this method is recommended. Olay aboneliği oluşturma sırasında Event Grid aboneliği doğrulama olayı uç noktanıza gönderir.At the time of event subscription creation, Event Grid sends a subscription validation event to your endpoint. Bu olayın şeması için başka bir Event Grid olayı benzerdir.The schema of this event is similar to any other Event Grid event. Bu olay veri bölümünü içeren bir validationCode özelliği.The data portion of this event includes a validationCode property. Uygulamanızı doğrulama isteği için beklenen olay aboneliği ve doğrulama kodu Event grid'e yankılayan olduğunu doğrular.Your application verifies that the validation request is for an expected event subscription, and echoes the validation code to Event Grid. Bu anlaşma mekanizması tüm Event Grid sürümlerinde desteklenir.This handshake mechanism is supported in all Event Grid versions.

  2. ValidationURL el sıkışması (el ile) : Bazı durumlarda, kaynak kodu ValidationCode el sıkışması uygulamak için uç nokta erişemez.ValidationURL handshake (manual): In certain cases, you can't access the source code of the endpoint to implement the ValidationCode handshake. Örneğin, bir üçüncü taraf hizmet kullanın (gibi Zapier veya IFTTT), program aracılığıyla doğrulama kodu ile yanıt veremez.For example, if you use a third-party service (like Zapier or IFTTT), you can't programmatically respond with the validation code.

    Event Grid, sürümü 2018-05-01-preview ile başlayarak, el ile doğrulama el sıkışması destekler.Starting with version 2018-05-01-preview, Event Grid supports a manual validation handshake. Bir olay aboneliği bir SDK veya API sürümü 2018-05-01-preview'ı kullanan aracıyla oluştururken ya da daha sonra Event Grid gönderir, bir validationUrl abonelik doğrulama olayı veri bölümünü özelliği.If you're creating an event subscription with an SDK or tool that uses API version 2018-05-01-preview or later, Event Grid sends a validationUrl property in the data portion of the subscription validation event. Anlaşma tamamlamak için bulma olay verileri ve el ile bu URL'yi bir GET isteği gönder.To complete the handshake, find that URL in the event data and manually send a GET request to it. Bir REST istemcisi ya da web tarayıcınızı kullanabilirsiniz.You can use either a REST client or your web browser.

    Sağlanan URL'de 5 dakika için geçerlidir.The provided URL is valid for 5 minutes. Bu süre boyunca, olay aboneliğinin sağlama durumu: AwaitingManualAction.During that time, the provisioning state of the event subscription is AwaitingManualAction. 5 dakika içinde el ile doğrulama tamamlamazsanız, sağlama durumu kümesine Failed.If you don't complete the manual validation within 5 minutes, the provisioning state is set to Failed. Olay aboneliği el ile doğrulama başlatmadan önce yeniden oluşturmanız gerekir.You'll have to create the event subscription again before starting the manual validation.

    Bu kimlik doğrulama mekanizması ayrıca el ile doğrulama modunda almadan önce doğrulama olayı için POST kabul edildi bildiği bir HTTP durum kodu 200 döndürülecek Web kancası uç noktası gerektirir.This authentication mechanism also requires the webhook endpoint to return an HTTP status code of 200 so that it knows that the POST for the validation event was accepted before it can be put in the manual validation mode. Diğer bir deyişle, uç nokta 200 döndürür, ancak doğrulama yanıt program aracılığıyla geri dönmez modunu el ile doğrulama moduna geçirilir.In other words, if the endpoint returns 200 but doesn’t return back a validation response programmatically, the mode is transitioned to the manual validation mode. Doğrulama URL'si GET 5 dakika içinde varsa, doğrulama anlaşma başarılı olması için değerlendirilir.If there is a GET on the validation URL within 5 minutes, the validation handshake is considered to be successful.

Not

Doğrulama için otomatik olarak imzalanan sertifikaların kullanılması desteklenmiyor.Using self-signed certificates for validation isn't supported. İmzalı bir sertifika bir sertifika yetkilisinden (CA) kullanın.Use a signed certificate from a certificate authority (CA) instead.

Doğrulama ayrıntılarıValidation details

  • Olay aboneliği oluşturma/güncelleştirme zaman Event Grid aboneliği doğrulama olayı hedef uç noktasına gönderir.At the time of event subscription creation/update, Event Grid posts a subscription validation event to the target endpoint.
  • Olayı bir üst bilgi değeri içeren "aeg olay türü: SubscriptionValidation".The event contains a header value "aeg-event-type: SubscriptionValidation".
  • Olay gövdesinde diğer Event Grid olaylarına aynı şemaya sahip.The event body has the same schema as other Event Grid events.
  • Olayın eventType özelliği Microsoft.EventGrid.SubscriptionValidationEvent.The eventType property of the event is Microsoft.EventGrid.SubscriptionValidationEvent.
  • Olayın veri özelliği içeren bir validationCode özelliği ile rastgele oluşturulmuş bir dize.The data property of the event includes a validationCode property with a randomly generated string. Örneğin, "validationCode: acb13...".For example, "validationCode: acb13…".
  • Olay verileri de içeren bir validationUrl abonelik el ile doğrulamak için bir URL ile özelliği.The event data also includes a validationUrl property with a URL for manually validating the subscription.
  • Dizi doğrulama olay içeriyor.The array contains only the validation event. Doğrulama kodu geri echo sonra gelen diğer olayları ayrı bir istek gönderilir.Other events are sent in a separate request after you echo back the validation code.
  • EventGrid veri düzlemi SDK'ları abonelik doğrulama olay verileri ve abonelik doğrulama yanıt karşılık gelen sınıfları içerir.The EventGrid DataPlane SDKs have classes corresponding to the subscription validation event data and subscription validation response.

Bir örnek SubscriptionValidationEvent aşağıdaki örnekte gösterilmiştir:An example SubscriptionValidationEvent is shown in the following example:

[{
  "id": "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66",
  "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "subject": "",
  "data": {
    "validationCode": "0000000000-0000-0000-0000-00000000000000",
    "validationUrl": "https://rp-eastus2.eventgrid.azure.net:553/eventsubscriptions/estest/validate?id=0000000000-0000-0000-0000-0000000000000&t=2018-04-26T20:30:54.4538837Z&apiVersion=2018-05-01-preview&token=1A1A1A1A"
  },
  "eventType": "Microsoft.EventGrid.SubscriptionValidationEvent",
  "eventTime": "2018-01-25T22:12:19.4556811Z",
  "metadataVersion": "1",
  "dataVersion": "1"
}]

Uç nokta sahipliği kanıtlamak için geri validationResponse özelliğinde doğrulama kodu aşağıdaki örnekte gösterildiği gibi echo:To prove endpoint ownership, echo back the validation code in the validationResponse property, as shown in the following example:

{
  "validationResponse": "512d38b6-c7b8-40c8-89fe-f46f9e9622b6"
}

Bir HTTP 200 OK yanıtı durum kodu döndürmelidir.You must return an HTTP 200 OK response status code. HTTP 202 kabul edildi geçerli bir Event Grid aboneliği doğrulama yanıt tanınmıyor.HTTP 202 Accepted is not recognized as a valid Event Grid subscription validation response.

Veya doğrulama URL'si için bir GET isteği göndererek abonelik el ile doğrulayabilirsiniz.Or, you can manually validate the subscription by sending a GET request to the validation URL. Olay aboneliği doğrulandı kadar bir bekleme durumunda kalır.The event subscription stays in a pending state until validated.

Abonelik doğrulama anlaşma işleme ilişkin bir örnek için bkz. bir C# örnek.For an example of handling the subscription validation handshake, see a C# sample.

Denetim listesiChecklist

Olay aboneliği oluşturma gibi bir hata iletisini görüyorsanız sırasında "belirtilen uç nokta https doğrulama girişimi://your-endpoint-here başarısız oldu.During event subscription creation, if you're seeing an error message such as "The attempt to validate the provided endpoint https://your-endpoint-here failed. Daha fazla bilgi için https ziyaret edin://aka.ms/esvalidation ", içinde doğrulama el sıkışması başarısız olduğunu gösterir.For more details, visit https://aka.ms/esvalidation", it indicates that there's a failure in the validation handshake. Bu hatayı gidermek için aşağıdaki durumlara doğrulayın:To resolve this error, verify the following aspects:

  • Hedef uç noktasında denetim uygulama kodu var mı?Do you have control of the application code in the target endpoint? Örneğin, Azure işlevi bir HTTP tetikleyici tabanlı yazıyorsanız, değişiklik yapmak için uygulama koduna erişmeniz gerekiyor?For example, if you're writing an HTTP trigger based Azure Function, do you have access to the application code to make changes to it?

  • Uygulama koduna erişiminiz varsa, yukarıdaki örnekte gösterildiği gibi temel ValidationCode el sıkışması mekanizması uygulayın.If you have access to the application code, implement the ValidationCode based handshake mechanism as shown in the sample above.

  • Uygulama kodu (örneğin, Web kancalarını destekleyen üçüncü taraf bir hizmet kullanıyorsanız) erişimi yoksa, el ile anlaşma mekanizması kullanabilirsiniz.If you don't have access to the application code (for example, if you're using a third-party service that supports webhooks), you can use the manual handshake mechanism. Doğrulama olay validationUrl almak için 2018-05-01-Önizleme API sürümü veya üzeri (yükleme Event Grid Azure CLI uzantısı) kullandığınızdan emin olun.Make sure you're using the 2018-05-01-preview API version or later (install Event Grid Azure CLI extension) to receive the validationUrl in the validation event. El ile doğrulama anlaşma tamamlanması değerini almak validationUrl özelliği web tarayıcınızda bu URL'yi ziyaret edin.To complete the manual validation handshake, get the value of the validationUrl property and visit that URL in your web browser. Doğrulama başarılı olursa, doğrulama başarılı olduğunu, web tarayıcınızda bir ileti görürsünüz.If validation is successful, you should see a message in your web browser that validation is successful. Olay aboneliğinin provisioningState "başarılı olduğunu" görürsünüz.You'll see that event subscription's provisioningState is "Succeeded".

Olay teslimi güvenliğiEvent delivery security

Bir olay aboneliği oluştururken, Web kancası URL'si sorgu parametreleri ekleyerek, Web kancası uç noktası güvenli hale getirebilirsiniz.You can secure your webhook endpoint by adding query parameters to the webhook URL when creating an Event Subscription. Ayarlanmış bir gizli dizi gibi olması için bu sorgu parametreleri bir erişim belirteci.Set one of these query parameters to be a secret such as an access token. Web kancası olay geçerli izinleriyle Event Grid'den gelen tanımak için gizli anahtarı kullanabilirsiniz.The webhook can use the secret to recognize the event is coming from Event Grid with valid permissions. Olay Kılavuzu her Web kancası olay teslimi bu sorgu parametreleri içerir.Event Grid will include these query parameters in every event delivery to the webhook.

Olay aboneliği düzenlerken, sorgu parametreleri görüntülenmiyor veya sürece döndürülen --dahil tam-endpoint-url parametresi Azure'da kullanılan CLI.When editing the Event Subscription, the query parameters aren't displayed or returned unless the --include-full-endpoint-url parameter is used in Azure CLI.

Son olarak, Azure Event Grid yalnızca HTTPS Web kancası uç noktaları desteklediğini unutmayın.Finally, it's important to note that Azure Event Grid only supports HTTPS webhook endpoints.

Olay aboneliğiEvent subscription

Bir olaya abone olmak için olay kaynağı ve işleyici erişimi olmasını kanıtlamaları gerekir.To subscribe to an event, you must prove that you have access to the event source and handler. Bir Web kancası sahibi olduğunu doğrulayan ve önceki bölümde ele.Proving that you own a WebHook was covered in the preceding section. Bir Web kancası (örneğin, bir olay hub'ı veya kuyruk depolama) olmayan bir olay işleyicisi kullanıyorsanız, bu kaynağa yazma erişimi gerekir.If you're using an event handler that isn't a WebHook (such as an event hub or queue storage), you need write access to that resource. Bu izinleri denetimi, yetkisiz bir kullanıcı, kaynağınıza olayları göndermesini engeller.This permissions check prevents an unauthorized user from sending events to your resource.

Olmalıdır Microsoft.EventGrid/EventSubscriptions/Write olay kaynağı olan kaynağı izni.You must have the Microsoft.EventGrid/EventSubscriptions/Write permission on the resource that is the event source. Kaynağın yeni bir abonelik kapsamda yazmakta olduğunuz çünkü bu iznine sahip olmanız gerekir.You need this permission because you're writing a new subscription at the scope of the resource. Gerekli kaynak sistem konusu ya da özel konuya abone göre farklılık gösterir.The required resource differs based on whether you're subscribing to a system topic or custom topic. Bu bölümde iki türü de açıklanmaktadır.Both types are described in this section.

Sistem konuları (Azure hizmet yayımcılar)System topics (Azure service publishers)

Sistem konuları için yeni bir olay aboneliği kapsamında olayın yayımlanması kaynak yazma izni gerekir.For system topics, you need permission to write a new event subscription at the scope of the resource publishing the event. Kaynak biçimi şu şekildedir: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider}/{resource-type}/{resource-name}The format of the resource is: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider}/{resource-type}/{resource-name}

Örneğin, bir depolama hesabı üzerinde bir olaya abone olmak için adlı myacct, üzerinde Microsoft.EventGrid/EventSubscriptions/Write izninizin olması gerekiyor: /subscriptions/####/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myacctFor example, to subscribe to an event on a storage account named myacct, you need the Microsoft.EventGrid/EventSubscriptions/Write permission on: /subscriptions/####/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myacct

Özel konularCustom topics

Özel konu için yeni olay aboneliğinizi kapsamında olay Kılavuzu konusu yazma izni gerekir.For custom topics, you need permission to write a new event subscription at the scope of the event grid topic. Kaynak biçimi şu şekildedir: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.EventGrid/topics/{topic-name}The format of the resource is: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.EventGrid/topics/{topic-name}

Örneğin, bir özel konuya abone olma adlı mytopic, üzerinde Microsoft.EventGrid/EventSubscriptions/Write izninizin olması gerekiyor: /subscriptions/####/resourceGroups/testrg/providers/Microsoft.EventGrid/topics/mytopicFor example, to subscribe to a custom topic named mytopic, you need the Microsoft.EventGrid/EventSubscriptions/Write permission on: /subscriptions/####/resourceGroups/testrg/providers/Microsoft.EventGrid/topics/mytopic

Özel Konu yayımlamaCustom topic publishing

Özel konu, paylaşılan erişim imzası (SAS) veya anahtar kimlik doğrulaması kullanın.Custom topics use either Shared Access Signature (SAS) or key authentication. SAS öneririz, ancak anahtar kimlik doğrulaması basit bir programlama sağlar ve birçok mevcut Web kancası yayımcıları ile uyumludur.We recommend SAS, but key authentication provides simple programming, and is compatible with many existing webhook publishers.

HTTP üst bilgisi kimlik doğrulaması değeri içerir.You include the authentication value in the HTTP header. SAS için kullanmak aeg sas belirteci üstbilgi değeri.For SAS, use aeg-sas-token for the header value. Anahtar kimlik doğrulaması için aeg sas anahtarı üstbilgi değeri.For key authentication, use aeg-sas-key for the header value.

Anahtar kimlik doğrulamasıKey authentication

Anahtar kimlik doğrulaması, kimlik doğrulamasının en basit biçimidir.Key authentication is the simplest form of authentication. Biçimini kullanın: aeg-sas-key: <your key>Use the format: aeg-sas-key: <your key>

Örneğin, bir anahtar ile geçirin:For example, you pass a key with:

aeg-sas-key: VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg==

SAS belirteçleriSAS tokens

Event Grid için SAS belirteci, kaynak, sona erme süresini ve imza içerir.SAS tokens for Event Grid include the resource, an expiration time, and a signature. SAS belirteci biçimi: r={resource}&e={expiration}&s={signature}.The format of the SAS token is: r={resource}&e={expiration}&s={signature}.

Kaynak için olayları gönderiyorsunuz olay Kılavuzu konusu yoludur.The resource is the path for the event grid topic to which you're sending events. Örneğin, geçerli bir kaynak yolu şöyledir: https://<yourtopic>.<region>.eventgrid.azure.net/eventGrid/api/eventsFor example, a valid resource path is: https://<yourtopic>.<region>.eventgrid.azure.net/eventGrid/api/events

Bir anahtar, imza üretYou generate the signature from a key.

Örneğin, geçerli aeg sas belirteci değerdir:For example, a valid aeg-sas-token value is:

aeg-sas-token: r=https%3a%2f%2fmytopic.eventgrid.azure.net%2feventGrid%2fapi%2fevent&e=6%2f15%2f2017+6%3a20%3a15+PM&s=a4oNHpRZygINC%2fBPjdDLOrc6THPy3tDcGHw1zP4OajQ%3d

Aşağıdaki örnek, Event Grid ile kullanmak için bir SAS belirteci oluşturur:The following example creates a SAS token for use with Event Grid:

static string BuildSharedAccessSignature(string resource, DateTime expirationUtc, string key)
{
    const char Resource = 'r';
    const char Expiration = 'e';
    const char Signature = 's';

    string encodedResource = HttpUtility.UrlEncode(resource);
    var culture = CultureInfo.CreateSpecificCulture("en-US");
    var encodedExpirationUtc = HttpUtility.UrlEncode(expirationUtc.ToString(culture));

    string unsignedSas = $"{Resource}={encodedResource}&{Expiration}={encodedExpirationUtc}";
    using (var hmac = new HMACSHA256(Convert.FromBase64String(key)))
    {
        string signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(unsignedSas)));
        string encodedSignature = HttpUtility.UrlEncode(signature);
        string signedSas = $"{unsignedSas}&{Signature}={encodedSignature}";

        return signedSas;
    }
}

Yönetim erişim denetimiManagement Access Control

Azure Event Grid olay abonelikleri listesi gibi çeşitli yönetim işlemlerini yapmak için yenilerini oluşturun ve anahtarlar oluşturmak için farklı kullanıcılara verilen erişim düzeyini denetlemenize olanak tanır.Azure Event Grid allows you to control the level of access given to different users to do various management operations such as list event subscriptions, create new ones, and generate keys. Event Grid, Azure'nın rol tabanlı erişim denetimi (RBAC) kullanır.Event Grid uses Azure's role-based access control (RBAC).

İşlem türleriOperation types

Event Grid, aşağıdaki eylemleri destekler:Event Grid supports the following actions:

  • Microsoft.EventGrid/*/readMicrosoft.EventGrid/*/read
  • Microsoft.EventGrid/*/writeMicrosoft.EventGrid/*/write
  • Microsoft.EventGrid/*/deleteMicrosoft.EventGrid/*/delete
  • Microsoft.EventGrid/eventSubscriptions/getFullUrl/actionMicrosoft.EventGrid/eventSubscriptions/getFullUrl/action
  • Microsoft.EventGrid/topics/listKeys/actionMicrosoft.EventGrid/topics/listKeys/action
  • Microsoft.EventGrid/topics/regenerateKey/actionMicrosoft.EventGrid/topics/regenerateKey/action

Son üç işlemi dışında normal okuma işlemleri filtrelenmiş büyük olasılıkla gizli bilgi döndürür.The last three operations return potentially secret information, which gets filtered out of normal read operations. Bu işlemler için erişimi kısıtlamak önerilir.It's recommended that you restrict access to these operations.

Yerleşik rollerBuilt-in roles

Event Grid Olay Aboneliklerini yönetmek için iki yerleşik rol sağlar.Event Grid provides two built-in roles for managing event subscriptions. Uygularken önemli oldukları olay etki alanı çünkü bunlar kullanıcılara konular, olay etki alanı, abone olmak için ihtiyaç duydukları izinleri verin.They are important when implementing event domains because they give users the permissions they need to subscribe to topics in your event domain. Bu roller, olay abonelikleri üzerinde odaklanır ve konuları oluşturma gibi eylemler için erişim izni yok.These roles are focused on event subscriptions and don't grant access for actions such as creating topics.

Yapabilecekleriniz bir kullanıcı veya grup bu rolleri Ata.You can assign these roles to a user or group.

EventGrid EventSubscription katkıda bulunan (Önizleme) : Event Grid aboneliği işlemleri yönetmeEventGrid EventSubscription Contributor (Preview): manage Event Grid subscription operations

[
  {
    "Description": "Lets you manage EventGrid event subscription operations.",
    "IsBuiltIn": true,
    "Id": "428e0ff05e574d9ca2212c70d0e0a443",
    "Name": "EventGrid EventSubscription Contributor (Preview)",
    "IsServiceRole": false,
    "Permissions": [
      {
        "Actions": [
          "Microsoft.Authorization/*/read",
          "Microsoft.EventGrid/eventSubscriptions/*",
          "Microsoft.EventGrid/topicTypes/eventSubscriptions/read",
          "Microsoft.EventGrid/locations/eventSubscriptions/read",
          "Microsoft.EventGrid/locations/topicTypes/eventSubscriptions/read",
          "Microsoft.Insights/alertRules/*",
          "Microsoft.Resources/deployments/*",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Support/*"
        ],
        "NotActions": [],
        "DataActions": [],
        "NotDataActions": [],
        "Condition": null
      }
    ],
    "Scopes": [
      "/"
    ]
  }
]

EventGrid EventSubscription Okuyucu (Önizleme) : Event Grid aboneliği edininEventGrid EventSubscription Reader (Preview): read Event Grid subscriptions

[
  {
    "Description": "Lets you read EventGrid event subscriptions.",
    "IsBuiltIn": true,
    "Id": "2414bbcf64974faf8c65045460748405",
    "Name": "EventGrid EventSubscription Reader (Preview)",
    "IsServiceRole": false,
    "Permissions": [
      {
        "Actions": [
          "Microsoft.Authorization/*/read",
          "Microsoft.EventGrid/eventSubscriptions/read",
          "Microsoft.EventGrid/topicTypes/eventSubscriptions/read",
          "Microsoft.EventGrid/locations/eventSubscriptions/read",
          "Microsoft.EventGrid/locations/topicTypes/eventSubscriptions/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read"
        ],
        "NotActions": [],
        "DataActions": [],
        "NotDataActions": []
       }
    ],
    "Scopes": [
      "/"
    ]
  }
]

Özel rollerCustom roles

Yerleşik roller farklı olan izinleri belirtmeniz gerekiyorsa, özel roller oluşturabilirsiniz.If you need to specify permissions that are different than the built-in roles, you can create custom roles.

Farklı eylemlerde bulunmak kullanıcıların örnek Event Grid rol tanımları aşağıda verilmiştir.The following are sample Event Grid role definitions that allow users to take different actions. Bunlar yalnızca olay abonelikleri daha geniş erişim vermek için bu özel roller yerleşik rollerden farklıdır.These custom roles are different from the built-in roles because they grant broader access than just event subscriptions.

EventGridReadOnlyRole.json: Yalnızca salt okunur işlemlere izin verir.EventGridReadOnlyRole.json: Only allow read-only operations.

{
  "Name": "Event grid read only role",
  "Id": "7C0B6B59-A278-4B62-BA19-411B70753856",
  "IsCustom": true,
  "Description": "Event grid read only role",
  "Actions": [
    "Microsoft.EventGrid/*/read"
  ],
  "NotActions": [
  ],
  "AssignableScopes": [
    "/subscriptions/<Subscription Id>"
  ]
}

EventGridNoDeleteListKeysRole.json: Kısıtlı sonrası eylemler izin ancak Sil eylemlerinin izin vermeyin.EventGridNoDeleteListKeysRole.json: Allow restricted post actions but disallow delete actions.

{
  "Name": "Event grid No Delete Listkeys role",
  "Id": "B9170838-5F9D-4103-A1DE-60496F7C9174",
  "IsCustom": true,
  "Description": "Event grid No Delete Listkeys role",
  "Actions": [
    "Microsoft.EventGrid/*/write",
    "Microsoft.EventGrid/eventSubscriptions/getFullUrl/action"
    "Microsoft.EventGrid/topics/listkeys/action",
    "Microsoft.EventGrid/topics/regenerateKey/action"
  ],
  "NotActions": [
    "Microsoft.EventGrid/*/delete"
  ],
  "AssignableScopes": [
    "/subscriptions/<Subscription id>"
  ]
}

EventGridContributorRole.json: Tüm event grid Eylemler sağlar.EventGridContributorRole.json: Allows all event grid actions.

{
  "Name": "Event grid contributor role",
  "Id": "4BA6FB33-2955-491B-A74F-53C9126C9514",
  "IsCustom": true,
  "Description": "Event grid contributor role",
  "Actions": [
    "Microsoft.EventGrid/*/write",
    "Microsoft.EventGrid/*/delete",
    "Microsoft.EventGrid/topics/listkeys/action",
    "Microsoft.EventGrid/topics/regenerateKey/action",
    "Microsoft.EventGrid/eventSubscriptions/getFullUrl/action"
  ],
  "NotActions": [],
  "AssignableScopes": [
    "/subscriptions/<Subscription id>"
  ]
}

Özel rollerle oluşturabilirsiniz PowerShell, Azure CLI, ve REST.You can create custom roles with PowerShell, Azure CLI, and REST.

Sonraki adımlarNext steps