Aracılığıyla paylaş


Azure Service Bus ile parolasız bağlantılar kullanmak için bir uygulamayı geçirme

Azure Service Bus'a yönelik uygulama isteklerinin kimlik doğrulaması, hesap erişim anahtarları veya parolasız bağlantılar kullanılarak yapılmalıdır. Ancak, mümkün olduğunda uygulamalarınızda parolasız bağlantılara öncelik vermelisiniz. Bu öğreticide, geleneksel kimlik doğrulama yöntemlerinden daha güvenli, parolasız bağlantılara nasıl geçiş yapılacağını inceler.

Erişim anahtarlarıyla ilişkili güvenlik riskleri

Aşağıdaki kod örneği, erişim anahtarı içeren bir bağlantı dizesi kullanarak Azure Service Bus'a nasıl bağlanıldığını gösterir. Service Bus oluşturduğunuzda Azure bu anahtarları ve bağlantı dizesi otomatik olarak oluşturur. Birçok geliştirici bu çözüme yönelir çünkü geçmişte üzerinde çalıştıkları seçeneklere aşinadır. Uygulamanız şu anda bağlantı dizesi kullanıyorsa, bu belgede açıklanan adımları kullanarak parolasız bağlantılara geçiş yapmayı göz önünde bulundurun.

await using ServiceBusClient client = new("<CONNECTION-STRING>");

Bağlantı dizeleri dikkatli kullanılmalıdır. Geliştiricilerin anahtarları güvenli olmayan bir konumda asla kullanıma sunmaması için dikkatli olması gerekir. Anahtara erişim kazanan herkes kimlik doğrulaması yapabilir. Örneğin, bir hesap anahtarı yanlışlıkla kaynak denetimine iade edilirse, güvenli olmayan bir e-posta aracılığıyla gönderilirse, yanlış sohbete yapıştırılırsa veya izni olmaması gereken biri tarafından görüntülenirse, kötü amaçlı bir kullanıcının uygulamaya erişme riski vardır. Bunun yerine, uygulamanızı parolasız bağlantıları kullanacak şekilde güncelleştirmeyi göz önünde bulundurun.

Parolasız bağlantılara geçiş

Birçok Azure hizmeti, Microsoft Entra Id ve Rol Tabanlı Erişim denetimi (RBAC) aracılığıyla parolasız bağlantıları destekler. Bu teknikler güçlü güvenlik özellikleri sağlar ve Azure Identity istemci kitaplıklarından kullanılarak DefaultAzureCredential uygulanabilir.

Önemli

Bazı dillerin kodlarında açıkça uygulanması DefaultAzureCredential gerekirken, bazıları ise temel eklentiler veya sürücüler aracılığıyla dahili olarak kullanılır DefaultAzureCredential .

DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve hangilerinin çalışma zamanında kullanılması gerektiğini otomatik olarak belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel geliştirme ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.

Kimlik bilgilerinin arandığı DefaultAzureCredential sıra ve konumlar Azure Kimlik kitaplığına genel bakış bölümünde bulunabilir ve diller arasında farklılık gösterir. Örneğin, .NET ile yerel olarak çalışırken genellikle geliştiricinin Visual Studio, DefaultAzureCredential Azure CLI veya Azure PowerShell'de oturum açmak için kullandığı hesabı kullanarak kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, DefaultAzureCredential Azure Uygulaması Hizmeti gibi ilişkili barındırma hizmetinin yönetilen kimliğini otomatik olarak bulur ve kullanır. Bu geçiş için kod değişikliği gerekmez.

Not

Yönetilen kimlik, bir uygulamayı veya hizmeti temsil eden bir güvenlik kimliği sağlar. Kimlik Azure platformu tarafından yönetilir ve herhangi bir gizli dizi sağlamanızı veya döndürmenizi gerektirmez. Yönetilen kimlikler hakkında daha fazla bilgiyi genel bakış belgelerinde okuyabilirsiniz.

Aşağıdaki kod örneğinde parolasız bağlantılar kullanarak Service Bus'a nasıl bağlandığınız gösterilmektedir. Sonraki bölümde, belirli bir hizmet için bu kuruluma nasıl geçiş yapılacağını daha ayrıntılı olarak açıklanmaktadır.

.NET uygulaması bir örneğini DefaultAzureCredential bir hizmet istemci sınıfının oluşturucusuna geçirebilir. DefaultAzureCredential , bu ortamda kullanılabilen kimlik bilgilerini otomatik olarak bulur.

client = new ServiceBusClient(
    "<NAMESPACE-NAME>.servicebus.windows.net",
    new DefaultAzureCredential());

Bir uygulamayı parolasız kimlik doğrulaması kullanacak şekilde geçirme adımları

Aşağıdaki adımlarda, mevcut bir uygulamanın anahtar tabanlı bir çözüm yerine parolasız bağlantıları kullanacak şekilde nasıl geçirilir açıklanmaktadır. Önce yerel bir geliştirme ortamı yapılandıracak ve ardından bu kavramları bir Azure uygulama barındırma ortamına uygulayacaksınız. Bu geçiş adımları, erişim anahtarlarını doğrudan veya bağlantı dizesi aracılığıyla kullanmanız fark etmeksizin geçerli olmalıdır.

Rolleri ve kullanıcıları yerel geliştirme kimlik doğrulaması için yapılandırma

Yerel olarak geliştirme yaparken, Service Bus'a erişen kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. Bu örnekte verileri göndermek ve almak için Azure Service Bus Veri Sahibi rolünü kullanacaksınız, ancak daha ayrıntılı roller de kullanılabilir. Kendinize bu rolü atamak için Kullanıcı Erişimi Yöneticisi rolüne veya Microsoft.Authorization/roleAssignments/write eylemini içeren başka bir role atanmalısınız. Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Rol atamaları için kullanılabilir kapsamlar hakkında daha fazla bilgiyi kapsam genel bakış sayfasından öğrenebilirsiniz.

Bu senaryoda, en düşük ayrıcalık ilkesini izlemek için belirli bir Service Bus ad alanı kapsamındaki kullanıcı hesabınıza izinler atayacaksınız. Bu uygulama kullanıcılara yalnızca gereken minimum izinleri verir ve daha güvenli üretim ortamları oluşturur.

Aşağıdaki örnekte kullanıcı hesabınıza Azure Service Bus Veri Sahibi rolü atanır ve bu rol veri gönderip almanıza olanak tanır.

Önemli

Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer, ancak nadir durumlarda sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.

  1. Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak Service Bus ad alanınızı bulun.

  2. Service Bus'a genel bakış sayfasında, sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.

  3. Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.

  4. Üst menüden + Ekle'yi seçin ve ardından açılan menüden Rol ataması ekle'yi seçin.

    Rol atamayı gösteren ekran görüntüsü.

  5. Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için Azure Service Bus Veri Sahibi'ni arayın ve eşleşen sonucu seçin ve ardından İleri'yi seçin.

  6. Erişim ata'nın altında Kullanıcı, grup veya hizmet sorumlusu'na tıklayın ve ardından + Üye seç'e tıklayın.

  7. İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın ve iletişim kutusunun alt kısmındaki Seç'i seçin.

  8. Son sayfaya gitmek için Gözden geçir + ata'yı seçin ve ardından işlemi tamamlamak için Gözden geçir + yeniden ata'yı seçin.

Parolasız bağlantıları kullanmak için oturum açın ve uygulama kodunu geçirin

Yerel geliştirme için, Service Bus ad alanı için rolü atadığınız Microsoft Entra hesabıyla kimliğinizin doğrulanmış olduğundan emin olun. Azure CLI, Visual Studio, Azure PowerShell veya IntelliJ gibi diğer araçlar aracılığıyla kimlik doğrulaması yapabilirsiniz.

Yerel geliştirme için, rolü atadığınız Microsoft Entra hesabıyla kimliğinizin doğrulanmış olduğundan emin olun. Azure CLI veya Azure PowerShell gibi popüler geliştirme araçlarıyla kimlik doğrulaması yapabilirsiniz. Kimlik doğrulaması yapabileceğiniz geliştirme araçları farklı dillerde farklılık gösterir.

Aşağıdaki komutu kullanarak Azure CLI aracılığıyla Azure'da oturum açın:

az login

Ardından, parolanızı parolasız bağlantıları kullanacak şekilde güncelleştirin.

  1. .NET uygulamasında kullanmak DefaultAzureCredential için paketini yükleyin Azure.Identity :

    dotnet add package Azure.Identity
    
  2. Dosyanızın en üstüne aşağıdaki kodu ekleyin:

    using Azure.Identity;
    
  3. Azure Service Bus'a bağlanmak için bir ServiceBusClient nesne oluşturan kodu tanımlayın. Kodunuzu aşağıdaki örnekle eşleşecek şekilde güncelleştirin:

     var serviceBusNamespace = $"https://{namespace}.servicebus.windows.net";
     ServiceBusClient client = new(
         serviceBusNamespace,
         new DefaultAzureCredential());
    

Uygulamayı yerel olarak çalıştırma

Bu kod değişikliklerini yaptıktan sonra uygulamanızı yerel olarak çalıştırın. Yeni yapılandırma, Azure CLI, Visual Studio veya IntelliJ gibi yerel kimlik bilgilerinizi almalıdır. Azure'da yerel geliştirici kullanıcınıza atadığınız roller, uygulamanızın Azure hizmetine yerel olarak bağlanmasına olanak tanır.

Azure barındırma ortamını yapılandırma

Uygulamanız parolasız bağlantıları kullanacak şekilde yapılandırıldıktan ve yerel olarak çalıştırıldıktan sonra aynı kod Azure'a dağıtıldıktan sonra Azure hizmetlerinde kimlik doğrulaması yapabilir. Örneğin, yönetilen kimliği etkinleştirilmiş bir Azure Uygulaması Service örneğine dağıtılan bir uygulama Azure Service Bus'a bağlanabilir.

Azure portalını kullanarak yönetilen kimlik oluşturma

Aşağıdaki adımlarda, çeşitli web barındırma hizmetleri için sistem tarafından atanan yönetilen kimliğin nasıl oluşturulacağı gösterilmektedir. Yönetilen kimlik, daha önce ayarladığınız uygulama yapılandırmalarını kullanarak diğer Azure Hizmetlerine güvenli bir şekilde bağlanabilir.

Bazı uygulama barındırma ortamları, Azure işlem hizmetlerini diğer destek hizmetlerine bağlamanıza yardımcı olan Service Connector'ı destekler. Hizmet Bağlayıcısı, ağ ayarlarını ve bağlantı bilgilerini otomatik olarak yapılandırıyor. Genel bakış sayfasında Hizmet Bağlayıcısı ve hangi senaryoların desteklendiği hakkında daha fazla bilgi edinebilirsiniz.

Şu anda aşağıdaki işlem hizmetleri desteklenmektedir:

  • Azure App Service
  • Azure Spring Cloud
  • Azure Container Apps (önizleme)

Bu geçiş kılavuzunda App Service'i kullanacaksınız, ancak Adımlar Azure Spring Apps ve Azure Container Apps'te benzerdir.

Not

Azure Spring Apps şu anda yalnızca bağlantı dizesi kullanarak Hizmet Bağlayıcısı'nı desteklemektedir.

  1. App Service'inizin ana genel bakış sayfasında, sol gezinti bölmesinden Hizmet Bağlayıcısı'nı seçin.

  2. Üst menüden + Oluştur'u seçtiğinizde Bağlantı oluştur paneli açılır. Aşağıdaki değerleri girin:

    • Hizmet türü: Service bus'ı seçin.
    • Abonelik: Kullanmak istediğiniz aboneliği seçin.
    • Bağlantı Adı: Bağlantınız için connector_appservice_servicebus gibi bir ad girin.
    • İstemci türü: Varsayılan değeri seçili bırakın veya kullanmak istediğiniz istemciyi seçin.

    İleri: Kimlik Doğrulaması'ı seçin.

  3. Sistem tarafından atanan yönetilen kimlik (Önerilen) öğesinin seçili olduğundan emin olun ve İleri: Ağ'ı seçin.

  4. Varsayılan değerleri seçili bırakın ve İleri: Gözden Geçir + Oluştur'u seçin.

  5. Azure ayarlarınızı doğruladıktan sonra Oluştur'u seçin.

Hizmet Bağlayıcısı, uygulama hizmeti için sistem tarafından atanan bir yönetilen kimliği otomatik olarak oluşturur. Bağlayıcı ayrıca yönetilen kimliğe seçtiğiniz hizmet veri yolu için bir Azure Service Bus Veri Sahibi rolü atar.

Alternatif olarak, Azure CLI kullanarak bir Azure barındırma ortamında yönetilen kimliği de etkinleştirebilirsiniz.

Azure CLI kullanarak Bir Azure işlem barındırma ortamı ile hedef hizmet arasında bağlantı oluşturmak için Hizmet Bağlayıcısı'nı kullanabilirsiniz. CLI, yönetilen kimlik oluşturmayı otomatik olarak işler ve portal yönergelerinde açıklandığı gibi uygun rolü atar.

Azure Uygulaması Hizmeti kullanıyorsanız komutunu kullanınaz webapp connection:

az webapp connection create servicebus \
    --resource-group <resource-group-name> \
    --name <webapp-name> \
    --target-resource-group <target-resource-group-name> \
    --namespace <target-service-bus-namespace> \
    --system-identity

Azure Spring Apps kullanıyorsanız komutunu kullanın az spring connection :

az spring connection create servicebus \
    --resource-group <resource-group-name> \
    --service <service-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --target-resource-group <target-resource-group> \
    --namespace <target-service-bus-namespace> \
    --system-identity

Azure Container Apps kullanıyorsanız komutunu kullanın az containerapp connection :

az containerapp connection create servicebus \
    --resource-group <resource-group-name> \
    --name <webapp-name> \
    --target-resource-group <target-resource-group-name> \
    --namespace <target-service-bus-namespace> \
    --system-identity

Yönetilen kimliğe rol atama

Ardından, Service Bus'ınıza erişmek için oluşturduğunuz yönetilen kimliğe izin vermeniz gerekir. Bunu, yerel geliştirme kullanıcınızda yaptığınız gibi yönetilen kimliğe bir rol atayarak yapabilirsiniz.

Hizmetlerinizi Hizmet Bağlayıcısı'nı kullanarak bağladıysanız bu adımı tamamlamanız gerekmez. Gerekli yapılandırmalar sizin için işlendi:

  • Bağlantıyı oluştururken yönetilen bir kimlik seçtiyseniz, uygulamanız için sistem tarafından atanan bir yönetilen kimlik oluşturulur ve Service Bus'ta Azure Service Bus Veri Sahibi rolü atanır.

  • bağlantı dizesi seçtiyseniz, bağlantı dizesi bir uygulama ortam değişkeni olarak eklenmiştir.

Uygulamayı test etme

Bu kod değişikliklerini yaptıktan sonra tarayıcıda barındırılan uygulamanıza göz atın. Uygulamanızın Service Bus'a başarıyla bağlanabilmesi gerekir. Rol atamalarının Azure ortamınızda yayılmasının birkaç dakika sürebileceğini unutmayın. Uygulamanız artık geliştiricilerin uygulamadaki gizli dizileri yönetmek zorunda kalmadan hem yerel hem de üretim ortamında çalışacak şekilde yapılandırılmıştır.

Sonraki adımlar

Bu öğreticide, bir uygulamayı parolasız bağlantılara geçirmeyi öğrendiniz.