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.

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.

    A screenshot showing how to enable Microsoft Entra admin.

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ı erişmek için kullanmak istediğiniz Azure AD 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:

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
    

    A screenshot showing how to use the Azure Query editor.

    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

Python SQL Sürücüsü kullanarak Azure SQL Veritabanı bağlanan mevcut uygulama kodu - pyodbc, küçük değişikliklerle parolasız bağlantılarla çalışmaya devam eder. Örneğin, aşağıdaki kod yerel olarak çalıştırılırken ve Azure Uygulaması Hizmeti'ne dağıtıldığında hem SQL kimlik doğrulaması hem de parolasız bağlantılarla çalışır.

import os
import pyodbc, struct
from azure.identity import DefaultAzureCredential

connection_string = os.environ["AZURE_SQL_CONNECTIONSTRING"]

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

def get_conn():
    credential = DefaultAzureCredential(exclude_interactive_browser_credential=False)
    token_bytes = credential.get_token("https://database.windows.net/.default").token.encode("UTF-16-LE")
    token_struct = struct.pack(f'<I{len(token_bytes)}s', len(token_bytes), token_bytes)
    SQL_COPT_SS_ACCESS_TOKEN = 1256  # This connection option is defined by microsoft in msodbcsql.h
    conn = pyodbc.connect(connection_string, attrs_before={SQL_COPT_SS_ACCESS_TOKEN: token_struct})
    return conn

Bahşiş

Bu örnek kodda App Service ortam değişkeni WEBSITE_HOSTNAME , kodun hangi ortamda çalıştığını belirlemek için kullanılır. Diğer dağıtım senaryolarında, ortamı belirlemek için diğer ortam değişkenlerini kullanabilirsiniz.

Yerel geliştirme için başvuruda bulunan bağlantı dizesi (AZURE_SQL_CONNECTIONSTRING) güncelleştirmek için parolasız bağlantı dizesi biçimini kullanın:

Driver={ODBC Driver 18 for SQL Server};Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30

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.

A screenshot showing how to create a managed identity using the Azure portal.

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 Spring Apps
  • Azure Container Apps
  • Azure sanal makineleri
  • Azure Kubernetes Service
  • Web uygulamanızın genel bakış sayfasına gidin.
  1. Sol gezinti bölmesinden Kimlik'i seçin.

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

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

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

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

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

    A screenshot showing how to assign a managed identity.

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
    

    A screenshot showing how to use the Azure Query editor to create a SQL user for a managed identity.

    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ı parolasız bağlantı dizesi biçimini kullanacak şekilde güncelleştirin. Biçim, yerel ortamınızda kullanılanla aynı olmalıdır.

Bağlan ion 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.

Driver={ODBC Driver 18 for SQL Server};Server=tcp:<database-server-name>.database.windows.net,1433;Database=<database-name>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30

<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.

Dekont

Bu geçiş kılavuzunda gösterilen örnek bağlantı kodu, dağıtıldığında DefaultAzureCredential sınıfını kullanır. Özellikle, kullanıcı tarafından atanan yönetilen kimlik istemci kimliğini oluşturucuya geçirmeden DefaultAzureCredential kullanır. Bu senaryoda geri dönüş, AZURE_CLIENT_ID ortam değişkenini denetlemektir. AZURE_CLIENT_ID ortam değişkeni yoksa, yapılandırılırsa sistem tarafından atanan yönetilen kimlik kullanılır.

Yönetilen kimlik istemci kimliğini DefaultAzureCredential oluşturucusunda geçirirseniz, kimlik doğrulama işlemi yerel senaryoda etkileşimli kimlik doğrulamasına geri döndüğünden bağlantı kodu yerel olarak kullanılabilir ve dağıtılabilir. Daha fazla bilgi için bkz . Python için Azure Identity istemci kitaplığı.

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.

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: