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.
Požadavky
- Nainstalujte Azure PowerShell. Přečtěte si informace o instalaci PowerShellu.
- 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
- 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
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.
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:
- Pokud máte účet úložiště objektů blob pro obecné účely verze 1 nebo blob, musíte nejprve upgradovat na verzi 2. Další informace najdete v tématu Upgrade na účet úložiště pro obecné účely verze 2.
- Známé problémy se službou Azure Data Lake Storage Gen2 najdete v tématu Známé problémy se službou Azure Data Lake Storage Gen2.
V účtu úložiště vyberte Řízení přístupu (IAM).
Kliknutím na Přidat>Přidat přiřazení role otevřete stránku Přidat přiřazení role.
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 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.
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
V účtu úložiště vyberte Řízení přístupu (IAM).
Kliknutím na Přidat>Přidat přiřazení role otevřete stránku Přidat přiřazení role.
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 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.
Nakonfigurujte ověřování Microsoft Entra. Informace o konfiguraci a správě ověřování Microsoft Entra pomocí Azure SQL
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í instančních objektů
Kroky
Vytvořte aplikaci Microsoft Entra.
Získejte ID aplikace.
Získejte koncový bod tokenu OAuth 2.0 V1.
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ě.
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.