Каков рекомендуемый способ шифрования в Oracle? - PullRequest
5 голосов
/ 11 октября 2011

Мне нужна помощь экспертов Oracle / Security.

Я собираюсь создать функции для шифрования / дешифрования в нашей базе данных Oracle. Я намерен использовать dbms_crypto с AES256. Я понимаю, что должен сохранить файл ключа в O / S и прочитать его, используя utl_file.

Это хорошая идея? Есть ли проблемы с этим подходом? Например. Могут ли возникнуть проблемы с utl_file, если файл ключа читается одновременно 10 вызывающими функциями? Вместо этого рекомендуется что-нибудь еще?

Я уверен, что это очень распространенная вещь. Кто-нибудь знает, где я могу найти хороший образец, который делает это?

Поскольку это связано с безопасностью, я бы предпочел следовать некоторым стандартам, которым следуют другие.

1 Ответ

4 голосов
/ 11 октября 2011

Если у вас есть 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 / статьи / 10г / TransparentDataEncryption_10gR2.php

Подведение итогов последней страницы:

  • Настройка: создание файла базы данных и пользователя.

    CONN sys / пароль AS SYSDBA

    CREATE TABLESPACE tde_test DATAFILE '/u01/oradata/DB10G/tde_test.dbf' РАЗМЕР 128K AUTOEXTEND ON NEXT 64K;

    тест CREATE USER, идентифицированный тестом DEFAULT TABLESPACE tde_test; ALTER USER test QUOTA НЕОГРАНИЧЕНО НА tde_test; ГРАНТ ПОДКЛЮЧИТСЯ к тесту; GRANT CREATE TABLE для теста;

  • Зашифрованные данные: как создать зашифрованный столбец. Необходимо создать кошелек для хранения ключа шифрования. Добавьте следующую запись в файл sqlnet.ora на сервере и убедитесь, что указанный каталог был создан.

    ENCRYPTION_WALLET_LOCATION = (ИСТОЧНИК = (МЕТОД = ФАЙЛ) (METHOD_DATA = (DIRECTORY = / u01 / приложение / оракул / администратор / 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;

Надеюсь, это поможет вам.

...