Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Stabilire un ambiente di esecuzione controllato, gestire i dati in uscita e applicare privilegi minimi, abilitando l'accesso sicuro ai segreti.
Endpoint privato gestito (MPE)
Scenario: si è un data engineer che lavora con dati sensibili in Fabric Spark. Il team di sicurezza deve eseguire tutti i codici in un ambiente isolato di rete per una maggiore sicurezza.
Abilitare la rete virtuale gestita.Enable Managed Virtual Network (VNets). Per abilitare le reti virtuali gestite, vedere la documentazione pubblica. Microsoft Fabric crea e gestisce reti virtuali gestite per ogni area di lavoro di Fabric. Forniscono l'isolamento di rete per i carichi di lavoro di Fabric Spark, vale a dire che Microsoft Fabric distribuisce i cluster di calcolo in una rete dedicata per area di lavoro, rimuovendoli dalla rete virtuale condivisa.
Nell'ambiente di produzione usare reti virtuali gestite per l'esecuzione sicura di Notebook Spark.
Quando si crea un endpoint privato gestito (MPE), viene creato a livello di area di lavoro per impostazione predefinita.
Quando si abilita il collegamento privato (PL) a livello di tenant, il sistema abilita le reti virtuali gestite per tutte le aree di lavoro nel tenant. Dopo aver abilitato l'impostazione PL, il sistema crea una rete virtuale gestita per l'area di lavoro quando si esegue il primo processo Spark (notebook o definizioni di processi Spark). Il sistema crea anche la rete virtuale quando si esegue un'operazione Lakehouse, ad esempio Load to Table o un'operazione di manutenzione tabella (Optimize o Vacuum).
Annotazioni
Quando si abilitano reti virtuali gestite, i pool di avvio diventano non disponibili perché vengono eseguiti in una rete condivisa.
Protezione accesso in uscita dell'area di lavoro (WS OAP)
Scenario: sei preoccupato che qualcuno possa scrivere accidentalmente dati di produzione in destinazioni non autorizzate usando notebook Spark e vuoi controllare questo.
Abilitare la protezione degli accessi in uscita per l'area di lavoro (WS OAP). In questo modo, la connettività Internet in uscita da Spark passa solo alle destinazioni approvate tramite endpoint privati gestiti.
- Blocco delle librerie pubbliche: blocca anche l'installazione di librerie pubbliche (da PyPi, Maven e così via). Pertanto, è necessario creare un pacchetto delle vostre librerie sotto forma di file JAR o Wheel e caricare librerie personalizzate nell'ambiente o nelle risorse e installarle utilizzando % pip install all'interno dei notebook. Un aspetto da notare è che se lo si aggiunge alle risorse e si esegue l'installazione in linea con %pip install, il tempo di pubblicazione dell'ambiente è ridotto. Ciò è utile per lo sviluppo rapido e il test. Per riutilizzare i pacchetti in vari notebook, si consiglia di distribuire nell'ambiente di lavoro. Un altro metodo è collegarsi al proprio repository privato. Per altre informazioni, vedere la documentazione relativa alla protezione dell'accesso in uscita dell'area di lavoro per i carichi di lavoro di ingegneria dei dati
Scenario: è necessario abilitare WS OAP negli ambienti di sviluppo?
È consigliabile non attivare WS OAP nelle aree di lavoro di sviluppo o inferiori perché influisce sul processo di sviluppo. Dopo aver testato le Definizioni dei Processi di Notebook o Spark (SJDs) con librerie pubbliche, testare lo stesso Notebook con librerie personalizzate. Dopo le verifiche corrette del codice, eseguire la distribuzione in ambienti più elevati e quindi attivare WS OAP.After proper code reviews, deploy to higher environments and then turn on WS OAP. Se si vuole proteggere anche l'ambiente di sviluppo, è possibile abilitare WS OAP, ma potrebbe ostacolare il processo di sviluppo. I pool di avvio non sono disponibili quando si abilita WS OAP.
Accesso ad Azure Key Vault (AKV) dal notebook
Scenario: sei un data engineer e vuoi connetterti a più origini dati usando credenziali protette da Spark Notebooks.
Archiviare le credenziali in modo sicuro in Azure Key Vault (AKV). Non mantenere un archivio delle chiavi singolo per archiviare tutti i segreti. Usare invece più Key Vault in base a progetti/domini, se possibile.
Accesso ad Azure Key Vault (AKV) dal notebook
Rete: È consigliabile proteggere AKV con regole del firewall per consentire l'accesso solo da reti note. È tuttavia possibile consentire gli indirizzi IP di Fabric Spark nelle regole del firewall. Per connettersi in modo sicuro agli AKV protetti da Notebook Spark di Fabric, è consigliabile creare un endpoint privato gestito in AKV. Un AKV può supportare solo fino a 64 endpoint privati (sottoscrizione di Azure e limiti del servizio, quote e vincoli).
Autenticazione: Il sistema esegue i notebook e gli SJD di Fabric Spark nel contesto dell'utente che invia i job/notebook. Per accedere all'AKV, l'utente che invia deve avere accesso sufficiente per recuperare il segreto ("Key Vault Secrets Officer"). Fare riferimento alle procedure consigliate per AKV: Concedere l'autorizzazione alle applicazioni per accedere a un Azure Key Vault usando il controllo degli accessi in base al ruolo di Azure (RBAC di Azure).
- È possibile usare notebookutils (precedentemente denominato mssparkutils) per accedere a AKV usando le credenziali dell'utente che esegue notebook/SJD:
notebookutils.credentials.getSecret('<AKV URL>', 'Secret Name')Nell'ambiente di produzione, non è consigliabile fornire agli utenti l'accesso agli Azure Key Vault (AKV). Usare invece gli account del servizio per accedere a Key Vault (KV). Invia i notebook/job usando l'account di servizio.
In alcuni casi, l'account del servizio che invia l'attività ha accesso per leggere i segreti da AKV.
In alcuni casi, questo account di servizio è solitamente un account DevOps che potrebbe non avere accesso alla lettura delle informazioni riservate da Azure Key Vault (AKV). In questi casi, il generatore di credenziali è utile per accedere all'AKV usando un nome principale del servizio (SPN) diverso.
Ecco il frammento di codice Scala di esempio:
val clientSecretCredential: ClientSecretCredential = new ClientSecretCredentialBuilder()
.clientId("<client id here>")
.clientSecret("<client secret here>")
.tenantId("<tenant id here>")
.build()
val secretClient: SecretClient = new SecretClientBuilder()
.vaultUrl("<vault url here>")
.credential(clientSecretCredential)
.buildClient()
val secretName = "<your value>"
val retrievedSecret = secretClient.getSecret(secretName)
println(s"Retrieved secret: ${retrievedSecret.getValue}")
Annotazioni
Non inserire segreti o password come hardcoded in testo semplice nel codice. Usa sempre un archivio sicuro (come Azure Key Vault) per archiviare e recuperare i tuoi segreti.