Dela via


Åtkomstkontroll för känsliga data i paket

gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

För att skydda data i ett Integration Services-paket kan du ange en skyddsnivå som skyddar känsliga data eller alla data i paketet. Dessutom kan du kryptera dessa data med ett lösenord eller en användarnyckel, eller lita på att databasen krypterar data. Dessutom är den skyddsnivå som du använder för ett paket inte nödvändigtvis statisk, utan ändras under hela paketets livscykel. Du anger ofta en skyddsnivå under utvecklingen och en annan så snart du distribuerar paketet.

Anmärkning

Förutom de skyddsnivåer som beskrivs i det här avsnittet kan du använda fasta roller på databasnivå för att skydda paket som sparas på Integration Services-servern.

Definition av känslig information

I ett Integration Services-paket definieras följande information som känslig:

  • Lösenordsdelen i en anslutningssträng. Men om du väljer ett alternativ som krypterar allt betraktas hela anslutningssträngen som känslig.

  • De uppgiftsgenererade XML-noder som är taggade som känsliga. Taggningen av XML-noder styrs av Integration Services och kan inte ändras av användare.

  • Alla variabler som är markerade som känsliga. Märkningen av variabler styrs av Integration Services.

Om Integration Services anser att en egenskap är känslig beror på om utvecklaren av Integration Services-komponenten, till exempel en anslutningshanterare eller uppgift, har angett egenskapen som känslig. Användare kan inte lägga till egenskaper i eller ta bort egenskaper från listan över egenskaper som anses vara känsliga.

Kryptering

Kryptering, som används av paketskyddsnivåer, utförs med hjälp av Microsoft Data Protection API (DPAPI), som är en del av kryptografi-API:et (CryptoAPI).

Paketskyddsnivåer som krypterar paket med hjälp av lösenord kräver att du även anger ett lösenord. Om du ändrar skyddsnivån från en nivå som inte använder ett lösenord till en som gör det uppmanas du att ange ett lösenord.

För de skyddsnivåer som använder ett lösenord använder Integration Services även AES-chifferalgoritmen med en nyckellängd på 256 bitar, som är tillgänglig i .NET Framework Class Library (FCL).

Anmärkning

Integration Services 2016 använder Triple DES-chifferalgoritm med en nyckellängd på 192 bitar.

Skyddsnivåer

I följande tabell beskrivs de skyddsnivåer som Integration Services tillhandahåller. Värdena i parenteser är värden från DTSProtectionLevel uppräkningen. Dessa värden visas i fönstret Egenskaper som du använder för att konfigurera egenskaperna för paketet när du arbetar med paket i SQL Server Data Tools (SSDT).

Skyddsnivå Beskrivning
Spara inte känsligt (DontSaveSensitive) Undertrycker värdena för känsliga egenskaper i paketet när paketet sparas. Den här skyddsnivån krypterar inte, utan förhindrar istället att egenskaper som är markerade som känsliga sparas med paketet och gör därför känsliga data otillgängliga för andra användare. Om en annan användare öppnar paketet ersätts känslig information med tomma värden och användaren måste ange känslig information.

När det används med dtutil-verktyget (dtutil.exe) motsvarar den här skyddsnivån värdet 0.
Kryptera alla med lösenord (EncryptAllWithPassword) Använder ett lösenord för att kryptera hela paketet. Paketet krypteras med ett lösenord som användaren anger när paketet skapas eller exporteras. Om du vill öppna paketet i SSIS Designer eller köra paketet med hjälp av kommandotolken dtexec måste användaren ange paketlösenordet. Utan lösenordet kan användaren inte komma åt eller köra paketet.

När det används med verktyget dtutil motsvarar den här skyddsnivån värdet 3.
Kryptera alla med användarnyckel (EncryptAllWithUserKey) Använder en nyckel som baseras på den aktuella användarprofilen för att kryptera hela paketet. Endast användaren som skapade eller exporterade paketet kan öppna paketet i SSIS Designer eller köra paketet med hjälp av kommandotolken dtexec .

När det används med verktyget dtutil motsvarar den här skyddsnivån värdet 4.

Obs! För skyddsnivåer som använder en användarnyckel använder Integration Services DPAPI-standarder. Mer information om DPAPI finns i MSDN-biblioteket på https://msdn.microsoft.com/library.
Kryptera känsligt med lösenord (EncryptSensitiveWithPassword) Använder ett lösenord för att endast kryptera värdena för känsliga egenskaper i paketet. DPAPI används för den här krypteringen. Känsliga data sparas som en del av paketet, men dessa data krypteras med hjälp av ett lösenord som den aktuella användaren anger när paketet skapas eller exporteras. Om du vill öppna paketet i SSIS Designer måste användaren ange paketlösenordet. Om lösenordet inte anges öppnas paketet utan känsliga data och den aktuella användaren måste ange nya värden för känsliga data. Om användaren försöker köra paketet utan att ange lösenordet misslyckas paketkörningen. Mer information om lösenord och körning av kommandoraden finns i dtexec-verktyget.

När det används med verktyget dtutil motsvarar den här skyddsnivån värdet 2.
Kryptera känslig med användarnyckel (EncryptSensitiveWithUserKey) Använder en nyckel som baseras på den aktuella användarprofilen för att endast kryptera värdena för känsliga egenskaper i paketet. Endast samma användare som använder samma profil kan läsa in paketet. Om en annan användare öppnar paketet ersätts känslig information med tomma värden och den aktuella användaren måste ange nya värden för känsliga data. Om användaren försöker köra paketet misslyckas paketkörningen. DPAPI används för den här krypteringen.

När det används med verktyget dtutil motsvarar den här skyddsnivån värdet 1.

Obs! För skyddsnivåer som använder en användarnyckel använder Integration Services DPAPI-standarder. Mer information om DPAPI finns i MSDN-biblioteket på https://msdn.microsoft.com/library.
Förlita dig på serverlagring för kryptering (ServerStorage) Skyddar hela paketet med hjälp av SQL Server-databasroller. Det här alternativet stöds när ett paket sparas i SQL Server msdb-databasen. Dessutom använder SSISDB-katalogen skyddsnivån ServerStorage

Det här alternativet stöds inte när ett paket sparas i filsystemet från SQL Server Data Tools (SSDT).

Skyddsnivåinställning och SSISDB-katalogen

SSISDB-katalogen använder skyddsnivån ServerStorage . När du distribuerar ett Integration Services-projekt till Integration Services-servern krypterar katalogen automatiskt paketdata och känsliga värden. Katalogen dekrypterar också automatiskt data när du hämtar dem.

Om du exporterar projektet (.ispac-filen) från Integration Services-servern till filsystemet ändrar systemet automatiskt skyddsnivån till EncryptSensitiveWithUserKey. Om du importerar projektet med hjälp av guiden Importera projekt i SQL Server Data Tools (SSDT) visar egenskapen ProtectionLevel i fönstret Egenskaper värdet EncryptSensitiveWithUserKey.

Inställning för skyddsnivå baserat på paketlivscykel

Du anger skyddsnivån för ett SQL Server Integration Services-paket när du först utvecklar det i SQL Server Data Tools (SSDT). Senare, när paketet distribueras, importeras eller exporteras från Integration Services i SQL Server Management Studio, eller kopieras från SQL Server Data Tools (SSDT) till SQL Server, SSIS Package Store eller filsystemet, kan du uppdatera paketskyddsnivån. Om du till exempel skapar och sparar paket på datorn med något av alternativen på användarnyckelns skyddsnivå, skulle du förmodligen vilja ändra skyddsnivån när du ger paketet till andra användare. annars kan de inte öppna paketet.

Vanligtvis ändrar du skyddsnivån enligt beskrivningen i följande steg:

  1. Under utvecklingen lämnar du paketskyddsnivån inställd på standardvärdet EncryptSensitiveWithUserKey. Den här inställningen hjälper till att säkerställa att endast utvecklaren ser känsliga värden i paketet. Du kan också överväga att använda EncryptAllWithUserKey eller DontSaveSensitive.

  2. När det är dags att distribuera paketen måste du ändra skyddsnivån till en som inte är beroende av utvecklarens användarnyckel. Därför måste du vanligtvis välja EncryptSensitiveWithPassword eller EncryptAllWithPassword. Kryptera paketen genom att tilldela ett tillfälligt starkt lösenord som även är känt för driftteamet i produktionsmiljön.

  3. När paketen har distribuerats till produktionsmiljön kan driftteamet kryptera om de distribuerade paketen genom att tilldela ett starkt lösenord som bara är känt för dem. Eller så kan de kryptera de distribuerade paketen genom att välja EncryptSensitiveWithUserKey eller EncryptAllWithUserKey och använda de lokala autentiseringsuppgifterna för det konto som ska köra paketen.

Ange eller ändra skyddsnivån för paket

Om du vill styra åtkomsten till innehållet i paket och till de känsliga värden som de innehåller, till exempel lösenord, anger du värdet för egenskapen ProtectionLevel . Paketen i ett projekt måste ha samma skyddsnivå som projektet för att kunna skapa projektet. Om du ändrar egenskapsinställningen ProtectionLevel i projektet måste du uppdatera egenskapsinställningen för paketen manuellt.

En översikt över säkerhetsfunktioner i Integration Services finns i Säkerhetsöversikt (Integration Services).

Procedurerna i det här avsnittet beskriver hur du använder antingen SQL Server Data Tools (SSDT) eller kommandotolken dtutil för att ändra egenskapen ProtectionLevel .

Anmärkning

Förutom procedurerna i det här avsnittet kan du vanligtvis ange eller ändra egenskapen ProtectionLevel för ett paket när du importerar eller exporterar paketet. Du kan också ändra egenskapen ProtectionLevel för ett paket när du använder guiden Importera och exportera SQL Server för att spara ett paket.

Ange eller ändra skyddsnivån för ett paket i SQL Server Data Tools

  1. Granska de tillgängliga värdena för egenskapen ProtectionLevel i avsnittet Skyddsnivåer och fastställa lämpligt värde för ditt paket.

  2. I SQL Server Data Tools (SSDT) öppnar du projektet Integration Services som innehåller paketet.

  3. Öppna paketet i SSIS-designern.

  4. Om fönstret Egenskaper inte visar paketets egenskaper klickar du på designytan.

  5. I fönstret Egenskaper i gruppen Säkerhet väljer du lämpligt värde för egenskapen ProtectionLevel .

    Om du väljer en skyddsnivå som kräver ett lösenord anger du lösenordet som värde för egenskapen PackagePassword .

  6. Arkiv-menyn väljer du Spara markerade objekt för att spara det ändrade paketet.

Ange eller ändra skyddsnivån för paket i kommandotolken

  1. Granska de tillgängliga värdena för egenskapen ProtectionLevel i avsnittet Skyddsnivåer och fastställa lämpligt värde för ditt paket.

  2. Granska mappningarna för alternativet Kryptera i avsnittet dtutil Utility och fastställa lämpligt heltal som ska användas som värde för den valda egenskapen ProtectionLevel .

  3. Öppna ett kommandotolksfönster.

  4. I kommandotolken navigerar du till mappen som innehåller paketet eller paketen som du vill ange egenskapen ProtectionLevel för.

    Syntaxexemplen som visas i följande steg förutsätter att den här mappen är den aktuella mappen.

  5. Ange eller ändra skyddsnivån för paketet eller paketen med hjälp av ett kommando som liknar något av följande exempel:

    • Följande kommando anger egenskapen ProtectionLevel för ett enskilt paket i filsystemet till nivå 2, "Kryptera känsligt med lösenord", med lösenordet "strongpassword":

      dtutil.exe /file "C:\Package.dtsx" /encrypt file;"C:\Package.dtsx";2;strongpassword

    • Följande kommando anger egenskapen ProtectionLevel för alla paket i en viss mapp i filsystemet till nivå 2, "Kryptera känsligt med lösenord", med lösenordet "strongpassword":

      for %f in (*.dtsx) do dtutil.exe /file %f /encrypt file;%f;2;strongpassword

      Om du använder ett liknande kommando i en batchfil anger du filplatshållaren "%f", som "%%f" i batchfilen.

Dialogrutan Paketprojektskyddsnivå

Använd dialogrutan Paketskyddsnivå för att uppdatera skyddsnivån för ett paket. Skyddsnivån avgör skyddsmetoden, lösenordet eller användarnyckeln och paketskyddets omfattning. Skydd kan endast omfatta alla data eller känsliga data.

För att förstå kraven och alternativen för paketsäkerhet kan det vara användbart att se Säkerhetsöversikt (Integration Services).

Alternativ

Paketskyddsnivå
Välj en skyddsnivå i listan.

Lösenord
Om du använder Kryptera känsliga data med lösenord eller Kryptera alla data med lösenordsskyddsnivå skriver du ett lösenord.

Skriv om lösenord
Skriv lösenordet igen.

Dialogrutan Paketlösenord

Använd dialogrutan Paketlösenord för att ange paketlösenordet för ett paket som är krypterat med ett lösenord. Du måste ange ett lösenord om paketet använder Kryptera känsligt med lösenord eller Kryptera alla med lösenordsskyddsnivå .

Alternativ

Lösenord
Ange lösenordet.

Se även

Integration Services-paket (SSIS)
Säkerhetsöversikt (Integration Services)
dtutil-verktyg