Synapse SQL kullanarak verileri güvenli bir şekilde yükleme

Bu makalede COPY deyimi için güvenli kimlik doğrulama mekanizmaları vurgulanır ve örnekler sağlanır. COPY deyimi, Synapse SQL'de verileri toplu yüklemenin en esnek ve güvenli yoludur.

Desteklenen kimlik doğrulama mekanizmaları

Aşağıdaki matris, her dosya türü ve depolama hesabı için desteklenen kimlik doğrulama yöntemlerini açıklar. Bu, kaynak depolama konumu ve hata dosyası konumu için geçerlidir.

CSV Parquet ORC
Azure blob depolama SAS/MSI/HIZMET SORUMLUSU/ANAHTAR/AAD SAS/ANAHTAR SAS/ANAHTAR
Azure Data Lake 2. Nesil SAS/MSI/HIZMET SORUMLUSU/ANAHTAR/AAD SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD

1: Bu kimlik doğrulama yöntemi için dış konum yolunuzdaki .blob uç noktası (.blob.core.windows.net) gereklidir.

2: Bu kimlik doğrulama yöntemi için dış konum yolunuzdaki .dfs uç noktası (.dfs.core.windows.net) gereklidir.

C. Satır sonlandırıcı olarak LF ile Depolama hesap anahtarı (Unix stili yeni satır)

--Note when specifying the column list, input field numbers start from 1
COPY INTO target_table (Col_one default 'myStringDefault' 1, Col_two default 1 3)
FROM 'https://adlsgen2account.dfs.core.windows.net/myblobcontainer/folder1/'
WITH (
    FILE_TYPE = 'CSV'
    ,CREDENTIAL=(IDENTITY= 'Storage Account Key', SECRET='<Your_Account_Key>')
    --CREDENTIAL should look something like this:
    --CREDENTIAL=(IDENTITY= 'Storage Account Key', SECRET='<secret>'),
    ,ROWTERMINATOR='0x0A' --0x0A specifies to use the Line Feed character (Unix based systems)
)

Önemli

  • Satır Akışı/Yeni Satır karakterini belirtmek için onaltılık değeri (0x0A) kullanın. COPY deyiminin dizeyi \n olarak \r\n yorumlayacağını unutmayın (satır başı yeni satır).

B. Satır sonlandırıcı olarak CRLF ile Paylaşılan Erişim İmzaları (SAS) (Windows stili yeni satır)

COPY INTO target_table
FROM 'https://adlsgen2account.dfs.core.windows.net/myblobcontainer/folder1/'
WITH (
    FILE_TYPE = 'CSV'
    ,CREDENTIAL=(IDENTITY= 'Shared Access Signature', SECRET='<Your_SAS_Token>')
    --CREDENTIAL should look something like this:
    --CREDENTIAL=(IDENTITY= 'Shared Access Signature', SECRET='?sv=2018-03-28&ss=bfqt&srt=sco&sp=rl&st=2016-10-17T20%3A14%3A55Z&se=2021-10-18T20%3A19%3A00Z&sig=IEoOdmeYnE9%2FKiJDSFSYsz4AkN'),
    ,ROWTERMINATOR='\n'-- COPY command automatically prefixes the \r character when \n (newline) is specified. This results in carriage return newline (\r\n) for Windows based systems.
)

Önemli

'\r\n' olarak yorumlanacak ve ayrıştırma sorunlarına neden olabilecek '\r\n' olarak belirtmeyin ROWTERMINATOR . \n (yeni satır) belirtildiğinde COPY komutu \r karakterine otomatik olarak ön ek ekler. Bu, Windows tabanlı sistemler için satır başı yeni satır (\r\n) ile sonuçlar.

C. Yönetilen Kimlik

Yönetilen Kimlik kimlik doğrulaması, depolama hesabınız bir sanal ağa bağlı olduğunda gereklidir.

Ön koşullar

  1. Azure PowerShell'i yükleyin. Bkz. PowerShell'i yükleme.
  2. Genel amaçlı v1 veya blob depolama hesabınız varsa, önce genel amaçlı v2'ye yükseltmeniz gerekir. Genel amaçlı v2 depolama hesabına yükseltme konusuna bakın.
  3. Azure Depolama hesabı Güvenlik duvarları ve Sanal ağlar ayarları menüsü altında Güvenilen Microsoft hizmetleri bu depolama hesabına erişmesine izin ver seçeneğinin açık olması gerekir. Bkz. Azure Depolama güvenlik duvarlarını ve sanal ağları yapılandırma.

Adımlar

  1. Tek başına ayrılmış bir SQL havuzunuz varsa PowerShell kullanarak SQL sunucunuzu Microsoft Entra ID'ye kaydedin:

    Connect-AzAccount
    Select-AzSubscription -SubscriptionId <subscriptionId>
    Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
    

    Synapse çalışma alanı içindeki ayrılmış SQL havuzları için bu adım gerekli değildir. Çalışma alanının sistem tarafından atanan yönetilen kimliği (SA-MI), Synapse Yönetici istrator rolünün bir üyesidir ve bu nedenle çalışma alanının ayrılmış SQL havuzlarında yükseltilmiş ayrıcalıklara sahiptir.

  2. Genel amaçlı v2 Depolama Hesabı oluşturun. Daha fazla bilgi için bkz. Depolama hesabı oluşturma.

    Dekont

  3. Depolama hesabınızın altında Erişim denetimi (IAM) öğesini seçin.

  4. Rol ataması ekle sayfasını açmak için Rol ataması ekle'yi>seçin.

  5. Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

    Ayar Değer
    Rol Depolama Blobu Veri Katılımcısı
    Şu kişiye erişim ata: SERVICEPRINCIPAL
    Üyeler Microsoft Entra ID ile kaydettiğiniz ayrılmış SQL havuzunuzu barındıran sunucu veya çalışma alanı

    Add role assignment page in Azure portal.

    Dekont

    Bu adımı yalnızca Sahip ayrıcalığına sahip üyeler gerçekleştirebilir. Çeşitli Azure yerleşik rolleri için bkz . Azure yerleşik rolleri.

    Önemli

    Depolama Blob Veri Sahibi, Katkıda Bulunanı veya Okuyucu Azure rolünü belirtin. Bu roller, Sahip, Katkıda Bulunan ve Okuyucu'nun Azure yerleşik rollerinden farklıdır.

    Granting Azure RBAC permission to load

  6. Artık "Yönetilen Kimlik" öğesini belirterek COPY deyimini çalıştırabilirsiniz:

    COPY INTO dbo.target_table
    FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt'
    WITH (
        FILE_TYPE = 'CSV',
        CREDENTIAL = (IDENTITY = 'Managed Identity'),
    )
    

D. Microsoft Entra doğrulaması

Adımlar

  1. Depolama hesabınızın altında Erişim denetimi (IAM) öğesini seçin.

  2. Rol ataması ekle sayfasını açmak için Rol ataması ekle'yi>seçin.

  3. Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

    Ayar Değer
    Rol Blob Veri Sahibini, Katkıda Bulunanı veya Okuyucusu Depolama
    Şu kişiye erişim ata: KULLANICI
    Üyeler Microsoft Entra kullanıcısı

    Add role assignment page in Azure portal.

    Önemli

    Depolama Blob Veri Sahibi, Katkıda Bulunanı veya Okuyucu Azure rolünü belirtin. Bu roller, Sahip, Katkıda Bulunan ve Okuyucu'nun Azure yerleşik rollerinden farklıdır.

    Granting Azure RBAC permission to load

  4. Microsoft Entra kimlik doğrulamayı yapılandırın. Bkz. Azure SQL ile Microsoft Entra kimlik doğrulamasını yapılandırma ve yönetme.

  5. Artık herhangi bir kimlik bilgisi belirtmeden COPY deyimini çalıştırabileceğiniz Active Directory kullanarak SQL havuzunuza Bağlan:

    COPY INTO dbo.target_table
    FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt'
    WITH (
        FILE_TYPE = 'CSV'
    )
    

E. Hizmet Sorumlusu Kimlik Doğrulaması

Adımlar

  1. Bir Microsoft Entra uygulaması oluşturun.

  2. Uygulama kimliğini alın.

  3. Kimlik doğrulama anahtarını alın.

  4. V1 OAuth 2.0 belirteç uç noktasını alın.

  5. Depolama hesabınızdaki Microsoft Entra uygulamanıza okuma, yazma ve yürütme izinleri atayın.

  6. Artık COPY deyimini çalıştırabilirsiniz:

    COPY INTO dbo.target_table
    FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder0/*.txt'
    WITH (
        FILE_TYPE = 'CSV'
        ,CREDENTIAL=(IDENTITY= '<application_ID>@<OAuth_2.0_Token_EndPoint>' , SECRET= '<authentication_key>')
        --CREDENTIAL should look something like this:
        --,CREDENTIAL=(IDENTITY= '92761aac-12a9-4ec3-89b8-7149aef4c35b@https://login.microsoftonline.com/72f714bf-86f1-41af-91ab-2d7cd011db47/oauth2/token', SECRET='juXi12sZ6gse]woKQNgqwSywYv]7A.M')
    )
    

Önemli

OAuth 2.0 belirteç uç noktasının V1 sürümünü kullanma

Sonraki adımlar