Каков рекомендуемый способ шифрования в Oracle?
Мне нужна помощь экспертов Oracle/Security.
Я собираюсь сделать функции для шифрования / дешифрования в нашей базе данных Oracle. Я намерен использовать dbms_crypto
с AES256
, Я понимаю, что я должен сохранить файл ключа в O/S и прочитать его, используя utl_file
,
Это хорошая идея? Есть ли проблемы с этим подходом? Например, могут ли возникнуть проблемы с utl_file, если файл ключа читается одновременно 10 вызывающими функциями? Вместо этого рекомендуется что-нибудь еще?
Я уверен, что это очень распространенная вещь. Кто-нибудь знает, где я могу найти хороший образец, который делает это?
Поскольку это связано с безопасностью, я бы предпочел следовать некоторым стандартам, которым следуют другие.
1 ответ
Если у вас есть Oracle Advanced Security в Oracle Database Enterprise Edition, у вас уже есть прозрачное шифрование данных (TDE) данных, хранящихся в базе данных. Посмотрите:
http://download.oracle.com/docs/cd/B19306_01/network.102/b14268/asotrans.htm
Вы можете проверить также эту ссылку:
http://www.oracle-base.com/articles/10g/TransparentDataEncryption_10gR2.php
Подводя итоги последней страницы:
Настройка: Создание файла базы данных и пользователя.
CONN sys / пароль AS SYSDBA
CREATE TABLESPACE tde_test DATAFILE '/u01/oradata/DB10G/tde_test.dbf' РАЗМЕР 128К АВТОЗАПИСАТЬ НА СЛЕДУЮЩИЙ 64К;
Тест СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ, ОПРЕДЕЛЯЕМЫЙ ТЕСТОМ ПО УМОЛЧАНИЮ TABLESPACE tde_test; ALTER USER test QUOTA НЕОГРАНИЧЕНО НА tde_test; ГРАНТ ПОДКЛЮЧИТСЯ к тесту; GRANT CREATE TABLE для тестирования;
Зашифрованные данные: как создать зашифрованный столбец. Необходимо создать кошелек для хранения ключа шифрования. Добавьте следующую запись в файл sqlnet.ora на сервере и убедитесь, что указанный каталог был создан.
ENCRYPTION_WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = / u01 / app / oracle / admin / DB10G / encryption_wallet /)))
Вы должны создать и открыть кошелек:
CONN sys/password AS SYSDBA
ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "myPassword";
Затем вы можете создавать таблицы с зашифрованными столбцами или нет:
CREATE TABLE tde_test (
id NUMBER(10),
data VARCHAR2(50) ENCRYPT
)
TABLESPACE tde_test;
Я надеюсь, что это поможет вам.