暗号化

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