Aracılığıyla paylaş


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.

A. Satır sonlandırıcısı LF olan depolama hesabı 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.

Önkoş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ünde 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öneticisi 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.

    Not

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

  4. Ekle>Rol ataması ekle seçeneğini belirleyerek Rol ataması ekle sayfasını açın.

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

    Ayar Value
    Role 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ı

    Azure portalında rol ataması ekleme sayfası.

    Not

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

    Azure RBAC yükleme izni verme

  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. Ekle>Rol ataması ekle seçeneğini belirleyerek Rol ataması ekle sayfasını açın.

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

    Ayar Value
    Role Depolama Blobu Veri Sahibi, Katkıda Bulunanı veya Okuyucusu
    Şu kişiye erişim ata: KULLANICI
    Üyeler Microsoft Entra kullanıcısı

    Azure portalında rol ataması ekleme sayfası.

    Önemli

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

    Azure RBAC yükleme izni verme

  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ın:

    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