Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Etabler et kontrollert utførelsesmiljø, styr utgående data og håndhev minst mulig privilegium samtidig som du aktiverer sikker hemmelig tilgang.
Administrert privat endepunkt (MPE)
Scenario: Du er en datatekniker som arbeider med sensitive data i Fabric Spark. Sikkerhetsteamet ditt har et krav om å kjøre alle kodene i et nettverksisolert miljø for forbedret sikkerhet.
Aktiver administrert virtuelt nettverk (VNets). Hvis du vil aktivere administrerte virtuelle nettverk, kan du se offentlig dokumentasjon. Microsoft Fabric oppretter og administrerer administrerte virtuelle nettverk (VNets) for hvert Fabric-arbeidsområde. De gir nettverksisolering for Fabric Spark-arbeidsbelastninger, noe som betyr at Microsoft Fabric distribuerer databehandlingsklyngene i et dedikert nettverk per arbeidsområde, og fjerner dem fra det delte virtuelle nettverket.
I produksjon bruker du administrerte virtuelle nettverk for sikker kjøring av Spark Notebooks.
Når du oppretter et administrert privat endepunkt (MPE), opprettes det som standard på arbeidsområdenivå.
Når du aktiverer Private Link (PL) på leiernivå, aktiverer systemet administrerte virtuelle nettverk for alle arbeidsområder i leieren. Når du har aktivert PL-innstillingen, oppretter systemet et administrert virtuelt nettverk for arbeidsområdet når du kjører den første Spark-jobben (notatblokk- eller Spark-jobbdefinisjoner). Systemet oppretter også det virtuelle nettverket når du utfører en Lakehouse-operasjon, for eksempel Last til bord eller en bordvedlikeholdsoperasjon (Optimaliser eller Vakuum).
Note
Når du aktiverer administrerte virtuelle nettverk, blir startutvalg utilgjengelige fordi de kjører i et delt nettverk.
Beskyttelse mot utgående tilgang til arbeidsområdet (WS OAP)
Scenario: Du er bekymret for at noen ved et uhell kan skrive ut produksjonsdata til uautoriserte mål ved hjelp av Spark-notatblokker, og du vil kontrollere det.
Aktiver beskyttelse mot utgående tilgang til arbeidsområdet (WS OAP). Dette sikrer at utgående Internett-tilkobling fra Spark bare går til godkjente mål via administrerte private endepunkter.
- Blokkering av offentlige biblioteker: Dette blokkerer også installasjonen av offentlige biblioteker (fra PyPi, Maven, etc.). Derfor må du pakke bibliotekene dine som JAR-er eller hjulfiler og laste opp egendefinerte biblioteker til miljøet eller til ressurser og installere med % pip-installasjon i notatblokkene. En ting å merke seg er at hvis du legger det til ressurser og installerer med innebygd %pip installerer, er miljøpubliseringstiden mindre. Dette er nyttig for rask utvikling og testing. Hvis du vil bruke pakkene på nytt på tvers av ulike notatblokker, anbefales det å publisere til miljøet. En annen metode er å koble til ditt private depot. Hvis du vil ha mer informasjon, kan du se dokumentasjonen for utgående tilgangsbeskyttelse for arbeidsområder for datatekniske arbeidsbelastninger
Scenario: Bør du aktivere WS OAP i utviklingsmiljøer?
Vurder å ikke aktivere WS OAP i utvikling eller lavere arbeidsområder fordi det påvirker utviklingsprosessen. Når notatblokken eller Spark-jobbdefinisjonene (SJD-er) er testet med offentlige biblioteker, tester du den samme notatblokken med egendefinerte biblioteker. Etter riktig kodegjennomgang distribuerer du til høyere miljøer og slår deretter på WS OAP. Hvis du vil beskytte til og med utviklingsmiljøet, kan du aktivere WS OAP, men det kan hindre utviklingsprosessen. Startutvalg er ikke tilgjengelige når du aktiverer WS OAP.
Få tilgang til Azure Key Vault (AKV) fra notatblokk
Scenario: Du er datatekniker og vil koble til flere datakilder ved hjelp av sikret legitimasjon fra Spark Notebooks.
Lagre legitimasjonen sikkert i Azure Key Vault (AKV). Ikke ha ett enkelt nøkkelhvelv for å lagre alle hemmeligheter. Bruk i stedet flere nøkkelhvelv basert på prosjekter/domener hvis mulig.
Få tilgang til Azure Key Vault (AKV) fra notatblokk
Nettverk: Vi anbefaler å beskytte AKV med brannmurregler for å tillate tilgang bare fra kjente nettverk. Du tillater imidlertid Fabric Sparks IP-adresser i brannmurreglene dine. Hvis du vil koble til beskyttede AKV-er på en sikker måte fra Fabric Spark-notatblokker, anbefaler vi at du oppretter et administrert privat endepunkt til AKV. Én AKV kan bare støtte opptil 64 private endepunkter (Azure-abonnement og tjenestegrenser, kvoter og begrensninger).
Godkjenning: Systemet kjører Fabric Spark-notatblokker og SJD-er i konteksten til brukeren som sender jobbene/notatblokkene. For å få tilgang til AKV-en må brukeren som sender inn, ha tilstrekkelig tilgang til å hente hemmeligheten ("Key Vault Secrets Officer"). Se anbefalte fremgangsmåter for AKV: Gi tillatelse til programmer for å få tilgang til et Azure-nøkkelhvelv ved hjelp av Azure RBAC.
- Du kan bruke notebookutils (tidligere kalt mssparkutils) for å få tilgang til AKV ved hjelp av legitimasjonen til brukeren som kjører Notebook/SJD:
notebookutils.credentials.getSecret('<AKV URL>', 'Secret Name')I produksjon anbefaler vi ikke å gi brukertilgang til AKV-er i prod-miljø. Bruk i stedet tjenestekontoer for å få tilgang til Key Vault (KV). Send inn notatblokkene/jobbene ved hjelp av tjenestekontoen.
I noen tilfeller har tjenestekontoen som sender jobben, tilgang til lesehemmeligheter fra AKV.
I noen tilfeller er denne tjenestekontoen vanligvis en DevOps-konto som kanskje ikke har tilgang til lesehemmeligheter fra AKV. I slike tilfeller er legitimasjonsverktøyet nyttig for å få tilgang til AKV-en ved hjelp av et annet tjenestehovednavn (SPN).
Her er eksempelet på Scala-kodesnutten:
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}")
Note
Ikke hardkode hemmeligheter eller passord i ren tekst i koden din. Bruk alltid et sikkert hvelv (for eksempel Azure Key Vault) til å lagre og hente hemmelighetene dine.