Fabric Spark-säkerhet

Upprätta en kontrollerad exekveringsmiljö, styra datautflöde och tillämpa principen om minsta möjliga åtkomst samtidigt som säker åtkomst till hemligheter möjliggörs.

Hanterad privat slutpunkt (MPE)

Scenario: Du är datatekniker och arbetar med känsliga data i Fabric Spark. Säkerhetsteamet har ett krav på att köra alla koder i en nätverksisolerad miljö för ökad säkerhet.
  • Aktivera hanterat virtuellt nätverk (VNets). Information om hur du aktiverar hanterade virtuella nätverk finns i offentlig dokumentation. Fabric skapar och hanterar hanterade virtuella nätverk (VNets) för varje Fabric-arbetsyta. De tillhandahåller nätverksisolering för Fabric Spark-arbetsbelastningar, vilket innebär att Fabric distribuerar beräkningsklustren i ett dedikerat nätverk per arbetsyta och tar bort dem från det delade virtuella nätverket.

  • I produktion, använd hanterade VNets för säker körning av Spark-notebooks.

  • När du skapar en hanterad privat slutpunkt (MPE) skapas den som standard på arbetsytenivå.

  • När du aktiverar Private Link (PL) på klientorganisationsnivå aktiverar systemet hanterade virtuella nätverk för alla arbetsytor i klientorganisationen. Efter att du aktiverat PL-inställningen skapar systemet ett hanterat virtuellt nätverk för arbetsytan när du kör det första Spark-jobbet (notebook- eller Spark-jobbdefinitioner). Systemet skapar också det virtuella nätverket när du utför en lakehouse-operation, såsom Load to Table eller en tabellunderhållsoperation (Optimize eller Vacuum).

Anmärkning

När du aktiverar hanterade virtuella nätverk blir startpooler otillgängliga eftersom de körs i ett delat nätverk.

Utgående åtkomstskydd för arbetsyta (WS OAP)

Scenario: Du är orolig för att någon av misstag kan skriva ut produktionsdata till obehöriga mål med hjälp av Spark-notebook-filer, och du vill kontrollera det.

Aktivera utgående åtkomstskydd för arbetsyta (WS OAP). Detta säkerställer att utgående Internetanslutning från Spark endast går till godkända mål via hanterade privata slutpunkter. 

  • Blockera offentliga bibliotek: Detta blockerar även installationen av offentliga bibliotek (från PyPi, Maven osv.). Därför måste du paketera dina bibliotek som JAR- eller Wheel-filer och ladda upp anpassade bibliotek till en miljö eller till resurser och installera med % pip install inuti Notebooks. En sak att tänka på är att om du lägger till det i resurser och installerar med inline %pip install, är miljöpubliceringstiden kortare. Detta är användbart för snabb utveckling och testning. Om du vill återanvända paketen i olika notebook-filer rekommenderar vi att du publicerar till miljön. En annan metod är att ansluta till din privata lagringsplats. Mer information finns i dokumentationen om utgående åtkomstskydd för arbetsyta för datateknik
Scenario: Ska du aktivera WS OAP i utvecklingsmiljöer?

Överväg att inte aktivera WS OAP i utveckling eller lägre arbetsytor eftersom det påverkar utvecklingsprocessen. När notebook- eller Spark-jobbdefinitionerna (SJD) har testats med offentliga bibliotek, testa samma notebook med egna bibliotek. Efter rätt kodgranskningar distribuerar du till högre miljöer och aktiverar sedan WS OAP. Om du vill skydda även utvecklingsmiljön kan du aktivera WS OAP, men det kan hindra utvecklingsprocessen. Startpooler är inte tillgängliga när du aktiverar WS OAP.

Åtkomst till Azure Key Vault (AKV) från Notebook

Scenario: Du är datatekniker och vill ansluta till flera datakällor med säkra autentiseringsuppgifter från Spark Notebooks.

Lagra autentiseringsuppgifterna på ett säkert sätt i Azure Key Vault (AKV). Behåll inte ett enda nyckelvalv för att lagra alla hemligheter. Använd i stället flera nyckelvalv baserat på projekt/domäner om möjligt.

Åtkomst till Azure Key Vault (AKV) från Notebook

  • Nätverk: Vi rekommenderar att du skyddar din AKV med brandväggsregler för att endast tillåta åtkomst från kända nätverk. Du tillåter dock Fabric Sparks IP-adresser i brandväggsreglerna. För att ansluta säkert till skyddade AKV:er från Fabric Spark Notebooks rekommenderar vi att du skapar en hanterad privat slutpunkt till AKV. En AKV kan endast stödja upp till 64 privata slutpunkter (Azure-prenumerations- och tjänstgränser, kvoter och begränsningar). 

  • Autentisering: Systemet kör Fabric Spark Notebooks och SJD:er i kontexten för den användare som skickar jobben/notebook-filerna. För att få åtkomst till AKV bör den skickande användaren ha tillräcklig åtkomst för att hämta hemligheten ("Key Vault Secrets Officer"). Se metodtips för AKV: Bevilja behörighet till program för åtkomst till ett Azure-nyckelvalv med hjälp av Azure RBAC.

    • Du kan använda notebookutils (tidigare kallat mssparkutils) för att komma åt AKV med autentiseringsuppgifterna för användaren som kör Notebook/SJD:

    notebookutils.credentials.getSecret('<AKV URL>', 'Secret Name')

  • I produktion rekommenderar vi inte att du ger användaren åtkomst till AKV:er i prod-miljön. Använd i stället tjänstkonton för att komma åt ditt Nyckelvalv (KV). Skicka notebook-filer/jobb med hjälp av tjänstkontot. 

  • I vissa fall har servicekontot som skickar jobbet åtkomst för att läsa hemligheter från AKV. 

  • I vissa fall är det här tjänstkontot vanligtvis ett DevOps-konto som kanske inte har åtkomst till läshemligheter från AKV. I sådana fall är autentiseringsverktyget användbart för att få åtkomst till AKV med hjälp av ett annat SPN (Service Principal Name).

Här är exempelkodfragmentet för Scala:

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}")

Anmärkning

Hårdkoda inte några hemligheter eller lösenord i oformaterad text i koden. Använd alltid ett säkert valv (som Azure Key Vault) för att lagra och hämta dina hemligheter.