Sdílet prostřednictvím


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ě. Tyto informace platí pro umístění zdrojového úložiště a umístění chybového souboru.

formát CSV Parquet ORC
Azure Blob Storage SAS, MSI, HLAVNÍ SLUŽBA, INSTANČNÍ OBJEKT, KLÍČ, AAD SAS/KEY SAS/KEY
Azure Data Lake Gen2 SAS, MSI, SERVICE PRINCIPAL, KLÍČ, AAD SAS (blob1)/MSI (dfs2)/SERVICE PRINCIPAL/KEY/AAD SAS (blob1)/MSI (dfs2)/Služební Princip/Klíč/AAD

1: Pro autentizaci touto metodou je ve vaší cestě k externímu umístění vyžadován koncový bod .blob (.blob.core.windows.net).

Pro tuto metodu ověřování je vyžadován koncový bod .dfs (.dfs.core.windows.net) ve vaší cestě k externí lokalitě.

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

Important

  • Pomocí šestnáctkové hodnoty (0x0A) zadejte znak 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.
)

Important

Nezadávejte ROWTERMINATOR jako '\r\n', které se interpretuje jako '\r\r\n' a může vést k problémům s parsováním. Příkaz COPY automaticky předponuje znak \r při specifikaci \n (nový řádek). Výsledkem je návrat na nový řádek (\r\n) v systémech založených na 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.

Prerequisites

  1. Nainstalujte Azure PowerShell. Přečtěte si instalacePowerShellu.
  2. Pokud máte účet úložiště pro obecné účely v1 nebo úložiště objektů blob, musíte nejprve upgradovat na verzi 2 pro obecné účely. Odkaz na povýšení na účet úložiště pro obecné účely verze 2
  3. Musíte mít zapnutou možnost Povolit důvěryhodným službám Microsoftu přístup k tomuto účtu úložiště v nabídce nastavení Brány firewall a Virtuální sítě účtu služby Azure Storage. Viz Konfigurace bran firewall služby Azure Storage a virtuálních sítí.

Steps

  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 Správce Synapse 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ě.

    Note

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

  4. Výběrem Přidat>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.

    Setting Value
    Role Přispěvatel dat služby Storage Blob
    Přiřadit přístup k SERVICEPRINCIPAL
    Members Server nebo pracovní prostor hostující vyhrazený fond SQL, který je zaregistrovaný s ID Microsoft Entra

    Na webu Azure Portal přidejte stránku přiřazení role.

    Note

    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.

    Important

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

    Udělení oprávnění Azure RBAC k načtení

  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ěřovací systém Microsoft Entra

Steps

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

  2. Výběrem Přidat>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.

    Setting Value
    Role Vlastník dat úložiště blob, spolupracovník nebo čtenář
    Přiřadit přístup k USER
    Members Uživatel Microsoft Entra

    Na webu Azure Portal přidejte stránku přiřazení role.

    Important

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

    Udělení oprávnění Azure RBAC k načtení

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

  5. Připojte se ke svému fondu SQL pomocí služby Active Directory, kde teď můžete spustit příkaz COPY bez zadání jakýchkoli 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í objektu Service Principal

Steps

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

Important

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

Další kroky