Udostępnij za pośrednictwem


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

  1. Zainstaluj program Azure PowerShell. Zapoznaj się z tematem Instalowanie programu PowerShell.
  2. 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.
  3. 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

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

  2. Utwórz konto magazynu ogólnego przeznaczenia w wersji 2. Aby uzyskać więcej informacji, zobacz temat Tworzenie konta.

    Uwaga

  3. W obszarze konta magazynu wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).

  4. Kliknij pozycję Dodaj>Dodaj przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.

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

    Dodaj stronę przypisania roli w witrynie Azure Portal.

    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.

    Udzielanie uprawnień RBAC platformy Azure do ładowania

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

  1. W obszarze konta magazynu wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).

  2. Kliknij pozycję Dodaj>Dodaj przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.

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

    Dodaj stronę przypisania roli w witrynie Azure Portal.

    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.

    Udzielanie uprawnień RBAC platformy Azure do ładowania

  4. Skonfiguruj uwierzytelnianie firmy Microsoft Entra. Zapoznaj się z tematem Konfigurowanie uwierzytelniania entra firmy Microsoft i zarządzanie nim za pomocą usługi Azure SQL.

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

  1. Utwórz aplikację Firmy Microsoft Entra.

  2. Pobierz identyfikator aplikacji.

  3. Pobierz klucz uwierzytelniania.

  4. Uzyskaj punkt końcowy tokenu OAuth 2.0 w wersji 1.

  5. Przypisz uprawnienia do odczytu, zapisu i wykonywania do aplikacji Microsoft Entra na koncie magazynu.

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