Come configurare il controllo di accesso su oggetti sincronizzati nel pool SQL serverless

Tip

Microsoft Fabric Data Warehouse è un data warehouse relazionale su scala aziendale su una base data lake, con un'architettura futura, un'intelligenza artificiale predefinita e nuove funzionalità. Se non si ha familiarità con il data warehousing, iniziare con Fabric Data Warehouse. I carichi di lavoro esistenti del pool SQL dedicated possono eseguire l'aggiornamento a Fabric per accedere a nuove funzionalità tra data science, analisi in tempo reale e creazione di report.

In Azure Synapse Analytics, Spark database e tables vengono condivisi con il pool SQL serverless. I database Lake, Parquet e le tabelle supportate da CSV creati con Spark sono automaticamente disponibili nel pool SQL serverless. Questa funzionalità consente di usare il pool SQL serverless per esplorare ed eseguire query sui dati preparati usando i pool di Spark. Nel diagramma seguente è possibile visualizzare una panoramica generale dell'architettura per usare questa funzionalità. In primo luogo, Azure Synapse pipeline spostano i dati dall'archiviazione locale (o da un'altra) a Azure Data Lake Storage. Spark può ora arricchire i dati e creare database e tabelle sincronizzate con Synapse SQL serverless. In un secondo momento, l'utente può eseguire query ad hoc sopra i dati arricchiti o usarle per Power BI ad esempio.

Arricchire in Spark, usare il diagramma SQL.

Accesso amministratore completo (sysadmin)

Dopo la sincronizzazione di questi database e tabelle da Spark a pool SQL serverless, queste tabelle esterne nel pool SQL serverless possono essere usate per accedere agli stessi dati. Tuttavia, gli oggetti nel pool SQL serverless sono di sola lettura per garantire la coerenza con gli oggetti dei pool Spark. La limitazione permette solo agli utenti con ruoli di amministratore Synapse SQL o amministratore Synapse di accedere a questi oggetti nel pool SQL serverless. Se un utente non amministratore tenta di eseguire una query nel database o nella tabella sincronizzata, riceverà un errore simile al seguente: External table '<table>' is not accessible because content of directory cannot be listed. nonostante abbiano accesso ai dati sugli account di archiviazione sottostanti.

Poiché i database sincronizzati nel pool SQL serverless sono di sola lettura, non possono essere modificati. La creazione di un utente o l'assegnazione di altre autorizzazioni avrà esito negativo se si tenta di eseguire un tentativo. Per leggere i database sincronizzati, è necessario disporre delle autorizzazioni a livello di server con privilegi, ad esempio sysadmin. Questa limitazione è presente anche nelle tabelle esterne nel pool SQL serverless quando si usano tabelle di database Azure Collegamento a Synapse per Dataverse e lake.

Accesso non amministratore ai database sincronizzati

Un utente che deve leggere i dati e creare report in genere non ha accesso amministratore completo (sysadmin). Questo utente è in genere analista di dati che deve solo leggere e analizzare i dati usando le tabelle esistenti. Non è necessario creare nuovi oggetti.

Un utente con autorizzazioni minime deve essere in grado di:

  • Connettersi a un database replicato da Spark
  • Selezionare i dati tramite tabelle esterne e accedere ai dati ADLS sottostanti.

Dopo aver eseguito lo script di codice riportato di seguito, consente agli utenti non amministratori di disporre delle autorizzazioni a livello di server per connettersi a qualsiasi database. Consentirà inoltre agli utenti di visualizzare i dati di tutti gli oggetti a livello di schema, ad esempio tabelle o viste. La sicurezza dell'accesso ai dati può essere gestita nel livello di archiviazione.

-- Creating Azure AD login (same can be achieved for Azure AD app)
    CREATE LOGIN [login@contoso.com] FROM EXTERNAL PROVIDER;
    go;
    
    GRANT CONNECT ANY DATABASE to [login@contoso.com];
    GRANT SELECT ALL USER SECURABLES to [login@contoso.com];
    GO;

Annotazioni

Queste istruzioni devono essere eseguite nel database master, perché sono tutte autorizzazioni a livello di server.

Dopo aver creato un account di accesso e aver concesso le autorizzazioni, gli utenti possono eseguire query sopra le tabelle esterne sincronizzate. Questa mitigazione può essere applicata anche ai gruppi di sicurezza di Microsoft Entra.

Maggiore sicurezza sugli oggetti può essere gestita tramite schemi specifici e bloccare l'accesso a uno schema specifico. La soluzione alternativa richiede un DDL aggiuntivo. Per questo scenario, è possibile creare nuovi database, schemi e viste serverless che punteranno ai dati delle tabelle Spark in ADLS.

L'accesso ai dati nell'account di archiviazione può essere gestito tramite ACL o i ruoli di Proprietario/Reader/Collaboratore dei dati BLOB di archiviazione per utenti/gruppi Microsoft Entra. Per i Principali di Servizio (app Microsoft Entra), assicurati di utilizzare la configurazione ACL.

Annotazioni

  • Se si vuole impedire l'uso di OPENROWSET sui dati, è possibile utilizzare DENY ADMINISTER BULK OPERATIONS to [login@contoso.com];. Per ulteriori informazioni, visitare le autorizzazioni del server DENY.
  • Se si desidera impedire l'uso di schemi specifici, è possibile usare DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com];. Per ulteriori informazioni, vedere "DENY Schema Permissions".

Passaggi successivi

Per altre informazioni, vedere Autenticazione SQL.