Bezpečné načtení dat pomocí Synapse SQL

Tento článek popisuje a uvádí příklady mechanismů zabezpečeného ověřování pro příkaz COPY. Příkaz COPY je nejflexibilnější a nejbezpečnější způsob hromadného načítání dat ve službě Synapse SQL.

Podporované mechanismy ověřování

Následující matice popisuje podporované metody ověřování pro každý typ souboru a účet úložiště. To platí pro umístění zdrojového úložiště a umístění chybového souboru.

CSV Parquet ORC
Azure Blob Storage SAS, MSI, INSTANČNÍ OBJEKT, KLÍČ/ AAD SAS/KLÍČ SAS/KLÍČ
Azure Data Lake Gen2 SAS, MSI, INSTANČNÍ OBJEKT, KLÍČ/ AAD SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD

1: Pro tuto metodu ověřování se vyžaduje koncový bod objektu blob (.blob.core.windows.net) ve vaší cestě k externímu umístění.

2: Pro tuto metodu ověřování se vyžaduje koncový bod .dfs (.dfs.core.windows.net) ve vaší cestě k externímu umístění.

A. Klíč účtu úložiště s LF jako ukončovacím znakem řádku (nový řádek ve stylu Unixu)

--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)
)

Důležité

  • Pomocí šestnáctkové hodnoty (0x0A) zadejte znak kanálu řádku nebo nového řádku. Všimněte si, že příkaz COPY interpretuje \n řetězec jako \r\n (začátek řádku return newline).

B. Sdílené přístupové podpisy (SAS) s CRLF jako ukončovacím znakem řádku (nový řádek stylu 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.
)

Důležité

Nezadávejte ROWTERMINATOR hodnotu \r\n, která bude interpretována jako \r\r\n a může vést k problémům při analýze. Příkaz COPY automaticky předpony znaku \r při zadání \n (nový řádek). Výsledkem je návrat nového řádku (\r\n) pro systémy s Windows.

C. Spravovaná identita

Ověřování spravované identity se vyžaduje, když je váš účet úložiště připojený k virtuální síti.

Předpoklady

  1. Nainstalujte Azure PowerShell. Přečtěte si informace o instalaci PowerShellu.
  2. Pokud máte účet úložiště objektů blob pro obecné účely verze 1 nebo blob, musíte nejprve upgradovat na verzi pro obecné účely verze 2. Informace o upgradu na účet úložiště pro obecné účely verze 2
  3. Pro přístup k tomuto účtu úložiště v nabídce Brány firewall účtu služby Azure Storage a nastavení virtuálních sítí musíte mít povolenou důvěryhodnou služby Microsoft. Informace o konfiguraci bran firewall služby Azure Storage a virtuálních sítí

Kroky

  1. Pokud máte samostatný vyhrazený fond SQL, pomocí PowerShellu zaregistrujte sql server pomocí Microsoft Entra ID:

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

    Tento krok není nutný pro vyhrazené fondy SQL v pracovním prostoru Synapse. Spravovaná identita přiřazená systémem (SA-MI) pracovního prostoru je členem role Synapse Správa istratoru a má tak zvýšená oprávnění k vyhrazeným fondům SQL pracovního prostoru.

  2. Vytvořte účet úložiště pro obecné účely verze 2. Další informace najdete v článku o vytvoření účtu úložiště.

    Poznámka:

  3. V účtu úložiště vyberte Řízení přístupu (IAM).

  4. Výběrem možnosti Přidat>přiřazení role otevřete stránku Přidat přiřazení role.

  5. Přiřaďte následující roli. Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.

    Nastavení Hodnota
    Role Přispěvatel dat objektů blob úložiště
    Přiřadit přístup k SERVICEPRINCIPAL
    Členové server nebo pracovní prostor hostující vyhrazený fond SQL, který jste zaregistrovali s ID Microsoft Entra

    Add role assignment page in Azure portal.

    Poznámka:

    Tento krok můžou provádět pouze členové s oprávněním vlastníka. Informace o různých předdefinovaných rolích Azure najdete v předdefinovaných rolích Azure.

    Důležité

    Zadejte roli Vlastník dat objektů blob úložiště, Přispěvatel nebo Čtenář Azure. Tyto role se liší od předdefinovaných rolí Vlastník, Přispěvatel a Čtenář v Azure.

    Granting Azure RBAC permission to load

  6. Teď můžete spustit příkaz COPY, který určuje spravovanou identitu:

    COPY INTO dbo.target_table
    FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt'
    WITH (
        FILE_TYPE = 'CSV',
        CREDENTIAL = (IDENTITY = 'Managed Identity'),
    )
    

D. Ověřování Microsoft Entra

Kroky

  1. V účtu úložiště vyberte Řízení přístupu (IAM).

  2. Výběrem možnosti Přidat>přiřazení role otevřete stránku Přidat přiřazení role.

  3. Přiřaďte následující roli. Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.

    Nastavení Hodnota
    Role Vlastník dat objektu blob úložiště, přispěvatel nebo čtenář
    Přiřadit přístup k UŽIVATEL
    Členové Uživatel Microsoft Entra

    Add role assignment page in Azure portal.

    Důležité

    Zadejte roli Vlastník dat objektů blob úložiště, Přispěvatel nebo Čtenář Azure. Tyto role se liší od předdefinovaných rolí Vlastník, Přispěvatel a Čtenář v Azure.

    Granting Azure RBAC permission to load

  4. Nakonfigurujte ověřování Microsoft Entra. Informace o konfiguraci a správě ověřování Microsoft Entra pomocí Azure SQL

  5. Připojení do fondu SQL pomocí služby Active Directory, kde teď můžete spustit příkaz COPY bez zadání přihlašovacích údajů:

    COPY INTO dbo.target_table
    FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt'
    WITH (
        FILE_TYPE = 'CSV'
    )
    

E. Ověřování instančních objektů

Kroky

  1. Vytvořte aplikaci Microsoft Entra.

  2. Získejte ID aplikace.

  3. Získejte ověřovací klíč.

  4. Získejte koncový bod tokenu OAuth 2.0 V1.

  5. Přiřaďte oprávnění ke čtení, zápisu a provádění vaší aplikaci Microsoft Entra ve vašem účtu úložiště.

  6. Teď můžete spustit příkaz 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')
    )
    

Důležité

Použití verze V1 koncového bodu tokenu OAuth 2.0

Další kroky

  • Podrobné syntaxe najdete v článku o příkazu COPY.
  • Informace o osvědčených postupech načítání dat najdete v článku s přehledem načítání dat.