Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ı'na yönelik 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 kimlik doğrulaması türü vardır: Microsoft Entra kimlik doğrulaması ve Azure SQL Veritabanı kimlik doğrulaması.
Microsoft Entra kimlik doğrulama
Microsoft Entra kimlik doğrulaması, Microsoft Entra Id'de tanımlanan kimlikleri kullanarak Azure SQL Veritabanı'na bağlanmaya yönelik bir mekanizmadır. Microsoft Entra kimlik doğrulaması ile veritabanı kullanıcı kimliklerini ve diğer Microsoft hizmetlerini merkezi bir konumda yönetebilirsiniz 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ı'na bağlanan uygulamalar için belirteç tabanlı kimlik doğrulaması desteği.
Azure SQL Veritabanı kimlik doğrulaması
Azure SQL Veritabanı'nda 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ı'nda depolandığından, parolaların döndürmesini kendiniz yönetmeniz gerekir.
Azure SQL Veritabanı'na parolalarla 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ı dizeleri 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ı DefaultAzureCredentialAzure 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, DefaultAzureCredentialotomatik 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 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.
Uyarı
Yönetilen kimlik, bir uygulamayı veya hizmeti temsil eden bir güvenlik kimliği sağlar. Kimlik Azure platformu tarafından yönetilir ve gizli dizileri sağlamanızı veya döndürmenizi gerektirmez. Yönetilen kimlikler hakkında daha fazla bilgiyi genel bakış belgelerinde okuyabilirsiniz.
Uyarı
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) Azure SQL Veritabanı'nın yapılandırılması
1.1) Microsoft Entra Id tabanlı kimlik doğrulamasını etkinleştirme
Microsoft Entra Id erişimini Azure SQL Veritabanı ile kullanmak için önce Microsoft Entra yönetici kullanıcısını ayarlamanız gerekir. Yalnızca bir Microsoft Entra Admin 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.
Uyarı
Azure SQL Veritabanı sunucusu başına 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.
Projenizin içine pakete aşağıdaki başvuruyu
azure-identityekleyin. 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>JDBC URL'sinde Microsoft Entra yönetilen kimlik kimlik doğrulamasını etkinleştirin.v Kodunuzda Azure SQL Veritabanı'na bağlanmak için şu anda bir
java.sql.Connectionoluşturmakta olan 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);İki
$AZ_DATABASE_SERVER_NAMEdeğişkeni ve bir$AZ_DATABASE_NAMEdeğişkeni bu makalenin başında yapılandırdığınız değerlerle değiştirin.userJDBC URL'sinden vepasswordöğ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 App Service örneğine dağıtılan bir uygulama Azure Depolama'ya 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.
Uyarı
Azure, barındırma hizmetinizi SQL server'a bağlamanıza yardımcı olabilecek Hizmet Bağlayıcısı da sağlar. Barındırma ortamınızı yapılandırmak için Hizmet Bağlayıcısı ile yönetilen kimliğinize rol atama adımını atlayabilirsiniz çünkü Hizmet Bağlayıcısı 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 Connector aracılığıyla, diğeri ise her barındırma ortamını doğrudan yapılandırarak.
Önemli
Hizmet Bağlayıcısı 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.
Azure App Service örneğinizin ana genel bakış sayfasında gezinti bölmesinden Kimlik'i seçin.
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.
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 Azure App 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 Connector kullanarak bağladıysanız, önceki adımın komutları rolü zaten atadığından bu adımı atlayabilirsiniz.
Uygulamayı test edin
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: