vim sqlnet.ora
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=/u01/app/oracle/oradata/orcl)))
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/app/oracle/oradata/orcl' IDENTIFIED BY oracle;
ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE '/u01/app/oracle/oradata/orcl' IDENTIFIED BY oracle;
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oracle;
ADMINISTER KEY MANAGEMENT SET KEY USING TAG 'tag1' IDENTIFIED BY oracle WITH BACKUP USING 'backup_id1';
CREATE TABLE tab4 (
first_name VARCHAR2(128),
last_name VARCHAR2(128),
empID NUMBER,
salary NUMBER(6) ENCRYPT);
CREATE TABLESPACE tbs2
DATAFILE '/u01/app/oracle/oradata/orcl/tbs2.dbf' SIZE 1M
ENCRYPTION USING 'AES256'
DEFAULT STORAGE (ENCRYPT);
select * from V$ENCRYPTION_WALLET;
商用版の場合、MySQL Enterprise Transparent Data Encryption (TDE)が使用可能
https://qiita.com/hmatsu47/items/476d446887244de17ae4
(5.7)
--有効化
vim /etc/my.cnf
innodb_file_per_table=1
early-plugin-load=keyring_file.so
keyring_file_data=/usr/local/mysql/mysql-keyring/keyring
mkdir -p /usr/local/mysql/mysql-keyring
chown -R mysql:mysql /usr/local/mysql
chmod 750 /usr/local/mysql/mysql-keyring
※キーリングファイルのおき場所は空ディレクトの必要あり
systemctl restart mysqld
--暗号化テーブルを作成する
CREATE DATABASE sample_db;
USE sample_db;
CREATE TABLE sample_tbl (id int(10) PRIMARY KEY AUTO_INCREMENT
, value VARCHAR(100))
ENGINE=innodb ENCRYPTION='Y';
create table enc1( col1 int);
INSERT INTO sample_tbl(value) values('hogehoge');
view -b /var/lib/mysql/sample_db/sample_tbl.ibd
--既存テーブルの暗号化
ALTER TABLE enc1 ENCRYPTION='Y';
--暗号化されたテーブルを復号
ALTER TABLE enc1 ENCRYPTION='N';
--鍵のローテーション
ALTER INSTANCE ROTATE INNODB MASTER KEY;
--ローテーションした鍵を、既存テーブルに適用(既存テーブルの暗号化と同じSQL)
ALTER TABLE sample_tbl ENCRYPTION='Y';
https://github.com/nec-postgres/tdeforpg/wiki/Manual(JA)
https://jpn.nec.com/tdeforpg/download/setup_card_Linux.pdf
https://www.slideshare.net/furandon_pig/tde-86720123
(9.6)
透過的暗号化機能を有効化するデータベース:test
--事前準備
1.透過的暗号化機能を有効化するデータベースの作成
create database test;
2.postgresユーザがlocalやhostでDB接続できるようにpostgresql.confやpg_hba.confの設定を行う
vim pg_hba.conf
host all all 127.0.0.1/32 md5
host all all 192.168.137.0/24 md5
local all all md5
host all all ::1/128 md5
3.セキュリティ管理ユーザを作成
create user user1 with password 'user1';
grant all on database test to user1;
--RPM パッケージのインストール
rpm -ivh tde_for_pg96-fe-1.2.1-0.el7.x86_64.rpm
cat /opt/nec/tdeforpg96-fe/INSTALL-NOTE.TXT
chown -R postgres:postgres /opt/nec
chmod -R 777 /opt/nec
--pgcryptoのインストール(対象データベースで実施)
\dx
CREATE EXTENSION pgcrypto;
--postgresql.conf の編集
ln -s /opt/nec/tdeforpg96-fe/SOURCES/data_encryption/96/data_encryption96.so.1.2.1.0 /usr/lib64/data_encryption.so
ln -s /opt/nec/tdeforpg96-fe/SOURCES/data_encryption/96/libpgcrypto96.so.1.2.1.0 /usr/lib64/libpgcrypto.so
vim postgresql.conf
shared_preload_libraries='/usr/lib64/data_encryption.so'
systemctl restart postgresql-9.6
--透過的暗号化機能の有効化
/opt/nec/tdeforpg96-fe/SOURCES/bin/cipher_setup.sh /usr/pgsql-9.6
1
5432
user1
user1
test
※ここで指定するユーザ以外でも暗号化可能
--暗号鍵の登録
/opt/nec/tdeforpg96-fe/SOURCES/bin/cipher_key_regist.sh /usr/pgsql-9.6
5432
user1
user1
test
himitu
aes
--暗号化テーブル作成
create table enc1(
col1 int primary key,
col2 encrypt_text
);
--ログ出力無効化
select cipher_key_disable_log();
--鍵を指定してセッション開始
select pgtde_begin_session('himitu');
--ログ出力有効化
select cipher_key_enable_log();
insert into enc1 values(1,'test');
select * from enc1;
--セッション終了
select pgtde_end_session();
insert into enc1 values(2,'test');
select * from enc1;
(2008)から
--1.データベースマスターキーの作成(masterデータベース)
use master
go
create master key
encryption by password = 'Aaa!1234'
go
--2.証明書オブジェクトの作成(masterデータベース)
create certificate master_cert
with subject = 'master_database_certificate'
,start_date='2012-8-21'
,expiry_date='2022-8-21'
go
--3.データベース暗号化キーの作成(ユーザーデータベース)
use test
go
create database encryption key
with algorithm = AES_256
encryption by server certificate master_cert
go
--4.データベース暗号化の有効化(ユーザーデータベース)
use master
go
alter database test
set encryption on
go