Bezpieczne ładowanie danych przy użyciu usługi Synapse SQL
W tym artykule wyróżniono i przedstawiono przykłady mechanizmów bezpiecznego uwierzytelniania dla instrukcji COPY. Instrukcja COPY jest najbardziej elastycznym i bezpiecznym sposobem zbiorczego ładowania danych w usłudze Synapse SQL.
Obsługiwane mechanizmy uwierzytelniania
Poniższa macierz opisuje obsługiwane metody uwierzytelniania dla każdego typu pliku i konta magazynu. Dotyczy to źródłowej lokalizacji magazynu i lokalizacji pliku błędu.
CSV | Parquet | ORK | |
---|---|---|---|
Azure Blob Storage | SAS/MSI/SERVICE PRINCIPAL/KEY/AAD | SYGNATURA dostępu współdzielonego/KLUCZ | SYGNATURA dostępu współdzielonego/KLUCZ |
Azure Data Lake Gen2 | SAS/MSI/SERVICE PRINCIPAL/KEY/AAD | SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD | SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD |
1. Punkt końcowy obiektu blob (.blob.core.windows.net
) w ścieżce lokalizacji zewnętrznej jest wymagany dla tej metody uwierzytelniania.
2: Punkt końcowy dfs (.dfs.core.windows.net
) w ścieżce lokalizacji zewnętrznej jest wymagany dla tej metody uwierzytelniania.
Odp. Klucz konta magazynu z LF jako terminator wierszy (nowy wiersz w stylu unix)
--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)
)
Ważne
- Użyj wartości szesnastkowej (0x0A), aby określić znak kanału informacyjnego/nowego wiersza. Zwróć uwagę, że instrukcja COPY zinterpretuje
\n
ciąg jako\r\n
(powrót karetki newline).
B. Sygnatury dostępu współdzielonego (SAS) z CRLF jako terminator wiersza (nowy wiersz stylu systemu Windows)
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.
)
Ważne
Nie należy określać ROWTERMINATOR
wartości "\r\n", która będzie interpretowana jako "\r\r\n" i może powodować problemy z analizowaniem. Polecenie COPY automatycznie prefiksuje znak \r po określeniu znaku \n (nowy wiersz). Powoduje to powrót nowego wiersza karetki (\r\n) dla systemów z systemem Windows.
C. Tożsamość zarządzana
Uwierzytelnianie tożsamości zarządzanej jest wymagane, gdy konto magazynu jest dołączone do sieci wirtualnej.
Wymagania wstępne
- Zainstaluj program Azure PowerShell. Zapoznaj się z tematem Instalowanie programu PowerShell.
- Jeśli masz konto ogólnego przeznaczenia w wersji 1 lub usługi Blob Storage, musisz najpierw przeprowadzić uaktualnienie do wersji ogólnego przeznaczenia w wersji 2. Zapoznaj się z artykułem Uaktualnianie do konta magazynu ogólnego przeznaczenia w wersji 2.
- W menu Ustawień zapory konta usługi Azure Storage i sieci wirtualnych musi być włączona opcja Zezwalaj na dostęp do zaufanego usługi firmy Microsoft. Zobacz Konfigurowanie zapór i sieci wirtualnych usługi Azure Storage.
Kroki
Jeśli masz autonomiczną dedykowaną pulę SQL, zarejestruj serwer SQL przy użyciu identyfikatora Entra firmy Microsoft przy użyciu programu PowerShell:
Connect-AzAccount Select-AzSubscription -SubscriptionId <subscriptionId> Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
Ten krok nie jest wymagany w przypadku dedykowanych pul SQL w obszarze roboczym usługi Synapse. Tożsamość zarządzana przypisana przez system (SA-MI) obszaru roboczego jest członkiem roli Administratora usługi Synapse i w związku z tym ma podwyższony poziom uprawnień w dedykowanych pulach SQL obszaru roboczego.
Utwórz konto magazynu ogólnego przeznaczenia w wersji 2. Aby uzyskać więcej informacji, zobacz temat Tworzenie konta.
Uwaga
- Jeśli masz konto ogólnego przeznaczenia w wersji 1 lub usługi Blob Storage, musisz najpierw przeprowadzić uaktualnienie do wersji 2. Aby uzyskać więcej informacji, zobacz Uaktualnienie konta magazynu ogólnego przeznaczenia do wersji 2.
- Znane problemy z usługą Azure Data Lake Storage Gen2 można znaleźć w artykule Znane problemy z usługą Azure Data Lake Storage Gen2.
W obszarze konta magazynu wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
Kliknij pozycję Dodaj>Dodaj przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.
Przypisz następującą rolę. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Ustawienie Wartość Rola Współautor danych w usłudze Blob Storage Przypisz dostęp do SERVICEPRINCIPAL Elementy członkowskie serwer lub obszar roboczy hostujący dedykowaną pulę SQL zarejestrowaną w identyfikatorze Entra firmy Microsoft Uwaga
W tym kroku mogą wykonać tylko członkowie z uprawnieniami właściciela. W przypadku różnych ról wbudowanych platformy Azure zapoznaj się z wbudowanymi rolami platformy Azure.
Ważne
Określ rolę właściciela, współautora lub czytelnika danych obiektu blob usługi Storage. Te role różnią się od wbudowanych ról platformy Azure w obszarze Właściciel, Współautor i Czytelnik.
Teraz możesz uruchomić instrukcję COPY określającą "Tożsamość zarządzana":
COPY INTO dbo.target_table FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt' WITH ( FILE_TYPE = 'CSV', CREDENTIAL = (IDENTITY = 'Managed Identity'), )
D. Uwierzytelnianie Microsoft Entra
Kroki
W obszarze konta magazynu wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
Kliknij pozycję Dodaj>Dodaj przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.
Przypisz następującą rolę. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Ustawienie Wartość Rola Właściciel, współautor lub czytelnik danych obiektu blob usługi Storage Przypisz dostęp do UŻYTKOWNIK Elementy członkowskie Użytkownik firmy Microsoft Entra Ważne
Określ rolę właściciela, współautora lub czytelnika danych obiektu blob usługi Storage. Te role różnią się od wbudowanych ról platformy Azure w obszarze Właściciel, Współautor i Czytelnik.
Skonfiguruj uwierzytelnianie firmy Microsoft Entra. Zapoznaj się z tematem Konfigurowanie uwierzytelniania entra firmy Microsoft i zarządzanie nim za pomocą usługi Azure SQL.
Połącz się z pulą SQL przy użyciu usługi Active Directory, w której można teraz uruchomić instrukcję COPY bez określania poświadczeń:
COPY INTO dbo.target_table FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt' WITH ( FILE_TYPE = 'CSV' )
E. Uwierzytelnianie jednostki usługi
Kroki
Utwórz aplikację Firmy Microsoft Entra.
Pobierz identyfikator aplikacji.
Pobierz klucz uwierzytelniania.
Uzyskaj punkt końcowy tokenu OAuth 2.0 w wersji 1.
Przypisz uprawnienia do odczytu, zapisu i wykonywania do aplikacji Microsoft Entra na koncie magazynu.
Teraz możesz uruchomić instrukcję COPY:
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') )
Ważne
Używanie wersji 1 punktu końcowego tokenu OAuth 2.0
Następne kroki
- Zapoznaj się z artykułem dotyczącym instrukcji COPY, aby uzyskać szczegółową składnię
- Zapoznaj się z artykułem omówienie ładowania danych, aby uzyskać najlepsze rozwiązania dotyczące ładowania