TDE: Оператор CREATE TABLE
Для создания зашифрованной новой таблицы с помощью оператора CREATE TABLE используйте в его описании опцию ENCRYPT WITH. Его обновленный синтаксис теперь выглядит следующим образом:
CREATE TABLE [ owner_name.]table_name
( { column_definition | table_constraint }, ...)
[ AREA area_name ]
[ ENCRYPT WITH cipher ]
[ BUFFER_POOL { PRIMARY | ALTERNATE } ]
[ progress_table_attribute_keyword value ]
;
CREATE TABLE [ owner_name.]table_name
[ (column_name [ NOT NULL ] , ... ) ]
[ AREA area_name ]
[ ENCRYPT WITH cipher ]
BUFFER_POOL { PRIMARY | ALTERNATE } ]
AS query_expression
;
Информацию об используемых шифрах (поле cipher) смотрите в Таблице 3: Шифры для объектов.
Следующий пример демонстрирует создание таблицы, зашифрованной с помощью шифра AES_CBC_192:
Напомню, для добавления таблицы средствами SQL пользователь должен иметь привилегии SQL администратора.
Реализовать добавление указанной таблицы можно следующим образом:
- Проверьте, имеете ли вы права SQL-администратора.
Для этого запустите SQL Explorer как показано в примере:
$ sqlexp -db bank -S 60900 -user valeriy -password HHvaleriy
OpenEdge Release 10.2B1B as of Thu Jul 30 19:00:21 EDT 2009
Connecting user "valeriy" to URL
"jdbc:datadirect:openedge://localhost:60900;databaseName=bank"...
SQLExplorer>
Введите следующий SQL запрос: SQLExplorer>select * from sysprogress.sysdbauth;
GRANTEE DBA_ACC RES_ACC
-------------------------- ------- -------
SYSPROGRESS y y
valeriy y y
Как видим, пользователь valeriy имеет необходимые права.
Если же ваш логин не обнаружен в этом списке, то чтобы узнать, как получить эти права,
обратитесь к статье из Progress Knowledge Base (ProKB) «KB-20143: Basic Guide to Defining Progress SQL-92 Database Permissions & Security».
- Сохраните следующий SQL-запрос в файл с именем cr_tab.sql:
CREATE TABLE PUB.enctab1 (encid int, encdes int, encdt varchar(25))
AREA "TestArea2"
ENCRYPT WITH 'AES_CBC_192';
COMMIT;
Не забудьте об операторе COMMIT, иначе изменения не будут сохранены.
- Выполните этот SQL-запрос следующей командой:
$ sqlexp -db bank -S 60900 -user valeriy -password 123
-infile cr_tab.sql
- Любым удобным для вас способом проверьте, была ли создана таблица (например, с помощью оператора SELECT в SQL, или с помощью Data Dictionary).
- Проверьте состояние шифрования созданной таблицы с помощью той же команды EPOLICY SCAN:
$ proutil bank -C epolicy scan table ENCTAB1
OpenEdge Release 10.2B1B as of Thu Jul 30 19:00:21 EDT 2009
TABLE ENCTAB1/855 CURRENT AES_CBC_192 V:0 512 of 512 blocks encrypted
Опция ENCRYPT WITH создаст политику шифрования для новой таблицы в схеме безопасности. Шифрование таблицы начинается сразу, как только в ней появляются первые записи. Перед использованием ENCRYPT WITH в базе данных должен быть включен механизм шифрования, а саму таблицу необходимо разместить в области хранения с типом SAT-II.
С помощью оператора CREATE TABLE, совместно с выражением ENCRYPT WITH так же можно создать зашифрованное LOB-поле в таблице. Для этих целей используется оператор ALTER TABLE ADD COLUMN. Синтаксис для создания шифруемого LOB-поля следующий:
|