SQL> alter table customers modify (credit_card encrypt);
В ходе выполнения транзакции по зашифровыванию поддерживается последовательное чтение данных. Транзакции DML (вставить, обновить, удалить), выполняемые в течение транзакции зашифровывания, будут запрашивать 'изменения online '.Создавать новую таблицу с зашифрованными колонками просто. Например, с помощью стандартного алгоритма шифрования AES192.
SQL> create table billing_information (
first_name varchar2(40)
,last_name varchar2(40)
,card_number varchar2(19) encrypt using 'AES256');
Transparent Data Encryption поддерживает работу с индексами, минимизируя дополнительный поиск в зашифрованном столбце.
SQL> create index cust_idx on customers (credit_card);
Когда столбец с индексами готов к зашифровыванию, сначала рекомендуется удалить существующие индексы, зашифровать столбец, а затем заново создать индексы.
Смена ключа таблицы/столбца
При выполнении команды "alter table” ключ таблицы или столбца, размер ключа и алгоритм могут быть независимо изменены:
SQL> ALTER TABLE employee REKEY;
SQL> ALTER TABLE employee REKEY USING 'AES256';
SQL> ALTER TABLE employee ENCRYPT USING 'AES128';
Изменение ключа таблицы или столбца приведет к повторению шифрования данных в таблице.
Практические рекомендации по проведению начального шифрования данных
За время существования таблицы, ее данные могут фрагментироваться, расположиться в ином порядке, разделяться по категориям, увеличиваться в количестве и перемещаться внутри табличного пространства; это может привести к возникновению неиспользуемых блоков со старыми, недоступными копиями данных внутри файла базы данных. Когда шифруется существующий столбец, шифруется только его самая последняя "действующая" копия, при этом могут оставаться данные в незашифрованном виде в «старых» копиях данных столбца. Для минимизации риска оставить конфиденциальные данные в незашифрованном виде при шифровании Oracle рекомендует создавать новое табличное пространство, перемещать таблицы приложений в него, и удалять старое табличное пространство.
1. Подготовьте полную резервную копию вашей базы данных.
2. Создайте новое табличное пространство, точно определяющее новый массив данных.
3. Зашифруйте столбцы с конфиденциальными данными в исходной таблице.
4. Повторите шаг 3 для всех таблиц, содержащих конфиденциальные данные.
5. Переместите таблицы из исходного табличного пространства в новое табличное пространство.
6. Удалите исходное табличное пространство. Внимание: не используйте опцию '... and datafile' вместе с командой 'drop tablespace' , применяйте утилиту 'shred' или другие зависящие от платформы утилиты для безопасного удаления содержания старых файлов данных в операционной системе. Использование команд операционной системы, таких как 'shred' , уменьшает вероятность обнаружить побочные копии файлов баз данных, сгенерированные либо операционной системой, либо программным обеспечением хранения данных.