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ı olarak LF ile 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\r\n' olarak yorumlanacak ve ayrıştırma sorunlarına neden olabilecek '\r\n' olarak belirtmeyin ROWTERMINATOR . COPY komutu, \n (yeni satır) belirtildiğinde \r karakterine otomatik olarak ön ek ekler. Bu, Windows tabanlı sistemler için satır başı yeni satıra (\r\n) neden olur.

C. Yönetilen Kimlik

Depolama hesabınız bir sanal ağa bağlıyken Yönetilen Kimlik kimlik doğrulaması 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ü altında Güvenilen Microsoft hizmetlerinin 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 Azure Active Directory'ye (Azure AD) 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. 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 Blob Verileri Katkıda Bulunanı
    Şunlara erişim ata: SERVICEPRINCIPAL
    Üyeler Azure Active Directory'ye kaydettiğiniz ayrılmış SQL havuzunuzu barındıran sunucu veya çalışma alanı (Azure AD)

    Azure portal rol ataması sayfası ekleyin.

    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

    DepolamaBlobu 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" 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. Azure Active Directory Kimlik 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 Depolama Blobu Veri Sahibi, Katkıda Bulunanı veya Okuyucusu
    Şunlara erişim ata: KULLANICI
    Üyeler Azure AD kullanıcısı

    Azure portal rol ataması sayfası ekleyin.

    Önemli

    DepolamaBlobu 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. Azure AD kimlik doğrulamayı yapılandırın. Azure SQL ile Azure AD kimlik doğrulamasını yapılandırma ve yönetme bölümüne bakın.

  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. Azure Active Directory uygulaması oluşturma.

  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 Azure AD 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