Condividi tramite


Come configurare il controllo di accesso per l'area di lavoro di Azure Synapse

Questo articolo illustra la procedura per il controllo di accesso a un'area di lavoro di Microsoft Azure Synapse. A tale scopo serve una combinazione di ruoli di Azure, ruoli di Azure Synapse, autorizzazioni SQL e autorizzazioni Git.

Grazie a questa guida, sarà possibile configurare un'area di lavoro e un sistema di controllo di accesso di base. Queste informazioni possono essere utilizzate in molti tipi di progetti Synapse. Inoltre, vengono illustrate le opzioni avanzate per un controllo con granularità più fine, se fosse necessario.

Il controllo di accesso di Synapse può essere semplificato allineando ruoli e persone dell'organizzazione con i gruppi di sicurezza. In questo modo è possibile gestire l'accesso ai gruppi di sicurezza, semplicemente aggiungendo e rimuovendo gli utenti.

Prima di iniziare questa procedura dettagliata, leggere la Panoramica del controllo di accesso di Azure Synapse per acquisire familiarità con i meccanismi di controllo di accesso usati da Synapse Analytics.

Meccanismi di controllo di accesso

Nota

Questa guida fornisce indicazioni per creare gruppi di sicurezza. Quando si assegnano ruoli a questi gruppi di sicurezza, è sufficiente gestire le appartenenze all'interno di tali gruppi per controllare l'accesso alle aree di lavoro.

Per proteggere un'area di lavoro Synapse, è necessario configurare i seguenti elementi:

  • Gruppi di sicurezza per raggruppare gli utenti con requisiti di accesso simili.
  • Ruoli di Azure per controllare chi può creare e gestire pool SQL, pool di Apache Spark e runtime di integrazione e accedere all'archiviazione ADLS Gen2.
  • Ruoli di Synapse per controllare l'accesso agli artefatti di codice pubblicati, all'uso delle risorse di calcolo di Apache Spark e ai runtime di integrazione.
  • Autorizzazioni di SQL per controllare l'accesso amministrativo e del piano dati ai pool SQL.
  • Autorizzazioni Git, per controllare chi può accedere agli artefatti di codice nel controllo del codice sorgente, se si configura il supporto Git per le aree di lavoro.

Passaggi per proteggere un'area di lavoro Synapse

Per semplificare le istruzioni, nella documentazione vengono usati nomi standard. Sostituirli con i nomi desiderati.

Impostazione Nome standard Descrizione
Area di lavoro Synapse workspace1 Il nome che verrà assegnato all'area di lavoro di Azure Synapse.
Account ADLSGEN2 storage1 L'account ADLS da usare con l'area di lavoro.
Contenitore container1 Il contenitore in storage1 che verrà usato nell'area di lavoro per impostazione predefinita.
Tenant Microsoft Entra ID contoso Nome del tenant Microsoft Entra ID.
Entità servizio SERVICEPRINCIPAL Un'entità servizio nel tenant di Microsoft Entra ID.

Passaggio 1: configurare i gruppi di sicurezza

Suggerimento

È consigliabile usare opzioni granulari per controllare l'accesso all'area di lavoro, concedendo agli sviluppatori l'accesso alle singole risorse anziché a un'intera area. Altre informazioni sul controllo degli accessi in base al ruolo di Synapse

Creare i gruppi di sicurezza seguenti per l'area di lavoro:

  • workspace1_SynapseAdministrators, per gli utenti che necessitano di un controllo completo su un'area di lavoro. Aggiungere se stessi a questo gruppo di sicurezza, almeno inizialmente.
  • workspace1_SynapseContributors, per gli sviluppatori che hanno l'esigenza di sviluppare, eseguire il debug e pubblicare codice in un servizio.
  • workspace1_SynapseComputeOperators, per gli utenti che devono gestire e monitorare i pool di Apache Spark e i runtime di integrazione.
  • workspace1_SynapseCredentialUsers, per gli utenti che devono eseguire il debug e le pipeline di orchestrazione usando le credenziali MSI dell'area di lavoro (identità del servizio gestito), e annullare le esecuzioni della pipeline.

A breve, sarà possibile assegnare i ruoli di Synapse a questi gruppi nell'ambito dell'area di lavoro.

Creare anche questo gruppo di sicurezza:

  • workspace1_SQLAdmins, gruppo per gli utenti che necessitano dell'autorità di amministratore di SQL Active Directory all'interno dei pool SQL dell'area di lavoro.

Gruppo workspace1_SQLAdmins per configurare le autorizzazioni SQL quando si creano pool SQL.

Questi cinque gruppi sono sufficienti per una configurazione di base. Successivamente, è possibile aggiungere gruppi di sicurezza per gestire gli utenti che necessitano di un accesso più specializzato o per limitare l'accesso solo alle singole risorse.

Nota

Suggerimento

I singoli utenti di Synapse possono usare Microsoft Entra ID nel portale di Azure per visualizzare le appartenenze ai gruppi. In questo modo è possibile determinare quali ruoli sono stati concessi.

Passaggio 2: preparare l'account di archiviazione di ADLS Gen2

Le aree di lavoro di Synapse utilizzano contenitori di archiviazione predefiniti per:

  • L'archiviazione di file di dati di backup per le tabelle Spark
  • Eseguire i log per i processi Spark
  • La gestione delle librerie che si sceglie di installare

L'identificazione delle seguenti informazioni sull'archiviazione:

  • L'account ADLS Gen2 da utilizzare per l'area di lavoro. In questa documentazione è denominato storage1. storage1 è considerato l'account di archiviazione "primario" per l'area di lavoro.

  • Il contenitore in storage1 che verrà usato, per impostazione predefinita, nell'area di lavoro di Synapse. In questa documentazione è denominato container1.

  • Seleziona Controllo di accesso (IAM).

  • Selezionare Aggiungi>Aggiungi assegnazione di ruolo per aprire la pagina Aggiungi assegnazione di ruolo.

  • Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

    Impostazione Valore
    Ruolo Collaboratore dati BLOB di archiviazione
    Assegna accesso a SERVICEPRINCIPAL
    Membri workspace1_SynapseAdministrators, workspace1_SynapseContributors e workspace1_SynapseComputeOperators

    Pagina Aggiungi assegnazione di ruolo nel portale di Azure.

Passaggio 3: creare e configurare l'area di lavoro di Synapse

Nel portale di Azure, creare un'area di lavoro di Synapse:

  • Selezionare la propria sottoscrizione

  • Selezionare o creare un gruppo di risorse per il quale si ha un ruolo di Proprietariodi Azure.

  • Assegnare un nome all'area di lavoro workspace1

  • Scegliere storage1 per l'account di archiviazione

  • Scegliere container1 per il contenitore che viene utilizzato come "filesystem".

  • Aprire workspace1 in Synapse Studio

  • In Synapse Studio, passare a Gestisci>Controllo di accesso. In ambito area di lavoro, assegnare i ruoli di Synapse ai gruppi di sicurezza, come indicato di seguito:

    • Assegnare il ruolo di Amministratore di Synapse a workspace1_SynapseAdministrators
    • Assegnare il ruolo di Collaboratore di Synapse a workspace1_SynapseContributors
    • Assegnare il ruolo di Operatore di calcolo di Synapse a workspace1_SynapseComputeOperators

Passaggio 4: concedere l'accesso MSI dell'area di lavoro al contenitore di archiviazione predefinito

Per eseguire pipeline e svolgere attività di sistema, Azure Synapse richiede l'identità del servizio gestito (MSI) per accedere a container1 nell'account ADLS Gen2 predefinito per l'area di lavoro. Per altre informazioni, vedere Identità gestita dell'area di lavoro di Azure Synapse.

  • Aprire il portale di Azure

  • Individuare l'account di archiviazione, storage1 e poi container1.

  • Seleziona Controllo di accesso (IAM).

  • Per aprire la pagina Aggiungi assegnazione di ruolo, selezionare Aggiungi>Aggiungi assegnazione di ruolo.

  • Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

    Impostazione Valore
    Ruolo Collaboratore dati BLOB di archiviazione
    Assegna accesso a MANAGEDIDENTITY
    Membri nome identità gestita

    Nota

    Il nome dell'identità gestita è anche il nome dell'area di lavoro.

    Pagina Aggiungi assegnazione di ruolo nel portale di Azure.

Passaggio 5: concedere agli amministratori di Synapse un ruolo di Collaboratore di Azure per l'area di lavoro

Per creare pool SQL, pool di Apache Spark e runtime di integrazione, gli utenti devono avere almeno il ruolo di Collaboratore di Azure per l'area di lavoro. Un ruolo di Collaboratore consente inoltre agli utenti di gestire le risorse, inclusi la sospensione e il ridimensionamento. Per utilizzare il portale di Azure o Synapse Studio per creare pool SQL, pool di Apache Spark e runtime di integrazione, è necessario avere un ruolo di Collaboratore a livello di gruppo di risorse.

  • Aprire il portale di Azure

  • Individuare l'area di lavoro, workspace1

  • Seleziona Controllo di accesso (IAM).

  • Per aprire la pagina Aggiungi assegnazione di ruolo, selezionare Aggiungi>Aggiungi assegnazione di ruolo.

  • Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

    Impostazione Valore
    Ruolo Collaboratore (elencato in "Ruoli di amministratore con privilegi")
    Assegna accesso a SERVICEPRINCIPAL
    Membri workspace1_SynapseAdministrators

    Pagina Aggiungi assegnazione di ruolo nel portale di Azure.

Passaggio 6: assegnare un ruolo di Amministratore SQL Active Directory

All'autore dell'area di lavoro viene assegnato automaticamente il ruolo di Amministratore di SQL Active Directory per l'area di lavoro. Questo ruolo può essere concesso solo a un singolo utente o a un gruppo. In questo passaggio si assegna l'amministratore di SQL Active Directory per l'area di lavoro al gruppo di sicurezza workspace1_SQLAdmins. In questo modo si concede al gruppo un accesso di amministratore con privilegi elevati a tutti i database e pool SQL nell'area di lavoro.

  • Aprire il portale di Azure
  • Passare a workspace1
  • In Impostazioni, selezionare Microsoft Entra ID
  • Selezionare Imposta amministratore, quindi scegliere workspace1_SQLAdmins

Nota

Il passaggio 6 è facoltativo. È possibile scegliere di concedere al workspace1_SQLAdmins gruppo un ruolo con privilegi inferiori. Per assegnare db_owner o altri ruoli SQL, è necessario eseguire script in ogni database SQL.

Passaggio 7: concedere l'accesso ai pool SQL

Per impostazione predefinita, all'amministratore di Synapse viene concesso anche il ruolo SQL db_owner per i pool SQL serverless nell'area di lavoro.

L'accesso ai pool SQL per altri utenti è controllato dalle autorizzazioni SQL. L'assegnazione delle autorizzazioni SQL richiede l'esecuzione di script SQL in ogni database dopo la creazione. Di seguito sono riportati alcuni esempi che richiedono l'esecuzione di questi script:

  1. Concedere agli utenti l'accesso al pool SQL serverless, 'predefinti' e ai relativi database.

  2. Concedere agli utenti l'accesso ai database del pool SQL dedicato. Gli script SQL di esempio sono riportati più avanti in questo articolo.

  3. Per concedere l'accesso a un database del pool SQL dedicato, gli script possono essere eseguiti dall'autore dell'area di lavoro o da qualsiasi membro del gruppo workspace1_SynapseAdministrators.

  4. Per concedere l'accesso al pool SQL serverless, gli script 'predefiniti', possono essere eseguiti da qualsiasi membro del gruppo workspace1_SQLAdmins o del gruppoworkspace1_SynapseAdministrators.

Suggerimento

È possibile concedere l'accesso a tutti i database SQL eseguendo i passaggi seguenti per ogni pool SQL. La sezione Configurare le autorizzazioni con ambito area di lavoro è un'eccezione alla regola e consente di assegnare un ruolo di amministratore di sistema a livello di area di lavoro.

Passaggio 7a: pool SQL serverless, predefinito

È possibile usare gli esempi di script presenti in questa sezione per concedere agli utenti l'autorizzazione per accedere a un singolo database o a tutti i database nel pool SQL serverless, Built-in.

Nota

Negli esempi di script sostituire l'alias con l'alias dell'utente o del gruppo al quale viene concesso l'accesso. Sostituire il dominio con il dominio aziendale in uso.

Configurare le autorizzazioni con ambito database

È possibile concedere agli utenti l'accesso a un singolo database SQL serverless eseguendo i passaggi descritti in questo esempio:

  1. Creare un account di accesso. Passare al contesto del database master.

    --In the master database
    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    
  2. Creare un utente nel database. Modificare il contesto nel database.

    -- In your database
    CREATE USER alias FROM LOGIN [alias@domain.com];
    
  3. Aggiungere l'utente come membro del ruolo specificato nel database (in questo caso, il ruolo db_owner).

    ALTER ROLE db_owner ADD member alias; -- Type USER name from step 2
    

Configurare le autorizzazioni con ambito area di lavoro

È possibile concedere l'accesso completo a tutti i pool SQL serverless nell'area di lavoro. Eseguire lo script riportato in questo esempio nel database master:

CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
ALTER SERVER ROLE sysadmin ADD MEMBER [alias@domain.com];

Passaggio 7b: configurare pool SQL dedicati

È possibile concedere l'accesso a un singolo database del pool SQL dedicato. Eseguire questi passaggi nell'editor di script SQL di Azure Synapse:

  1. Creare un utente nel database eseguendo i comandi riportati di seguito. Selezionare il database di destinazione nell'elenco a discesa Connetti a:

    --Create user in the database
    CREATE USER [<alias@domain.com>] FROM EXTERNAL PROVIDER;
    -- For Service Principals you would need just the display name and @domain.com is not required
    
  2. Concedere all'utente un ruolo per l'accesso al database:

    --Grant role to the user in the database
    EXEC sp_addrolemember 'db_owner', '<alias@domain.com>';
    

Importante

I ruoli del database db_datareader e db_datawriter possono fornire autorizzazioni di lettura/scrittura quando non si desidera concedere autorizzazioni di tipo db_owner. Tuttavia, l’autorizzazione db_owner è necessaria per consentire agli utenti di Spark di leggere e scrivere direttamente da Spark in/da un pool SQL.

È possibile eseguire query per confermare che i pool SQL serverless possono eseguire query sugli account di archiviazione, dopo aver creato gli utenti.

Passaggio 8: aggiungere utenti ai gruppi di sicurezza

La configurazione iniziale per il sistema di controllo di accesso è stata completata.

È ora possibile aggiungere e rimuovere utenti ai/dai gruppi di sicurezza configurati per gestire l'accesso. È possibile assegnare manualmente gli utenti ai ruoli di Azure Synapse, ma in questo modo si impostano le autorizzazioni in modo incongruente. In alternativa, aggiungere o rimuovere gli utenti ai/dai propri gruppi di sicurezza.

Passaggio 9: sicurezza di rete

Come passaggio finale, per proteggere l'area di lavoro si consiglia di proteggere l'accesso alla rete usando il firewall dell'area di lavoro.

Passaggio 10: completamento

L'area di lavoro è ora completamente configurata e protetta.

Supporto di scenari più avanzati

Questa guida è incentrata sulla configurazione di un sistema di controllo di accesso di base. È possibile supportare scenari più avanzati creando gruppi di sicurezza aggiuntivi e assegnando a questi gruppi ruoli più granulari in ambiti più specifici. Prendere in considerazione i casi seguenti:

Abilitare il supporto Git per l'area di lavoro per scenari di sviluppo più avanzati, inclusi CI/CD. In modalità Git, le autorizzazioni Git e il controllo degli accessi in base al ruolo di Synapse determineranno se un utente può eseguire il commit delle modifiche nel ramo di lavoro. La pubblicazione nel servizio avviene solo dal ramo di collaborazione. Considerare la creazione di un gruppo di sicurezza per gli sviluppatori che devono sviluppare ed eseguire il debug di aggiornamenti in un ramo di lavoro, ma non hanno la necessità di pubblicare le modifiche nel servizio Live.

Limitare l'accesso degli sviluppatori a risorse specifiche. Creare dei gruppi di sicurezza aggiuntivi con granularità più fine per gli sviluppatori che devono accedere solo a risorse specifiche. Assegnare a questi gruppi, ruoli di Azure Synapse appropriati, che abbiano come ambito pool di Spark specifici, runtime di integrazione o credenziali.

Limitare l'accesso degli operatori agli artefatti di codice. Creare gruppi di sicurezza per gli operatori che devono monitorare lo stato operativo delle risorse di calcolo di Synapse e visualizzare i log, ma che non hanno la necessità di accedere al codice o di pubblicare gli aggiornamenti nel servizio. Assegnare a questi gruppi il ruolo di Operatore di calcolo con ambito pool di Spark e runtime di integrazione specifici.

Disabilitare l'autenticazione locale. Consentendo solo l'autenticazione di Microsoft Entra, è possibile gestire centralmente l'accesso alle risorse di Azure Synapse, quali i pool SQL. L'autenticazione locale per tutte le risorse all'interno dell'area di lavoro, può essere disabilitata durante o dopo la creazione dell'area di lavoro. Per altre informazioni sull'autenticazione solo per Microsoft Entra, vedere Disabilitazione dell'autenticazione locale in Azure Synapse Analytics.