Azure Service Bus kaynaklara erişmek için Azure Active Directory ile yönetilen bir kimliğin kimliğini doğrulamaAuthenticate a managed identity with Azure Active Directory to access Azure Service Bus resources

Azure kaynakları Için Yönetilen kimlikler , uygulama kodunuzun çalıştırıldığı dağıtımla ilişkili güvenli bir kimlik oluşturmanıza olanak sağlayan bir çapraz Azure özelliğidir.Managed identities for Azure resources is a cross-Azure feature that enables you to create a secure identity associated with the deployment under which your application code runs. Daha sonra bu kimliği, uygulamanızın ihtiyaç duyacağı belirli Azure kaynaklarına erişim için özel izinler veren erişim denetimi rolleriyle ilişkilendirebilirsiniz.You can then associate that identity with access-control roles that grant custom permissions for accessing specific Azure resources that your application needs.

Yönetilen kimlikler ile Azure platformu bu çalışma zamanı kimliğini yönetir.With managed identities, the Azure platform manages this runtime identity. Uygulama kodunuzda veya yapılandırmanızda, kimliğin kendisi için ya da erişmeniz gereken kaynaklar için erişim anahtarlarını depolamanız ve korumanız gerekmez.You do not need to store and protect access keys in your application code or configuration, either for the identity itself, or for the resources you need to access. Bir Azure App Service uygulamasının içinde veya Azure kaynakları için etkinleştirilmiş yönetilen varlıklara sahip bir sanal makinede çalışan Service Bus istemci uygulamasının SAS kurallarını ve anahtarlarını veya diğer erişim belirteçlerini işlemesi gerekmez.A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. İstemci uygulaması yalnızca Service Bus mesajlaşma ad alanının uç nokta adresine ihtiyaç duyuyor.The client app only needs the endpoint address of the Service Bus Messaging namespace. Uygulama bağlandığında, Service Bus yönetilen varlığın bağlamını Bu makalenin ilerleyen kısımlarında bir örnekte gösterilen bir işlemde istemciye bağlar.When the app connects, Service Bus binds the managed entity's context to the client in an operation that is shown in an example later in this article. Yönetilen bir kimlikle ilişkilduktan sonra, Service Bus istemciniz tüm yetkili işlemleri yapabilir.Once it is associated with a managed identity, your Service Bus client can do all authorized operations. Yönetilen bir varlık Service Bus rolleriyle ilişkilendirerek yetki verilir.Authorization is granted by associating a managed entity with Service Bus roles.

Genel BakışOverview

Bir güvenlik sorumlusu (Kullanıcı, Grup veya uygulama) bir Service Bus varlığına erişmeyi denediğinde, isteğin yetkilendirilmiş olması gerekir.When a security principal (a user, group, or application) attempts to access a Service Bus entity, the request must be authorized. Azure AD ile bir kaynağa erişim iki adımlı bir işlemdir.With Azure AD, access to a resource is a two-step process.

  1. İlk olarak, güvenlik sorumlusunun kimliği doğrulanır ve bir OAuth 2,0 belirteci döndürülür.First, the security principal’s identity is authenticated, and an OAuth 2.0 token is returned. Belirteç istemek için kaynak adı https://servicebus.azure.net .The resource name to request a token is https://servicebus.azure.net.
  2. Ardından, belirteç, belirtilen kaynağa erişim yetkisi vermek için Service Bus hizmetine bir isteğin bir parçası olarak geçirilir.Next, the token is passed as part of a request to the Service Bus service to authorize access to the specified resource.

Kimlik doğrulama adımı, bir uygulama isteğinin çalışma zamanında bir OAuth 2,0 erişim belirteci içermesi gerekir.The authentication step requires that an application request contains an OAuth 2.0 access token at runtime. Bir uygulama bir Azure VM 'si, bir sanal makine ölçek kümesi veya bir Azure Işlev uygulaması gibi bir Azure varlığı içinde çalışıyorsa, kaynaklara erişmek için yönetilen bir kimlik kullanabilir.If an application is running within an Azure entity such as an Azure VM, a virtual machine scale set, or an Azure Function app, it can use a managed identity to access the resources.

Yetkilendirme adımı, güvenlik sorumlusuna bir veya daha fazla Azure rolünün atanmasını gerektirir.The authorization step requires that one or more Azure roles be assigned to the security principal. Azure Service Bus, Service Bus kaynakları için izin kümelerini çevreleyen Azure rolleri sağlar.Azure Service Bus provides Azure roles that encompass sets of permissions for Service Bus resources. Bir güvenlik sorumlusu 'na atanan roller, sorumlunun sahip olacağı izinleri belirleyebilir.The roles that are assigned to a security principal determine the permissions that the principal will have. Azure Service Bus için Azure rolleri atama hakkında daha fazla bilgi için bkz. Azure yerleşik rolleri Azure Service Bus.To learn more about assigning Azure roles to Azure Service Bus, see Azure built-in roles for Azure Service Bus.

Service Bus istek yapan yerel uygulamalar ve Web uygulamaları Azure AD ile de yetki verebilir.Native applications and web applications that make requests to Service Bus can also authorize with Azure AD. Bu makalede, bir erişim belirtecinin nasıl isteneceğini ve Service Bus kaynakları için istekleri yetkilendirmek üzere nasıl kullanılacağı gösterilmektedir.This article shows you how to request an access token and use it to authorize requests for Service Bus resources.

Erişim hakları için Azure rolleri atamaAssigning Azure roles for access rights

Azure Active Directory (Azure AD), Azure rol tabanlı erişim denetimi (Azure RBAC)aracılığıyla güvenli kaynaklara erişim hakları verir.Azure Active Directory (Azure AD) authorizes access rights to secured resources through Azure role-based access control (Azure RBAC). Azure Service Bus, Service Bus varlıklara erişmek için kullanılan ortak izin kümelerini çevreleyen Azure yerleşik rollerinin bir kümesini tanımlar ve verilere erişmek için özel roller de tanımlayabilirsiniz.Azure Service Bus defines a set of Azure built-in roles that encompass common sets of permissions used to access Service Bus entities and you can also define custom roles for accessing the data.

Azure AD güvenlik sorumlusuna bir Azure rolü atandığında Azure, bu güvenlik sorumlusu için bu kaynaklara erişim izni verir.When an Azure role is assigned to an Azure AD security principal, Azure grants access to those resources for that security principal. Erişim, abonelik düzeyi, kaynak grubu veya Service Bus ad alanı kapsamına eklenebilir.Access can be scoped to the level of subscription, the resource group, or the Service Bus namespace. Azure AD güvenlik sorumlusu, bir Kullanıcı, Grup, uygulama hizmeti sorumlusu veya Azure kaynakları için yönetilen bir kimlik olabilir.An Azure AD security principal may be a user, a group, an application service principal, or a managed identity for Azure resources.

Azure Service Bus için Azure yerleşik rolleriAzure built-in roles for Azure Service Bus

Azure Service Bus için ad alanları ve tüm ilgili kaynaklar Azure portal ve Azure Kaynak yönetimi API 'SI aracılığıyla Azure RBAC modeli kullanılarak zaten korunuyor.For Azure Service Bus, the management of namespaces and all related resources through the Azure portal and the Azure resource management API is already protected using the Azure RBAC model. Azure, bir Service Bus ad alanına erişim yetkilendirmek için aşağıdaki Azure yerleşik rollerini sağlar:Azure provides the below Azure built-in roles for authorizing access to a Service Bus namespace:

Kaynak kapsamıResource scope

Güvenlik sorumlusuna bir Azure rolü atamadan önce, güvenlik sorumlusunun sahip olması gereken erişimin kapsamını saptayın.Before you assign an Azure role to a security principal, determine the scope of access that the security principal should have. En iyi uygulamalar, yalnızca en dar olası kapsamı sağlamak için her zaman en iyi seçenektir.Best practices dictate that it's always best to grant only the narrowest possible scope.

Aşağıdaki listede, en dar kapsamdan başlayarak Service Bus kaynaklarına erişimi kapsamındaki düzeyler açıklanmaktadır:The following list describes the levels at which you can scope access to Service Bus resources, starting with the narrowest scope:

  • Kuyruk, Konu veya abonelik: rol ataması, belirli Service Bus varlığı için geçerlidir.Queue, topic, or subscription: Role assignment applies to the specific Service Bus entity. Şu anda Azure portal, Kullanıcı/Grup/yönetilen kimliklerin abonelik düzeyinde Service Bus Azure rollerine atanmasını desteklemez.Currently, the Azure portal doesn't support assigning users/groups/managed identities to Service Bus Azure roles at the subscription level. Azure CLı komutunun kullanılmasına bir örnek: az-role-atama-create Service Bus Azure rolüne bir kimlik atamak için:Here's an example of using the Azure CLI command: az-role-assignment-create to assign an identity to a Service Bus Azure role:

    az role assignment create \
        --role $service_bus_role \
        --assignee $assignee_id \
        --scope /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ServiceBus/namespaces/$service_bus_namespace/topics/$service_bus_topic/subscriptions/$service_bus_subscription
    
  • Service Bus ad alanı: rol ataması, ad alanı altındaki tüm Service Bus topolojisini ve onunla ilişkili tüketici grubunu kapsar.Service Bus namespace: Role assignment spans the entire topology of Service Bus under the namespace and to the consumer group associated with it.

  • Kaynak grubu: rol atama, kaynak grubu altındaki tüm Service Bus kaynaklarına uygulanır.Resource group: Role assignment applies to all the Service Bus resources under the resource group.

  • Abonelik: rol ataması, abonelikteki tüm kaynak gruplarındaki tüm Service Bus kaynaklara uygulanır.Subscription: Role assignment applies to all the Service Bus resources in all of the resource groups in the subscription.

Not

Azure rol atamalarının yaymanın beş dakika sürebileceğini aklınızda bulundurun.Keep in mind that Azure role assignments may take up to five minutes to propagate.

Yerleşik rollerin nasıl tanımlandığı hakkında daha fazla bilgi için bkz. rol tanımlarını anlama.For more information about how built-in roles are defined, see Understand role definitions. Azure özel rolleri oluşturma hakkında daha fazla bilgi için bkz. Azure özel roller.For information about creating Azure custom roles, see Azure custom roles.

VM 'de yönetilen kimlikleri etkinleştirmeEnable managed identities on a VM

VM 'nizden Service Bus kaynaklarını yetkilendirmek üzere Azure kaynakları için Yönetilen kimlikler kullanabilmeniz için önce VM 'de Azure kaynakları için yönetilen kimlikleri etkinleştirmeniz gerekir.Before you can use managed identities for Azure Resources to authorize Service Bus resources from your VM, you must first enable managed identities for Azure Resources on the VM. Azure kaynakları için yönetilen kimliklerin nasıl etkinleştireceğinizi öğrenmek için şu makalelerden birine bakın:To learn how to enable managed identities for Azure Resources, see one of these articles:

Azure AD 'de yönetilen bir kimliğe izin vermeGrant permissions to a managed identity in Azure AD

Uygulamanızdaki yönetilen bir kimlikle Service Bus hizmetine bir istek yetkilendirmek için, önce bu yönetilen kimlik için Azure rol tabanlı erişim denetimi (Azure RBAC) ayarlarını yapılandırın.To authorize a request to the Service Bus service from a managed identity in your application, first configure Azure role-based access control (Azure RBAC) settings for that managed identity. Azure Service Bus Service Bus gönderme ve okuma izinlerini çevreleyen Azure rollerini tanımlar.Azure Service Bus defines Azure roles that encompass permissions for sending and reading from Service Bus. Azure rolü yönetilen bir kimliğe atandığında, yönetilen kimliğe uygun kapsamda Service Bus varlıklara erişim verilir.When the Azure role is assigned to a managed identity, the managed identity is granted access to Service Bus entities at the appropriate scope.

Azure rolleri atama hakkında daha fazla bilgi için bkz. Service Bus kaynaklara erişim için Azure Active Directory kimlik doğrulaması ve yetkilendirme.For more information about assigning Azure roles, see Authenticate and authorize with Azure Active Directory for access to Service Bus resources.

Azure kaynakları için yönetilen kimliklerle Service Bus kullanmaUse Service Bus with managed identities for Azure resources

Yönetilen kimliklerle Service Bus kullanmak için, rol ve uygun kapsam kimliğini atamanız gerekir.To use Service Bus with managed identities, you need to assign the identity the role and the appropriate scope. Bu bölümdeki yordam, yönetilen bir kimlik altında çalışan ve Service Bus kaynaklara erişen basit bir uygulama kullanır.The procedure in this section uses a simple application that runs under a managed identity and accesses Service Bus resources.

Burada Azure App Service' de barındırılan örnek bir Web uygulaması kullanıyoruz.Here we're using a sample web application hosted in Azure App Service. Web uygulaması oluşturmaya yönelik adım adım yönergeler için bkz. Azure 'da ASP.NET Core Web uygulaması oluşturmaFor step-by-step instructions for creating a web application, see Create an ASP.NET Core web app in Azure

Uygulama oluşturulduktan sonra aşağıdaki adımları izleyin:Once the application is created, follow these steps:

  1. Ayarlar ' a gidin ve kimlik' i seçin.Go to Settings and select Identity.

  2. Görüntülenecek durumu seçin.Select the Status to be On.

  3. Ayarları kaydetmek için Kaydet’i seçin.Select Save to save the setting.

    Bir Web uygulaması için yönetilen kimlik

Bu ayarı etkinleştirdikten sonra, Azure Active Directory (Azure AD) ve App Service ana bilgisayarında yapılandırılmış yeni bir hizmet kimliği oluşturulur.Once you've enabled this setting, a new service identity is created in your Azure Active Directory (Azure AD) and configured into the App Service host.

Not

Yönetilen bir kimlik kullandığınızda bağlantı dizesinin şu biçimde olması gerekir: Endpoint=sb://<NAMESPACE NAME>.servicebus.windows.net/;Authentication=Managed Identity .When you use a managed identity, the connection string should be in the format: Endpoint=sb://<NAMESPACE NAME>.servicebus.windows.net/;Authentication=Managed Identity.

Şimdi, bu hizmet kimliğini Service Bus kaynaklarınızın gerekli kapsamındaki bir role atayın.Now, assign this service identity to a role in the required scope in your Service Bus resources.

Azure portal kullanarak Azure rolleri atamak içinTo Assign Azure roles using the Azure portal

Bir Service Bus ad alanına rol atamak için Azure portal ad alanına gidin.To assign a role to a Service Bus namespace, navigate to the namespace in the Azure portal. Kaynak için Access Control (ıAM) ayarlarını görüntüleyin ve rol atamalarını yönetmek için aşağıdaki yönergeleri izleyin:Display the Access Control (IAM) settings for the resource, and follow these instructions to manage role assignments:

Not

Aşağıdaki adımlar Service Bus ad alanlarınıza bir hizmet kimliği rolü atar.The following steps assigns a service identity role to your Service Bus namespaces. Aynı adımları izleyerek, desteklenen diğer kapsamlardaki (kaynak grubu ve abonelik) bir rol atayabilirsiniz.You can follow the same steps to assign a role at other supported scopes (resource group and subscription).

Bir Service Bus mesajlaşma ad alanı oluşturun .Create a Service Bus Messaging namespace if you don't have one.

  1. Azure portal, Service Bus ad alanına gidin ve ad alanı için genel bakış ' ı görüntüleyin.In the Azure portal, navigate to your Service Bus namespace and display the Overview for the namespace.

  2. Service Bus ad alanı için erişim denetimi ayarlarını göstermek için sol taraftaki menüden Access Control (IAM) seçeneğini belirleyin.Select Access Control (IAM) on the left menu to display access control settings for the Service Bus namespace.

  3. Rol atamalarının listesini görmek için rol atamaları sekmesini seçin.Select the Role assignments tab to see the list of role assignments.

  4. Ekle' yi seçin ve ardından rol ataması Ekle' yi seçin.Select Add, and then select Add role assignment.

  5. Rol ataması Ekle sayfasında, şu adımları izleyin:On the Add role assignment page, follow these steps:

    1. Rol için, atamak istediğiniz Service Bus rolünü seçin.For Role, select the Service Bus role that you want to assign. Bu örnekte, veri sahibi Azure Service Bus.In this example, it's Azure Service Bus Data Owner.

    2. Erişim ata alanına, sistem tarafından atanan yönetilen kimlik altında App Service seçin.For the Assign access to field, select App Service under System assigned managed identity.

    3. Web uygulaması için yönetilen kimliğin oluşturulduğu aboneliği seçin.Select the subscription in which the managed identity for the web app was created.

    4. Oluşturduğunuz Web uygulaması için yönetilen kimliği seçin.Select the managed identity for the web app you created. Kimliğin varsayılan adı, Web uygulamasının adı ile aynı.The default name for the identity is same as the name of the web app.

    5. Sonra Kaydet' i seçin.Then, select Save.

      Rol atama sayfası ekle

    Rolü atadıktan sonra, Web uygulamasının tanımlı kapsamda Service Bus varlıklara erişimi olur.Once you've assigned the role, the web application will have access to the Service Bus entities under the defined scope.

    Not

    Yönetilen kimlikleri destekleyen hizmetlerin listesi için bkz. Azure kaynakları için yönetilen kimlikleri destekleyen hizmetler.For a list of services that support managed identities, see Services that support managed identities for Azure resources.

Uygulamayı çalıştırmaRun the app

Şimdi, oluşturduğunuz ASP.NET uygulamasının varsayılan sayfasını değiştirin.Now, modify the default page of the ASP.NET application you created. Bu GitHub deposundanWeb uygulaması kodunu kullanabilirsiniz.You can use the web application code from this GitHub repository.

Varsayılan. aspx sayfası, giriş sayfanız.The Default.aspx page is your landing page. Kodu Default.aspx.cs dosyasında bulabilirsiniz.The code can be found in the Default.aspx.cs file. Sonuç olarak, birkaç giriş alanı olan en az bir Web uygulaması ve ileti göndermek ya da almak için Service Bus bağlanan Gönder ve Al düğmeleri vardır.The result is a minimal web application with a few entry fields, and with send and receive buttons that connect to Service Bus to either send or receive messages.

Messagingfactory nesnesinin nasıl başlatıldığını aklınızda edin.Note how the MessagingFactory object is initialized. Kod, paylaşılan erişim belirteci (SAS) belirteci sağlayıcısını kullanmak yerine, yönetilen kimlik için çağrı ile bir belirteç sağlayıcısı oluşturur var msiTokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(); .Instead of using the Shared Access Token (SAS) token provider, the code creates a token provider for the managed identity with the var msiTokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(); call. Bu nedenle, tutulacak ve kullanılacak gizli dizi yok.As such, there are no secrets to retain and use. Yönetilen kimlik bağlamının Service Bus ve yetkilendirme el sıkışması akışı, otomatik olarak belirteç sağlayıcısı tarafından işlenir.The flow of the managed identity context to Service Bus and the authorization handshake are automatically handled by the token provider. SAS kullanmaktan daha basit bir modeldir.It is a simpler model than using SAS.

Bu değişiklikleri yaptıktan sonra, uygulamayı yayımlayın ve çalıştırın.After you make these changes, publish and run the application. Visual Studio 'da bir yayımlama profilini indirerek ve içeri aktararak doğru yayımlama verilerini kolayca edinebilirsiniz:You can obtain the correct publishing data easily by downloading and then importing a publishing profile in Visual Studio:

Yayımlama profili al

İleti göndermek veya almak için, ad alanının adını ve oluşturduğunuz varlığın adını girin.To send or receive messages, enter the name of the namespace and the name of the entity you created. Ardından, Gönder veya Al' a tıklayın.Then, click either send or receive.

Not

  • Yönetilen kimlik yalnızca Azure ortamında, App Services, Azure VM 'Lerde ve ölçek kümelerinde kullanılabilir.The managed identity works only inside the Azure environment, on App services, Azure VMs, and scale sets. Service Bus NuGet paketi tarafından kullanılan Microsoft. Azure. Services. AppAuthentication kitaplığı, .NET uygulamaları için, bu protokol üzerinden bir soyutlama sağlar ve yerel bir geliştirme deneyimini destekler.For .NET applications, the Microsoft.Azure.Services.AppAuthentication library, which is used by the Service Bus NuGet package, provides an abstraction over this protocol and supports a local development experience. Bu kitaplık Ayrıca, Visual Studio, Azure CLı 2,0 veya tümleşik kimlik doğrulaması Active Directory kullanıcı hesabınızı kullanarak kodunuzu geliştirme makinenizde yerel olarak test etmenizi sağlar.This library also allows you to test your code locally on your development machine, using your user account from Visual Studio, Azure CLI 2.0 or Active Directory Integrated Authentication. Bu kitaplıkla ilgili yerel geliştirme seçenekleri hakkında daha fazla bilgi için bkz. .NET kullanarak Azure Key Vault Için hizmetten hizmete kimlik doğrulaması.For more on local development options with this library, see Service-to-service authentication to Azure Key Vault using .NET.

Sonraki adımlarNext steps

Service Bus mesajlaşma hakkında daha fazla bilgi edinmek için aşağıdaki konulara bakın:To learn more about Service Bus messaging, see the following topics: