Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stessoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Si applica a: SQL Server 2022 (16.x)
Questo articolo illustra come usare PolyBase per eseguire query sui dati esterni in una risorsa di archiviazione di oggetti compatibile con S3.
SQL Server 2022 (16.x) introduce la possibilità di connettersi a qualsiasi risorsa di archiviazione di oggetti compatibile con S3; sono disponibili due opzioni per l'autenticazione: autenticazione di base o autorizzazione pass-through (nota anche come autorizzazione STS).
L'autenticazione di base, nota anche come credenziali statiche, prevede che l'utente archivi access key id
e secret key id
in SQL Server; spetta all’utente revocare e ruotare in modo esplicito le credenziali ogni qual volta sia necessario. Il controllo di accesso con granularità fine prevede che l'amministratore configuri le credenziali statiche per ogni accesso; questo approccio può risultare complesso quando si gestiscono decine o centinaia di credenziali univoche.
L'autorizzazione pass-through (STS) offre una soluzione a questi problemi abilitando l'uso delle identità dell'utente di SQL Server per accedere alle risorse di archiviazione oggetti compatibili con S3. Le risorse di archiviazione oggetti compatibili con S3 hanno la possibilità di assegnare credenziali temporanee usando il servizio token di sicurezza (STS). Tali credenziali sono a breve termine e vengono generate in modo dinamico.
Questo articolo include istruzioni per l'autenticazione di base e l'autorizzazione pass-through (autorizzazione STS).
Per usare le funzionalità di integrazione delle risorse di archiviazione di oggetti compatibili con S3, sono necessari gli strumenti e le risorse seguenti:
Access Key ID
) e il segreto (Secret Key ID
) noti. È necessario eseguire l'autenticazione a fronte dell'endpoint di archiviazione oggetti S3.Per consentire all'utente proxy di leggere il contenuto di un bucket S3, l'utente (Access Key ID
) deve essere autorizzato a eseguire le azioni seguenti a fronte dell'endpoint S3:
Msg 4860, Level 16, State 7, Line 15 Cannot bulk load. The file "s3://<ip address>:9000/bucket/*.*" does not exist or you don't have file access rights.
Suggerimento
Il provider di archiviazione oggetti conforme a S3 potrebbe richiedere autorizzazioni aggiuntive per le operazioni API o usare nomi diversi per i ruoli contenenti le autorizzazioni per le operazioni API. Vedere la documentazione del prodotto.
Abilitare PolyBase in sp_configure
:
EXEC sp_configure @configname = 'polybase enabled', @configvalue = 1;
GO
RECONFIGURE
GO
Confermare l'impostazione:
EXEC sp_configure @configname = 'polybase enabled';
Per continuare, scegliere Autenticazione di base o autorizzazione pass-through (STS).
Prima di creare credenziali con ambito database, il database utente deve avere una chiave master per proteggerle. Per altre informazioni, vedere CREATE MASTER KEY.
Lo script di esempio seguente crea una credenziale s3-dc
con ambito database nel database database_name
in un'istanza di SQL Server. Per altre informazioni sulle credenziali, vedere CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
USE [database_name];
GO
IF NOT EXISTS(SELECT * FROM sys.database_scoped_credentials WHERE name = 's3_dc')
BEGIN
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key',
SECRET = '<AccessKeyID>:<SecretKeyID>' ;
END
GO
Verificare le nuove credenziali con ambito database con sys.database_scoped_credentials (Transact-SQL):
SELECT * FROM sys.database_scoped_credentials;
Lo script di esempio seguente crea un'origine dati esterna s3_ds
nel database utente di origine in SQL Server. L'origine dati esterna fa riferimento alle credenziali con ambito database di s3_dc
. Per altre informazioni, vedere CREATE EXTERNAL DATA SOURCE.
CREATE EXTERNAL DATA SOURCE s3_ds
WITH
( LOCATION = 's3://<ip_address>:<port>/'
, CREDENTIAL = s3_dc
);
GO
Verificare la nuova origine dati esterna con sys.external_data_sources.
SELECT * FROM sys.external_data_sources;
Alcuni sistemi di archiviazione compatibili con S3, ad esempio Amazon Web Services, usano gli URL di stile virtual_hosted
per implementare la struttura di cartelle nel bucket S3. Aggiungere CONNECTION_OPTIONS
seguente per consentire la creazione di tabelle esterne che puntano ai percorsi delle cartelle nel bucket S3, ad esempio CONNECTION_OPTIONS = '{"s3":{"url_style":"virtual_hosted"}}'
.
Senza questa impostazione CONNECTION_OPTIONS
, quando si eseguono query su tabelle esterne che puntano a una cartella, è possibile osservare l'errore seguente:
Msg 13807, Level 16, State 1, Line 23
Content of directory on path '/<folder_name>/' cannot be listed.
:
.s3://<hostname>/<objectkey>
non può superare i 259 caratteri. s3://
conta a fronte di questo limite, quindi la lunghezza del percorso non può superare 259-5 = 254 caratteri.Le risorse di archiviazione oggetti compatibili con S3 hanno la possibilità di assegnare credenziali temporanee usando il servizio token di sicurezza (STS). Tali credenziali sono a breve termine e vengono generate in modo dinamico.
L'autorizzazione pass-through si basa su Active Directory Federation Service (ADFS) che funge da provider di identità OpenID Connect (OIDC); spetta ad ADFS comunicare con il servizio token di sicurezza delle risorse di storage degli oggetti compatibile con S3, richiedere il servizio token di sicurezza e restituirlo a SQL Server.
TLS deve essere configurato mediante certificati tra SQL Server e il server host compatibile con S3. Si presuppone che tutte le connessioni vengano trasmesse in modo sicuro tramite HTTPS, non HTTP. L'endpoint verrà convalidato da un certificato installato nell'host del sistema operativo di SQL Server. Sono supportati i certificati pubblici o autofirmati.
Creare una credenziale con ambito database che verrà usata per passare l'identità alle risorse di archiviazione di oggetti compatibili con S3. Per ulteriori informazioni, consultare CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Nell'esempio seguente:
CREATE DATABASE SCOPED CREDENTIAL CredName
WITH IDENTITY = 'User Identity'
Creare un'origine dati esterna per accedere alle risorse di archiviazione oggetti compatibili con S3. Usare CONNECTION_OPTIONS
, come formato JSON, per informare le informazioni necessarie sia per ADFS che per il servizio token di sicurezza. Per altre informazioni, vedere CREATE EXTERNAL DATA SOURCE. Nell'esempio seguente:
CREATE EXTERNAL DATA SOURCE EdsName
WITH
{
LOCATION = 's3://<hostname>:<port>/<bucket_name>'
, CREDENTIAL = <CredName>
[ , CONNECTION_OPTIONS = ' {
[ , "authorization": {
"adfs": {
"endpoint": "http[s]://hostname:port/servicepath",
"relying_party": "SQL Server Relying Party Identifier"
},
"sts": {
"endpoint": "http[s]://hostname:port/stspath",
"role_arn": "Role Arn"
[ , "role_session_name": "AD user login" ] -- default value if not provided
[ , "duration_seconds": 3600 ] -- default value if not provided
[ , "version": "2011-06-15" ] -- default value if not provided
[ , "request_parameters": "In request query string format" ]
}
} ]
[ , "s3": {
"url_style": "Path"
} ]
}' ]
}
ADFS
specificano l'endpoint di trasporto Windows e l'identificatore relying_party
di SQL Server in ADFS.STS
specificano l'endpoint e i parametri del servizio token di sicurezza delle risorse di archiviazione oggetti compatibili con S3 per la richiesta AssumeRoleWithWebIdentity
. AssumeRoleWithWebIdentity
è il metodo utilizzato per acquisire le credenziali di sicurezza temporanee usate per l'autenticazione. Per l'elenco completo dei parametri, inclusi quelli facoltativi e le informazioni sui valori predefiniti, vedere Informazioni di riferimento API STS.Seguire la documentazione fornita dal provider di archiviazione compatibile con S3 per configurare il provider di identità OIDC esterno. Per configurare il provider di identità, sono in genere necessari i valori seguenti.
Per PolyBase in SQL Server in Linux, sono necessarie altre configurazioni.
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stessoFormazione
Modulo
Introduzione alla virtualizzazione dei dati di SQL Server 2022 - Training
Informazioni sulla virtualizzazione dei dati, su come usare Polybase per accedere a dati esterni ed eseguirvi query e sulle funzionalità avanzate di Polybase in SQL Server 2022.
Certificazione
Microsoft Certified: Azure Database Administrator Associate - Certifications
Amministrare un'infrastruttura di database SQL Server per database relazionali, ibridi, locali e cloud con le offerte di database relazionali Microsoft PaaS.
Documentazione
Accedere ai dati esterni: SQL Server - PolyBase - SQL Server
Informazioni su come usare PolyBase in un'istanza di SQL Server per eseguire query sui dati esterni in un'altra istanza di SQL Server. Creare tabelle esterne per fare riferimento ai dati esterni.
Virtualizzare un file Parquet con PolyBase - SQL Server
SQL Server può virtualizzare i dati da file parquet nell'archiviazione oggetti compatibile con S3 servendosi di PolyBase.
Virtualizzare il file CSV con PolyBase - SQL Server
Virtualizzare un file CSV con PolyBase a partire da SQL Server 2022.