Synapse SQL kullanarak verileri güvenli bir şekilde SQL

Bu makalede COPY deyimi için güvenli kimlik doğrulama mekanizmaları vurgulanır ve örnekler verilmiştir. COPY deyimi, Synapse veri yüklemenin en esnek ve güvenli yolu SQL.

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 core.windows.net .blob uç noktası (.blob.core.windows.net) gereklidir.

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

A. Depolama sonlandırıcı olarak LF ile hesap anahtarı seçme (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='x6RWv4It5F2msnjelv3H4DA80n0QW0daPdw43jM0nyetx4c6CpDkdj3986DX5AHFMIf/YN4y6kkCnU8lb+Wx0Pj+6MDw=='),
	,ROWTERMINATOR='0x0A' --0x0A specifies to use the Line Feed character (Unix based systems)
)

Önemli

  • Satır Akışı/Yeni satır karakterini belirtmek 0x0A onaltılık değeri (0x0A) kullanın. COPY deyiminin '\n' dizesini '\r\n' (satır başı yeni satır) olarak yorumlar.

B. Satır sonlandırıcısı olarak CRLF ile Paylaşılan Erişim İmzaları (SAS Windows stilinde 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%2FKiJDSFSYsz4AkNa%2F%2BTx61FuQ%2FfKHefqoBE%3D'),
    ,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

  • ROWTERMINATOR'ın '\r\n' olarak yorumlanmasına ve ayrıştırma sorunlarına neden \r\r\n' olarak belirtme

C. Yönetilen Kimlik

Depolama hesabınız bir VNet'e bağlı olduğunda Yönetilen Kimlik kimlik doğrulaması gereklidir.

Önkoşullar

  1. Bu kılavuzu kullanarak Azure PowerShell'i yükleyin.
  2. Genel amaçlı v1 veya blob depolama hesabınız varsa öncelikle bu kılavuzda yer alan adımları izleyerek genel amaçlı v2 sürümüne yükseltmeniz gerekir.
  3. Azure depolama hesabı Güvenlik duvarları ve Microsoft hizmetleri ayarları menüsünden Bu depolama hesabına erişime izin Depolama izin ver seçeneğinin açık olması gerekir. Daha fazla bilgi için bu kılavuza bakın.

Adımlar

  1. Tek başına ayrılmış bir SQL havuzu varsa, PowerShell kullanarak SQL sunucunuza Azure Active Directory (AAD) kaydetme:

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

    Bu adım, Synapse çalışma SQL ayrılmış havuzlar için gerekli değildir.

  2. Synapse çalışma alanınız varsa çalışma alanınıza sistem tarafından yönetilen kimliği kaydetmeniz gerekir:

    1. Çalışma alanında Synapse çalışma alanınıza Azure portal
    2. Yönetilen kimlikler dikey penceresine gidin
    3. "İzin Ver" Pipelines emin olun

    Register workspace system msi

  3. Bu kılavuzu kullanarak genel amaçlı v2 Depolama Hesabı oluşturun.

    Not

    • Genel amaçlı v1 veya blob depolama hesabınız varsa, önce bu kılavuzu kullanarak v2'ye yükseltmeniz gerekir.
    • Azure Data Lake Depolama 2. Nesil ile ilgili bilinen sorunlar için lütfen bu kılavuza bakın.
  4. Depolama hesabınız altında Erişim denetimi (IAM) öğesini seçin.

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

  6. Aşağıdaki rolü attay. Ayrıntılı adımlar için bkz. Azure rollerini Azure portal.

    Ayar Değer
    Rol Depolama Blob Verileri Katkıda Bulunanı
    Şunlara erişim ata: SERVICEPRINCIPAL
    Üyeler Azure Active Directory 'a (SQL) ayrılmış Azure Active Directory veya çalışma AAD

    Add role assignment page in Azure portal.

    Not

    Bu adımı yalnızca Sahip ayrıcalığına sahip üyeler gerçekleştirecek. Çeşitli Azure yerleşik rolleri için bu kılavuza bakın.

    Önemli

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

    Granting Azure RBAC permission to load

  7. Artık "Yönetilen Kimlik" ifadesini belirterek COPY deyimini çalıştırarak:

     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 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ü attay. Ayrıntılı adımlar için bkz. Azure rollerini Azure portal.

    Ayar Değer
    Rol Depolama Blob Veri Sahibi, Katkıda Bulunanı veya Okuyucusu
    Şunlara erişim ata: KULLANICI
    Üyeler Azure AD kullanıcısı

    Add role assignment page in Azure portal.

    Önemli

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

    Granting Azure RBAC permission to load

  4. Aşağıdaki belgeleri kullanarak Azure AD kimlik doğrulamasını yapılandırma.

  5. Bağlan kimlik SQL olmadan COPY deyimini çalıştırabilirsiniz:

     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 oluşturma

  2. Uygulama kimliğini al

  3. Kimlik doğrulama anahtarını al

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

  5. Depolama hesabınıza Azure AD uygulamanıza okuma, yazma ve yürütme izinleri atama

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

     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