Aracılığıyla paylaş


Microsoft Entra Id kullanma

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

OLE DB sürücüsünü indirme

Amaç

18.2.1 sürümünden başlayarak SQL Server için Microsoft OLE DB Sürücüsü, OLE DB uygulamalarının federasyon kimliği kullanarak Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Azure Synapse Analytics ve Microsoft Fabric'e bağlanmasına olanak tanır.

Microsoft Entra kimlik doğrulama yöntemleri şunlardır:

  • Kullanıcı adı ve parola
  • Erişim belirteci
  • Tümleşik kimlik doğrulaması

Sürüm 18.3.0 , aşağıdaki Microsoft Entra kimlik doğrulama yöntemleri için destek ekler:

Sürüm 18.5.0 , aşağıdaki kimlik doğrulama yöntemi için destek ekler:

  • Microsoft Entra hizmet sorumlusu kimlik doğrulaması

Uyarı

aşağıdaki kimlik doğrulama modlarının DataTypeCompatibility (veya buna karşılık gelen özelliğinin) olarak ayarlanması 80desteklenmez :

  • Kullanıcı adı ve parola kullanarak Microsoft Entra kimlik doğrulaması
  • Erişim belirtecini kullanarak Microsoft Entra kimlik doğrulaması
  • Microsoft Entra tümleşik kimlik doğrulaması
  • Microsoft Entra etkileşimli kimlik doğrulaması
  • Microsoft Entra yönetilen kimlik doğrulaması
  • Microsoft Entra hizmet sorumlusu kimlik doğrulaması

Microsoft Entra kimlik doğrulamasını kullanmak için Azure SQL veri kaynağınızı yapılandırmanız gerekir. Daha fazla bilgi için bkz. Azure SQL ile Microsoft Entra kimlik doğrulamasını yapılandırma ve yönetme.

Bağlantı dizesi anahtar sözcükleri ve özellikleri

Microsoft Entra kimlik doğrulamasını desteklemek için aşağıdaki bağlantı dizesi anahtar sözcükleri kullanıma sunulmuştur:

Bağlantı dizesi anahtar sözcüğü Bağlantı özelliği Description
Erişim Belirteci SSPROP_AUTH_ACCESS_TOKEN Microsoft Entra ID kimlik doğrulaması için bir erişim belirteci belirtir.
Authentication SSPROP_AUTH_MODE Kullanılacak kimlik doğrulama yöntemini belirtir.

Yeni anahtar sözcükler/özellikler hakkında daha fazla bilgi için aşağıdaki sayfalara bakın:

Şifreleme ve sertifika doğrulama

Daha fazla bilgi için bkz . Şifreleme ve sertifika doğrulaması .

GUI eklemeleri

Sürücü grafik kullanıcı arabirimi, Microsoft Entra kimlik doğrulamasına izin verecek şekilde geliştirilmiştir. Daha fazla bilgi için bakınız:

Örnek bağlantı dizeleri

Bu bölümde IDataInitialize::GetDataSource ve DBPROP_INIT_PROVIDERSTRING özellikleriyle kullanılacak yeni ve mevcut bağlantı dizesi anahtar sözcüklerinin örnekleri gösterilir.

SQL kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:
    • Yeni:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=SqlPassword; Kullanıcı Kimliği=[kullanıcıadı]; Password=[password]; Veri için Şifrelemeyi Kullanma=Zorunlu

    • Kullanımdan Kaldırılmış

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Kullanıcı Kimliği=[kullanıcıadı]; Password=[password]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:
    • Yeni:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Authentication=SqlPassword; UID=[kullanıcıadı]; PWD=[parola]; Encrypt=Zorunlu

    • Kullanımdan Kaldırılmış

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; UID=[kullanıcıadı]; PWD=[parola]; Encrypt=Zorunlu

Güvenlik Desteği Sağlayıcısı Arabirimi (SSPI) kullanarak tümleşik Windows kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:
    • Yeni:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryIntegrated; Veri için Şifrelemeyi Kullanma=Zorunlu

    • Kullanımdan Kaldırılmış

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Tümleşik Güvenlik=SSPI; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:
    • Yeni:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Kimlik Doğrulama=ActiveDirectoryIntegrated; Şifreleme=Zorunlu

    • Kullanımdan Kaldırılmış

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Trusted_Connection=evet; Encrypt=Zorunlu

Microsoft Entra kullanıcı adı ve parola kimlik doğrulaması

Uyarı

ActiveDirectoryPassword kimlik doğrulama seçeneği (Microsoft Entra ID Parola kimlik doğrulaması) kullanım dışıdır.

Microsoft Entra Id parolası, OAuth 2.0 Kaynak Sahibi Parola Kimlik Bilgileri (ROPC) iznini temel alır. Bu, bir uygulamanın parolasını doğrudan işleyerek kullanıcıda oturum açmasına olanak tanır.

Microsoft, ROPC akışını kullanmamanızı önerir; çok faktörlü kimlik doğrulaması (MFA) ile uyumsuz. Çoğu senaryoda daha güvenli alternatifler kullanılabilir ve önerilir. Bu akış, uygulamaya yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca daha güvenli akışlar uygun olmadığında kullanmalısınız. Microsoft, kullanıcıları kötü amaçlı saldırılardan korumak için bu yüksek riskli kimlik doğrulama akışından uzaklaşıyor. Daha fazla bilgi için bkz. Azure için zorunlu çok faktörlü kimlik doğrulamasını planlama.

Kullanıcı bağlamı kullanılabilir olduğunda ActiveDirectoryInteractive kimlik doğrulamayı kullanın.

Kullanıcı bağlamı kullanılamadığında ve uygulamanız Azure altyapısında çalışıyorsa ActiveDirectoryMSI (veya bazı sürücülerde ActiveDirectoryManagedIdentity) kullanın. Yönetilen Kimlik, sırları ve sertifikaları koruma ve döndürme yükünü ortadan kaldırır. Yönetilen Kimlik'i kullanamıyorsanız ActiveDirectoryServicePrincipal kimlik doğrulamayı kullanın.

Uyarı

Kullanıcı bağlamı kullanılabilir olduğunda Hizmet Sorumlusu kimlik doğrulamayı kullanmayın. Yalnızca uygulama üzerinden erişim doğası gereği yüksek ayrıcalıklıdır. Genellikle kiracı genelinde erişim sağlayarak kötü niyetli bir kişinin herhangi bir kullanıcının müşteri verilerine erişmesine imkan tanıyabilir.

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryPassword; Kullanıcı Kimliği=[kullanıcıadı]; Password=[password]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    Sunucu=[sunucu]; Veritabanı=[veritabanı]; Authentication=ActiveDirectoryPassword; UID=[kullanıcıadı]; PWD=[parola]; Encrypt=Zorunlu

Microsoft Entra tümleşik kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryIntegrated; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    Sunucu=[sunucu]; Veritabanı=[veritabanı]; Kimlik Doğrulama=ActiveDirectoryIntegrated; Şifreleme=Zorunlu

Erişim belirteci kullanarak Microsoft Entra kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Erişim Belirteci=[erişim belirteci]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    DBPROP_INIT_PROVIDERSTRING üzerinden erişim belirteci sağlanması desteklenmiyor

Microsoft Entra etkileşimli kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryInteractive; Kullanıcı Kimliği=[kullanıcıadı]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    Sunucu=[sunucu]; Veritabanı=[veritabanı]; Authentication=ActiveDirectoryInteractive; UID=[kullanıcıadı]; Encrypt=Zorunlu

Microsoft Entra yönetilen kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:
    • Kullanıcı tarafından atanan yönetilen kimlik:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryMSI; Kullanıcı Kimliği=[Nesne Kimliği]; Veri için Şifrelemeyi Kullanma=Zorunlu

    • Sistem tarafından atanan yönetilen kimlik:

      Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; İlk Katalog=[veritabanı]; Authentication=ActiveDirectoryMSI; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:
    • Kullanıcı tarafından atanan yönetilen kimlik:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Kimlik Doğrulama=ActiveDirectoryMSI; UID=[Nesne Kimliği]; Şifreleme=Zorunlu

    • Sistem tarafından atanan yönetilen kimlik:

      Sunucu=[sunucu]; Veritabanı=[veritabanı]; Kimlik Doğrulama=ActiveDirectoryMSI; Şifreleme=Zorunlu

Microsoft Entra hizmet sorumlusu kimlik doğrulaması

  • kullanarak IDataInitialize::GetDataSource:

    Provider=MSOLEDBSQL19; Veri Kaynağı=[sunucu]; Başlangıç Kataloğu=[veritabanı]; Authentication=ActiveDirectoryServicePrincipal; Kullanıcı Kimliği=[Uygulama (istemci) Kimliği]; Parola=[Uygulama (istemci) gizli dizisi]; Veri için Şifrelemeyi Kullanma=Zorunlu

  • kullanarak DBPROP_INIT_PROVIDERSTRING:

    Sunucu=[sunucu]; Veritabanı=[veritabanı]; Authentication=ActiveDirectoryServicePrincipal; UID=[Uygulama (istemci) kimliği]; PWD=[Uygulama (istemci) gizli dizisi]; Encrypt=Zorunlu

Kod örnekleri

Aşağıdaki örneklerde bağlantı anahtar sözcükleriyle Microsoft Entra ID'ye bağlanmak için gereken kod gösterilmektedir.

Erişim Belirteci

#include <string>
#include <iostream>
#include <msdasc.h>

int main()
{
    wchar_t azureServer[] = L"server";
    wchar_t azureDatabase[] = L"mydatabase";
    wchar_t accessToken[] = L"eyJ0eXAiOi...";
    IDBInitialize *pIDBInitialize = nullptr;
    IDataInitialize* pIDataInitialize = nullptr;
    HRESULT hr = S_OK;

    CoInitialize(nullptr);

    // Construct the connection string.
    std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" + 
                              std::wstring(azureDatabase) + L";Access Token=" + accessToken + L";Use Encryption for Data=Mandatory;";
    hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER, 
                          IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
    if (FAILED(hr))
    {
        std::cout << "Failed to create an IDataInitialize instance." << std::endl;
        goto Cleanup;
    }
    hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(), 
                                         IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
    if (FAILED(hr))
    {
        std::cout << "Failed to get data source object." << std::endl;
        goto Cleanup;
    }
    hr = pIDBInitialize->Initialize();
    if (FAILED(hr))
    {
        std::cout << "Failed to establish connection." << std::endl;
        goto Cleanup;
    }

Cleanup:
    if (pIDBInitialize)
    {
        pIDBInitialize->Uninitialize();
        pIDBInitialize->Release();
    }
    if (pIDataInitialize)
    {
        pIDataInitialize->Release();
    }

    CoUninitialize();
}

Active Directory ile Entegre

#include <string>
#include <iostream>
#include <msdasc.h>

int main()
{
    wchar_t azureServer[] = L"server";
    wchar_t azureDatabase[] = L"mydatabase";
    IDBInitialize *pIDBInitialize = nullptr;
    IDataInitialize* pIDataInitialize = nullptr;
    HRESULT hr = S_OK;

    CoInitialize(nullptr);

    // Construct the connection string.
    std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" + 
                              std::wstring(azureDatabase) + L";Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory;";

    hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER, 
                          IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
    if (FAILED(hr)) 
    {
        std::cout << "Failed to create an IDataInitialize instance." << std::endl;
        goto Cleanup;
    }
    hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(), 
                                         IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
    if (FAILED(hr))
    {
        std::cout << "Failed to get data source object." << std::endl;
        goto Cleanup;
    }
    hr = pIDBInitialize->Initialize();
    if (FAILED(hr))
    {
        std::cout << "Failed to establish connection." << std::endl;
        goto Cleanup;
    }

Cleanup:
    if (pIDBInitialize)
    {
        pIDBInitialize->Uninitialize();
        pIDBInitialize->Release();
    }
    if (pIDataInitialize)
    {
        pIDataInitialize->Release();
    }

    CoUninitialize();
}