Aracılığıyla paylaş


Azure SQL Veritabanı ile parolasız bağlantılar kullanmak için Python uygulamasını geçirme

Şunlar için geçerlidir:Azure SQL Veritabanı

Azure SQL Veritabanı uygulama isteklerinin kimliği doğrulanmalıdır. Azure SQL Veritabanı kimlik doğrulaması için birden çok seçenek olsa da, mümkün olduğunda uygulamalarınızda parolasız bağlantılara öncelik vermelisiniz. Parola veya gizli anahtar kullanan geleneksel kimlik doğrulama yöntemleri, güvenlik riskleri ve karmaşıklıklar oluşturur. Parolasız bağlantılara geçmenin avantajları hakkında daha fazla bilgi edinmek için Azure services hub'ı için parolasız bağlantılar'ı ziyaret edin. Aşağıdaki öğreticide, kullanıcı adı ve parola çözümü yerine parolasız bağlantılar kullanmak üzere Azure SQL Veritabanı bağlanmak için mevcut bir Python uygulamasının nasıl geçirilip geçirilip geçirilmez olduğu açıklanmaktadır.

mssql-python sürücüsü, Microsoft Entra kimlik doğrulaması için yerleşik destek sağlar ve çok az kod değişikliğiyle parolasız bağlantıları basit hale getirir.

Azure SQL Veritabanı yapılandırma

Parolasız bağlantılar, Azure SQL Veritabanı dahil olmak üzere Azure hizmetlerine bağlanmak için Microsoft Entra kimlik doğrulamasını kullanır. Microsoft Entra kimlik doğrulaması, izin yönetimini basitleştirmek için kimlikleri merkezi bir konumda yönetebilirsiniz. Azure SQL Veritabanı için Microsoft Entra kimlik doğrulamasını yapılandırma hakkında daha fazla bilgi edinin:

Bu geçiş kılavuzu için, Azure SQL Veritabanı atanmış bir Microsoft Entra yöneticisine sahip olduğunuzdan emin olun.

  1. Mantıksal sunucunuzun Microsoft Entra sayfasına gidin.

  2. Microsoft Entra Id açılır menüsünü açmak için Yöneticiyi ayarla'yı seçin.

  3. Microsoft Entra Id açılır menüsünde yönetici olarak atamak istediğiniz kullanıcıyı arayın.

  4. Kullanıcıyı seçin ve Seç'i seçin.

    Microsoft Entra yöneticisini etkinleştirmeyi gösteren ekran görüntüsü.

Yerel geliştirme ortamınızı yapılandırma

Parolasız bağlantılar hem yerel hem de Azure tarafından barındırılan ortamlarda çalışacak şekilde yapılandırılabilir. Bu bölümde, tek tek kullanıcıların yerel geliştirme için Azure SQL Veritabanı kimlik doğrulaması yapmalarına izin vermek için yapılandırmalar uygulayacaksınız.

Azure'da oturum açma

Yerel geliştirme için Azure SQL Veritabanı'na erişmek için kullanmak istediğiniz Microsoft Entra hesabıyla oturum açtığınızdan 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. Bu, Windows, macOS ve Linux'ta çalışır.

az login

Veritabanı kullanıcısı oluşturma ve rol atama

Azure SQL Veritabanı'de bir kullanıcı oluşturun. Kullanıcı, Azure'da oturum açma bölümünde yerel olarak oturum açmak için kullandığınız Azure hesabına karşılık gelir.

  1. Azure portalında SQL veritabanınıza göz atın ve Sorgu düzenleyicisi (önizleme) öğesini seçin.

  2. Hesabınızı kullanarak veritabanında oturum açmak için ekranın sağ tarafındaki Devam et'i <your-username> seçin.

  3. Sorgu düzenleyicisi görünümünde aşağıdaki T-SQL komutlarını çalıştırın:

    CREATE USER [user@domain] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user@domain];
    ALTER ROLE db_datawriter ADD MEMBER [user@domain];
    ALTER ROLE db_ddladmin ADD MEMBER [user@domain];
    GO
    

    Azure Query düzenleyicisinin nasıl kullanılacağını gösteren ekran görüntüsü.

    Bu komutların çalıştırılması, SQL DB Katkıda Bulunanı rolünü belirtilen hesaba atar. Bu rol, kimliğin veritabanınızın verilerini ve şemasını okumasına, yazmasına ve değiştirmesine olanak tanır. Atanan roller hakkında daha fazla bilgi için bkz . Sabit veritabanı rolleri.

Yerel bağlantı yapılandırmasını güncelleştirme

mssql-python ile parolasız bağlantılara geçiş için yalnızca bir bağlantı dizesi değişikliği gerekir. Sürücü, Microsoft Entra kimlik doğrulama modları için yerleşik desteğe sahiptir ve bu da el ile belirteç işleme gereksinimini ortadan kaldırır.

from os import getenv
from dotenv import load_dotenv
from mssql_python import connect

load_dotenv()

connection_string = getenv("AZURE_SQL_CONNECTIONSTRING")

def get_all():
    with connect(connection_string) as conn:
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM Persons")
        # Do something with the data
    return

Yerel geliştirme için başvuruda bulunılan bağlantı dizesini (AZURE_SQL_CONNECTIONSTRING) güncelleştirmek için, kimlik doğrulamasını kullanarak .env proje klasörünüzde parolasız bağlantı dizesi biçiminde bir ActiveDirectoryDefault dosya oluşturun:

AZURE_SQL_CONNECTIONSTRING=Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryDefault

ActiveDirectoryDefault etkileşimli oturum açma gerektirmeden birden çok kaynaktan (Azure CLI, ortam değişkenleri, Visual Studio vb.) kimlik bilgilerini otomatik olarak bulur. Bu yaklaşım geliştirme için uygundur ancak her kimlik bilgisi kaynağını sırayla denediğinden gecikme süresi ekler.

Önemli

ActiveDirectoryDefault yalnızca yerel geliştirme için tasarlanmıştır. Birden çok kimlik doğrulama yöntemini sırayla dener ve bu da gecikme süresi ekler ve üretimde beklenmeyen davranışlara neden olabilir. Üretim uygulamaları için senaryonuz için belirli kimlik doğrulama yöntemini kullanın:

  • Azure App Service/İşlevler: ActiveDirectoryMSI (yönetilen kimlik) kullanın
  • Etkileşimli kullanıcı oturumu açma: Kullan ActiveDirectoryInteractive
  • Hizmet sorumlusu: Kullan ActiveDirectoryServicePrincipal

Uygulamayı test etme

Uygulamanızı yerel olarak çalıştırın ve Azure SQL Veritabanı bağlantılarının beklendiği gibi çalıştığını doğrulayın. Azure kullanıcılarında ve rollerinde yapılan değişikliklerin Azure ortamınızda yayılması birkaç dakika sürebilir. Uygulamanız artık geliştiricilerin uygulamadaki gizli dizileri yönetmek zorunda kalmadan yerel olarak çalışacak şekilde yapılandırılmıştır.

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

Uygulamanız yerel olarak parolasız bağlantılar kullanacak şekilde yapılandırıldıktan sonra, aynı kod Azure'a dağıtıldıktan sonra Azure SQL Veritabanı için kimlik doğrulaması yapabilir. Aşağıdaki bölümlerde, yönetilen kimlik kullanarak Azure SQL Veritabanı bağlanmak için dağıtılan bir uygulamanın nasıl yapılandırılacağı açıklanmaktadır. Yönetilen kimlikler, Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlanırken uygulamaların kullanması için Microsoft Entra Id'de (eski adıYla Azure Active Directory) otomatik olarak yönetilen bir kimlik sağlar. Yönetilen kimlikler hakkında daha fazla bilgi edinin:

Yönetilen kimliği oluşturma

Azure portalını veya Azure CLI'yi kullanarak kullanıcı tarafından atanan bir yönetilen kimlik oluşturun. Uygulamanız diğer hizmetlerde kimlik doğrulaması yapmak için bu kimliği kullanır.

  1. Azure portalının üst kısmında Yönetilen kimlikler'i arayın. Yönetilen Kimlikler sonucunu seçin.
  2. Yönetilen Kimliklere genel bakış sayfasının üst kısmındaki + Oluştur'u seçin.
  3. Temel Bilgiler sekmesinde aşağıdaki değerleri girin:
    • Abonelik: İstediğiniz aboneliği seçin.
    • Kaynak grubu: İstediğiniz kaynak grubunu seçin.
    • Bölge: Konumunuza yakın bir bölge seçin.
    • Ad: Kimliğiniz için MigrationIdentity gibi tanınabilir bir ad girin.
  4. Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.
  5. Doğrulama denetimleri tamamlandığında Oluştur'u seçin. Azure, kullanıcı tarafından atanan yeni bir kimlik oluşturur.

Kaynak oluşturulduktan sonra, yönetilen kimliğin ayrıntılarını görüntülemek için Kaynağa git'i seçin.

Azure portalını kullanarak yönetilen kimlik oluşturmayı gösteren ekran görüntüsü.

Yönetilen kimliği web uygulamanızla ilişkilendirme

Web uygulamanızı, oluşturduğunuz kullanıcı tarafından atanan yönetilen kimliği kullanacak şekilde yapılandırın.

Kullanıcı tarafından atanan yönetilen kimliği uygulamanızla ilişkilendirmek için Azure portalında aşağıdaki adımları tamamlayın. Bu adımlar aşağıdaki Azure hizmetleri için de geçerlidir:

  • Azure Bahar Uygulamaları
  • Azure Konteyner Uygulamaları
  • Azure sanal makineleri
  • Azure Kubernetes Service
  1. Web uygulamanızın genel bakış sayfasına gidin.

  2. Sol gezinti bölmesinden Kimlik'i seçin.

  3. Kimlik sayfasında Kullanıcı tarafından atanan sekmesine geçin.

  4. Kullanıcı tarafından atanan yönetilen kimlik ekle açılır öğesini açmak için + Ekle'yi seçin.

  5. Kimliği oluşturmak için daha önce kullandığınız aboneliği seçin.

  6. MigrationIdentity öğesini ada göre arayın ve arama sonuçlarından seçin.

  7. Kimliği uygulamanızla ilişkilendirmek için Ekle'yi seçin.

    Yönetilen kimlik atamayı gösteren ekran görüntüsü.

Kimlik için veritabanı kullanıcısı oluşturma ve roller atama

Kullanıcı tarafından atanan yönetilen kimliğe geri eşleyen bir SQL veritabanı kullanıcısı oluşturun. Uygulamanızın veritabanınızın verilerini ve şemasını okumasına, yazmasına ve değiştirmesine izin vermek için kullanıcıya gerekli SQL rollerini atayın.

  1. Azure portalında SQL veritabanınıza göz atın ve Sorgu düzenleyicisi (önizleme) öğesini seçin.

  2. Hesabınızı kullanarak veritabanında oturum açmak için ekranın sağ tarafındaki Devam et'i <username> seçin.

  3. Sorgu düzenleyicisi görünümünde aşağıdaki T-SQL komutlarını çalıştırın:

    CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name];
    GO
    

    Yönetilen kimlik için SQL kullanıcısı oluşturmak üzere Azure Query düzenleyicisinin nasıl kullanılacağını gösteren ekran görüntüsü.

    Bu komutların çalıştırılması, kullanıcı tarafından atanan yönetilen kimliğe SQL DB Katkıda Bulunanı rolünü atar. Bu rol, kimliğin veritabanınızın verilerini ve şemasını okumasına, yazmasına ve değiştirmesine olanak tanır.

Önemli

Kurumsal üretim ortamlarında veritabanı kullanıcı rolleri atarken dikkatli olun. Bu senaryolarda uygulama, tek bir yükseltilmiş kimlik kullanarak tüm işlemleri gerçekleştirmemelidir. Belirli görevler için belirli izinlere sahip birden çok kimlik yapılandırarak en az ayrıcalık ilkesini uygulamaya çalışın.

Aşağıdaki kaynaklarda veritabanı rollerini ve güvenliğini yapılandırma hakkında daha fazla bilgi edinebilirsiniz:

Bağlantı dizesini güncelleştirme

Azure uygulama yapılandırmanızı, yönetilen kimlik için kimlik doğrulamasıyla ActiveDirectoryMSI parolasız bağlantı dizesi biçimini kullanacak şekilde güncelleştirin.

Bağlantı dizeleri, uygulama barındırma ortamınızda ortam değişkenleri olarak depolanabilir. Aşağıdaki yönergeler App Service'e odaklanır, ancak diğer Azure barındırma hizmetleri benzer yapılandırmalar sağlar.

Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryMSI

<database-server-name>Azure SQL Veritabanı sunucunuzun adı ve <database-name> Azure SQL Veritabanı adıdır.

Yönetilen kimlik istemci kimliği için uygulama ayarı oluşturma

Kullanıcı tarafından atanan yönetilen kimliği kullanmak için bir AZURE_CLIENT_ID ortam değişkeni oluşturun ve yönetilen kimliğin istemci kimliğine eşit olarak ayarlayın. Bu değişkeni Azure portalında uygulamanızın Yapılandırma bölümünde ayarlayabilirsiniz. İstemci kimliğini Azure portalındaki yönetilen kimlik kaynağının Genel Bakış bölümünde bulabilirsiniz.

Değişikliklerinizi kaydedin ve bunu otomatik olarak yapmazsa uygulamayı yeniden başlatın.

Not

Kullanıcı tarafından atanan bir yönetilen kimlik kullanırken, parametresini kullanarak User Id bağlantı dizesine istemci kimliğini ekleyin:

Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;Authentication=ActiveDirectoryMSI;User Id=<managed-identity-client-id>

User Id parametresini atlarsanız, sürücü, yapılandırılmışsa sistem tarafından atanan yönetilen kimliği kullanır.

Uygulamayı test etme

Her şeyin hala çalıştığından emin olmak için uygulamanızı test edin. Tüm değişikliklerin Azure ortamınızda yayılması birkaç dakika sürebilir.