Share via


Java uygulamasını Azure SQL Veritabanı ile parolasız bağlantılar kullanacak şekilde geçirme

Bu makalede, geleneksel kimlik doğrulama yöntemlerinden Azure SQL Veritabanı ile daha güvenli, parolasız bağlantılara nasıl geçiş yapılır açıklanmaktadır.

Azure SQL Veritabanı uygulama isteklerinin kimliği doğrulanmalıdır. Azure SQL Veritabanı, uygulamaların güvenli bir şekilde bağlanması için birkaç farklı yol sağlar. Yollardan biri parolaları kullanmaktır. Ancak, mümkün olduğunda uygulamalarınızda parolasız bağlantılara öncelik vermelisiniz.

Kimlik doğrulama seçeneklerini karşılaştırma

Uygulama Azure SQL Veritabanı ile kimlik doğrulaması yaparken veritabanına bağlanmak için bir kullanıcı adı ve parola çifti sağlar. Kimliklerin depolandığı yere bağlı olarak iki tür kimlik doğrulaması vardır: Microsoft Entra kimlik doğrulaması ve Azure SQL Veritabanı kimlik doğrulaması.

Microsoft Entra doğrulaması

Microsoft Entra kimlik doğrulaması, Microsoft Entra Id'de tanımlanan kimlikleri kullanarak Azure SQL Veritabanı bağlanmaya yönelik bir mekanizmadır. Microsoft Entra kimlik doğrulaması ile veritabanı kullanıcı kimliklerini ve diğer Microsoft hizmetleri merkezi bir konumda yönetebilir ve bu da izin yönetimini basitleştirir.

Kimlik doğrulaması için Microsoft Entra Id kullanmak aşağıdaki avantajları sağlar:

  • Azure Hizmetleri genelinde kullanıcıların tekdüzen bir şekilde kimlik doğrulaması.
  • Parola ilkelerinin ve parola döndürmenin tek bir yerde yönetimi.
  • Microsoft Entra Id tarafından desteklenen ve parolaları depolama gereksinimini ortadan kaldırabilen birden çok kimlik doğrulaması biçimi.
  • Müşteriler dış (Microsoft Entra Id) gruplarını kullanarak veritabanı izinlerini yönetebilir.
  • Microsoft Entra kimlik doğrulaması, kimlikleri veritabanı düzeyinde doğrulamak için Azure SQL veritabanı kullanıcılarını kullanır.
  • Azure SQL Veritabanı bağlanan uygulamalar için belirteç tabanlı kimlik doğrulaması desteği.

kimlik doğrulaması Azure SQL Veritabanı

Azure SQL Veritabanı'da hesap oluşturabilirsiniz. Hesaplar için kimlik bilgileri olarak parolaları kullanmayı seçerseniz, bu kimlik bilgileri tabloda depolanır sys.database_principals . Bu parolalar Azure SQL Veritabanı depolandığından, parolaların döndürmesini kendiniz yönetmeniz gerekir.

parolalarla Azure SQL Veritabanı bağlanmak mümkün olsa da, bunları dikkatli kullanmanız gerekir. Parolaları güvenli olmayan bir konumda asla kullanıma sunmamak için dikkatli olmanız gerekir. Parolalara erişim kazanan herkes kimlik doğrulaması yapabilir. Örneğin, bir bağlantı dizesi yanlışlıkla kaynak denetimine iade edilirse, güvenli olmayan bir e-postayla gönderilirse, yanlış sohbete yapıştırılırsa veya izni olmayan 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 giriş

Parolasız bağlantıyla, uygulama kodunda, yapılandırma dosyalarında veya ortam değişkenlerinde kimlik bilgilerini depolamadan Azure hizmetlerine bağlanabilirsiniz.

Birçok Azure hizmeti, örneğin Azure Yönetilen Kimliği aracılığıyla parolasız bağlantıları destekler. Bu teknikler, Azure Identity istemci kitaplıklarından DefaultAzureCredential kullanarak uygulayabileceğiniz güçlü güvenlik özellikleri sağlar. Bu öğreticide, bağlantı dizesi gibi alternatifler yerine mevcut bir uygulamayı kullanmak DefaultAzureCredential üzere güncelleştirmeyi öğreneceksiniz.

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 bilgilerini arama sırası ve konumları DefaultAzureCredential Azure Kimlik kitaplığına genel bakış sayfasında bulabilirsiniz. Örneğin, yerel olarak çalışırken genellikle DefaultAzureCredential geliştiricinin Visual Studio'da oturum açmak için kullandığı hesabı kullanarak kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, DefaultAzureCredential otomatik olarak yönetilen kimlik kullanmaya geçer. Bu geçiş için kod değişikliği gerekmez.

Bağlantıların parolasız olduğundan emin olmak için hem yerel geliştirmeyi hem de üretim ortamını dikkate almanız gerekir. Her iki yerde de bir bağlantı dizesi gerekiyorsa, uygulama parolasız değildir.

Yerel geliştirme ortamınızda, Visual Studio Code veya IntelliJ için Azure CLI, Azure PowerShell, Visual Studio veya Azure eklentileriyle kimlik doğrulaması yapabilirsiniz. Bu durumda, özellikleri yapılandırmak yerine uygulamanızda bu kimlik bilgilerini kullanabilirsiniz.

Uygulamaları sanal makine gibi bir Azure barındırma ortamına dağıttığınızda, bu ortamda yönetilen kimlik atayabilirsiniz. Ardından, Azure hizmetlerine bağlanmak için kimlik bilgileri sağlamanız gerekmez.

Dekont

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.

Dekont

Azure SQL Veritabanı için JDBC sürücüsü henüz yerel ortamlardan gelen parolasız bağlantıları desteklemediğinden, bu makale yalnızca Azure barındırma ortamlarına dağıtılan uygulamalara ve bunların parolasız bağlantıları kullanmak üzere nasıl geçirileceğine odaklanacaktır.

Var olan bir uygulamayı parolasız bağlantıları kullanacak şekilde geçirme

Aşağıdaki adımlarda, mevcut bir uygulamanın parola tabanlı bir çözüm yerine parolasız bağlantıları kullanacak şekilde nasıl geçirilir açıklanmaktadır.

0) Çalışma ortamını hazırlama

İlk olarak, bazı ortam değişkenlerini ayarlamak için aşağıdaki komutu kullanın.

export AZ_RESOURCE_GROUP=<YOUR_RESOURCE_GROUP>
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demo
export CURRENT_USERNAME=$(az ad signed-in-user show --query userPrincipalName --output tsv)
export CURRENT_USER_OBJECTID=$(az ad signed-in-user show --query id --output tsv)

Yer tutucuları, bu makale boyunca kullanılan aşağıdaki değerlerle değiştirin:

  • <YOUR_RESOURCE_GROUP>: Kaynaklarınızın içinde olduğu kaynak grubunun adı.
  • <YOUR_DATABASE_SERVER_NAME>: Azure SQL Veritabanı sunucunuzun adı. Azure genelinde benzersiz olmalıdır.

1) yapılandırma Azure SQL Veritabanı

1.1) Microsoft Entra Id tabanlı kimlik doğrulamasını etkinleştirme

Microsoft Entra Id erişimini Azure SQL Veritabanı kullanmak için önce Microsoft Entra yönetici kullanıcısını ayarlamanız gerekir. Yalnızca bir Microsoft Entra Yönetici kullanıcısı Microsoft Entra Id tabanlı kimlik doğrulaması için kullanıcı oluşturabilir/etkinleştirebilir.

Azure CLI kullanıyorsanız, yeterli izne sahip olduğundan emin olmak için aşağıdaki komutu çalıştırın:

az login --scope https://graph.microsoft.com/.default

Ardından, Microsoft Entra yöneticisini ayarlamak için aşağıdaki komutu çalıştırın:

az sql server ad-admin create \
    --resource-group $AZ_RESOURCE_GROUP \
    --server $AZ_DATABASE_SERVER_NAME \
    --display-name $CURRENT_USERNAME \
    --object-id $CURRENT_USER_OBJECTID

Bu komut, Microsoft Entra yöneticisini geçerli oturum açmış kullanıcıya ayarlar.

Dekont

her Azure SQL Veritabanı sunucusu için yalnızca bir Microsoft Entra yöneticisi oluşturabilirsiniz. Başka bir seçim, sunucu için yapılandırılan mevcut Microsoft Entra yöneticisinin üzerine yazılır.

2) Uygulama kodunu parolasız bağlantıları kullanacak şekilde geçirme

Ardından, aşağıdaki adımları kullanarak kodunuzu parolasız bağlantıları kullanacak şekilde güncelleştirin. Kavramsal olarak benzer olsa da, her dil farklı uygulama ayrıntıları kullanır.

  1. Projenizin içine pakete aşağıdaki başvuruyu azure-identity ekleyin. Bu kitaplık, parolasız bağlantılar uygulamak için gereken tüm varlıkları içerir.

    <dependency>
         <groupId>com.azure</groupId>
         <artifactId>azure-identity</artifactId>
         <version>1.5.4</version>
    </dependency>
    
  2. JDBC URL'sinde Microsoft Entra yönetilen kimlik kimlik doğrulamasını etkinleştirin.v Kodunuzda şu anda Azure SQL Veritabanı bağlanmak için bir java.sql.Connection oluşturan konumları belirleyin. Kodunuzu aşağıdaki örnekle eşleşecek şekilde güncelleştirin:

    String url = "jdbc:sqlserver://$AZ_DATABASE_SERVER_NAME.database.windows.net:1433;databaseName=$AZ_DATABASE_NAME;authentication=ActiveDirectoryMSI;"   
    Connection con = DriverManager.getConnection(url);
    
  3. İki $AZ_DATABASE_SERVER_NAME değişkeni ve bir $AZ_DATABASE_NAME değişkeni bu makalenin başında yapılandırdığınız değerlerle değiştirin.

  4. user JDBC URL'sinden ve password öğesini kaldırın.

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

Uygulamanız parolasız bağlantıları kullanacak şekilde yapılandı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 atanmış bir Azure Uygulaması Hizmeti örneğine dağıtılan bir uygulama Azure Depolama'a bağlanabilir.

Bu bölümde, uygulamanızın Azure barındırma ortamında parolasız bir şekilde çalışmasını sağlamak için iki adım yürüteceksiniz:

  • Azure barındırma ortamınız için yönetilen kimliği atayın.
  • Yönetilen kimliğe roller atayın.

Dekont

Azure, barındırma hizmetinizi SQL server'a bağlamanıza yardımcı olabilecek Service Bağlan or da sağlar. Service Bağlan or barındırma ortamınızı yapılandırırken yönetilen kimliğinize rol atama adımını atlayabilirsiniz çünkü Service Bağlan veya bunu sizin yerinize yapar. Aşağıdaki bölümde Azure barındırma ortamınızı iki şekilde yapılandırma adımları açıklanmaktadır: biri Service Bağlan ve diğeri ise her barındırma ortamını doğrudan yapılandırarak.

Önemli

Hizmet Bağlan veya komutları Için Azure CLI 2.41.0 veya üzeri gerekir.

Azure portalını kullanarak yönetilen kimliği atama

Aşağıdaki adımlarda, çeşitli web barındırma hizmetleri için sistem tarafından atanan yönetilen kimliğin nasıl atandığı 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.

  1. Azure Uygulaması Hizmeti örneğinizin ana genel bakış sayfasında gezinti bölmesinden Kimlik'i seçin.

  2. Sistem tarafından atanan sekmesinde Durum alanını açık olarak ayarladığınızdan emin olun. Sistem tarafından atanan kimlik, Azure tarafından şirket içinde yönetilir ve yönetim görevlerini sizin için gerçekleştirir. Kimliğin ayrıntıları ve kimlikleri kodunuzda hiçbir zaman gösterilmez.

    Screenshot of Azure portal Identity page of App Service resource with System assigned tab showing and Status field highlighted.

Ayrıca, Azure CLI'yı kullanarak bir Azure barındırma ortamında yönetilen kimlik atayabilirsiniz.

Aşağıdaki örnekte gösterildiği gibi az webapp identity assign komutuyla bir Azure Uygulaması Service örneğine yönetilen kimlik atayabilirsiniz:

export AZ_MI_OBJECT_ID=$(az webapp identity assign \
    --resource-group $AZ_RESOURCE_GROUP \
    --name <service-instance-name> \
    --query principalId \
    --output tsv)

Yönetilen kimliğe rol atama

Ardından, OLUŞTURDUĞUNUZ yönetilen kimliğe SQL veritabanınıza erişmek için izinler verin.

Hizmetlerinizi Service Bağlan or kullanarak bağladıysanız, önceki adımın komutları rolü zaten atadığından bu adımı atlayabilirsiniz.

Uygulamayı test etme

Bu kod değişikliklerini yaptıktan sonra uygulamayı derleyebilir ve yeniden dağıtabilirsiniz. Ardından tarayıcıda barındırılan uygulamanıza göz atın. Uygulamanızın Azure SQL veritabanına 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.

Bu makalede ele alınan kavramları daha ayrıntılı incelemek için aşağıdaki kaynakları okuyabilirsiniz: