Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Aby załadować zaszyfrowane dane bez przeprowadzania kontroli metadanych na serwerze podczas operacji kopiowania zbiorczego, utwórz użytkownika przy użyciu opcji ALLOW_ENCRYPTED_VALUE_MODIFICATIONS. Ta opcja ma być używana przez starsze narzędzia lub przepływy pracy wyodrębnianiaTransform-Load (ETL) innych firm, które nie mogą korzystać z technologii Always Encrypted. Dzięki temu użytkownik może bezpiecznie przenosić zaszyfrowane dane z jednego zestawu tabel zawierających zaszyfrowane kolumny do innego zestawu tabel z zaszyfrowanymi kolumnami (w tej samej lub innej bazie danych).
Opcja ALLOW_ENCRYPTED_VALUE_MODIFICATIONS
Opcja ALLOW_ENCRYPTED_VALUE_MODIFICATIONS jest dostępna zarówno w CREATE USER, jak i w ALTER USER. Po ustawieniu wartości WŁĄCZONE (wartość domyślna to WYŁĄCZONE), ta opcja pomija sprawdzanie metadanych kryptograficznych na serwerze w operacjach kopiowania zbiorczego, co umożliwia użytkownikowi zbiorcze kopiowanie zaszyfrowanych danych między tabelami lub bazami danych bez odszyfrowywania danych.
Scenariusze migracji danych
W poniższej tabeli przedstawiono zalecane ustawienia odpowiednie dla kilku scenariuszy migracji.
Zbiorcze ładowanie zaszyfrowanych danych
Użyj następującego procesu, aby załadować zaszyfrowane dane.
- Ustaw opcję na WŁĄCZONĄ dla użytkownika w bazie danych, będącego celem operacji kopiowania zbiorczego. Na przykład:
ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;
Uruchom aplikację do kopiowania zbiorczego lub narzędzie łączące się jako ten użytkownik. (Jeśli aplikacja używa sterownika klienta z włączoną funkcją Always Encrypted, upewnij się, że parametry połączenia dla źródła danych nie zawierają ustawienia szyfrowania kolumny =włączone, aby upewnić się, że dane pobrane z zaszyfrowanych kolumn pozostają zaszyfrowane. Aby uzyskać więcej informacji, zobacz Develop Applications using Always Encrypted.)
Ustaw opcję ALLOW_ENCRYPTED_VALUE_MODIFICATIONS z powrotem na WYŁ. Na przykład:
ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;
Potencjalne uszkodzenie danych
Niewłaściwe użycie tej opcji może prowadzić do uszkodzenia danych. Opcja ALLOW_ENCRYPTED_VALUE_MODIFICATIONS umożliwia użytkownikowi wstawianie jakichkolwiek danych do zaszyfrowanych kolumn w bazie danych, w tym danych zaszyfrowanych przy użyciu różnych kluczy, niepoprawnie zaszyfrowanych lub niezaszyfrowanych w ogóle. Jeśli użytkownik przypadkowo kopiuje dane, które nie są poprawnie szyfrowane przy użyciu schematu szyfrowania (klucza szyfrowania kolumny, algorytmu, typu szyfrowania) dla kolumny docelowej, nie będzie można odszyfrować danych (dane zostaną uszkodzone). Ta opcja musi być używana ostrożnie, ponieważ może to prowadzić do uszkodzenia danych w bazie danych.
W poniższym scenariuszu pokazano, jak niewłaściwie importowane dane mogą prowadzić do uszkodzenia danych:
Opcja jest ustawiona na włączono dla użytkownika.
Użytkownik uruchamia aplikację, która łączy się z bazą danych. Aplikacja używa zbiorczych interfejsów API do wstawiania wartości zwykłego tekstu do zaszyfrowanych kolumn. Aplikacja oczekuje, że sterownik klienta z obsługą funkcji Always Encrypted szyfruje dane podczas wstawiania. Jednak aplikacja jest nieprawidłowo skonfigurowana, więc albo kończy się to użyciem sterownika, który nie obsługuje funkcji Always Encrypted, albo łańcuch połączenia nie zawiera ustawienia szyfrowania kolumny =włączone.
Aplikacja wysyła wartości zwykłego tekstu do serwera. Ponieważ kontrole metadanych kryptograficznych są wyłączone na serwerze dla użytkownika, serwer umożliwia wstawienie niepoprawnych danych (zwykłego tekstu zamiast poprawnie zaszyfrowanego tekstu szyfrowanego) do zaszyfrowanej kolumny.
Ta sama lub inna aplikacja łączy się z bazą danych przy użyciu sterownika z włączoną funkcją Always Encrypted oraz z ustawieniem szyfrowania kolumny =enabled w parametrach połączenia i pobiera dane. Aplikacja oczekuje, że dane zostaną odszyfrowane w sposób przejrzysty. Sterownik nie może jednak odszyfrować danych, ponieważ dane są niepoprawnym szyfrem.
Najlepsze rozwiązanie
Użyj wyznaczonych kont użytkowników dla długotrwałych obciążeń przy użyciu tej opcji.
W przypadku krótko działających aplikacji lub narzędzi do kopiowania zbiorczego, które muszą przenieść zaszyfrowane dane bez odszyfrowywania, ustaw opcję WŁĄCZONE bezpośrednio przed uruchomieniem aplikacji i ustaw ją z powrotem na WYŁ. natychmiast po uruchomieniu operacji.
Nie używaj tej opcji do tworzenia nowych aplikacji. Zamiast tego należy użyć sterownika klienta, który oferuje interfejs API do pomijania sprawdzania metadanych kryptograficznych dla jednej sesji, takiej jak opcja AllowEncryptedValueModifications w programie .NET Framework Data Provider for SQL Server — zobacz Kopiowanie zaszyfrowanych danych przy użyciu narzędzia SqlBulkCopy.
Następne kroki
- Kolumny zapytań przy użyciu funkcji Always Encrypted z programem SQL Server Management Studio
- Tworzenie aplikacji przy użyciu usługi Always Encrypted