Каков рекомендуемый способ шифрования в 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;

Я надеюсь, что это поможет вам.

Другие вопросы по тегам