...

*H#(~Js}0)MNzz$:p09-#4)(am IBM DB2 Encryption Offering IBM アナリティクス事業部 IBM Japan Systems Engineering Co.,Ltd.

by user

on
Category: Documents
132

views

Report

Comments

Transcript

*H#(~Js}0)MNzz$:p09-#4)(am IBM DB2 Encryption Offering IBM アナリティクス事業部 IBM Japan Systems Engineering Co.,Ltd.
IBM DB2 Encryption Offering
*H#(~Js}0)MNzz$:p09-#4)(am
IBM アナリティクス事業部
IBM Japan Systems Engineering Co.,Ltd.
本資料掲載事項は、ある特定の環境・使用状況においての正確性がIBMによって確認されていますが、すべての環境において同様の結果が得られる保証はあ
りません。これらの技術を自身の環境に適用する際には、自己の責任において十分な検証と確認を実施いただくことをお奨めいたします。
1
© 2015 IBM Corporation
内容
 暗号化の概要
– データ暗号化の要件
– 暗号化の鍵、アルゴリズム、およびセキュリティー強度
– 暗号鍵管理
 IBM DB2 Encryption Offering
– 製品の概要
– 暗号化されるデータベース・オブジェクト
 鍵管理
– GSKitの概要
– キーストアや鍵の作成、削除、レポート、エクスポートおよびインポート
 データベースの暗号化
 バックアップとリストア
 ユーティリティ、診断およびその他の考慮事項
2
© 2015 IBM Corporation
暗号化の概要
3
© 2015 IBM Corporation
データ保護はビジネス以上の優先課題―法規制への対応が必要
韓国:
台湾:
財務データプライバシー向けの
コンピューティングで
3つの法令
処理する個人データ保護法律
ロシア:
情報化&情報保護/
国際情報交換への参加
日本:
コンピューティングで処理する
個人データ保護のガイドライン
香港:
プライバシーに関する条例
シンガポール:
シンガポール法律の金融機関
ベトナム:
銀行法
フィリピン:
ニュージーランド:
銀行預金秘密法
プライバシー法
イギリス:
データ保護法
EU:
保護指令
ポーランド:
ポーランド憲法
ドイツ:
連邦データ保護法&州法
スイス:
連邦データ保護法
イスラエル:
プライバシー
保護法
南アフリカ共和国:
情報法へのアクセス促進
4
オーストラリア:
連邦政府のプライバシー改正法案
中国:
商業銀行法
カナダ:
個人情報保護&電子文書法
米国:
連邦、金融&医療業界の規則&州法
パキスタン:
銀行企業条例
インド:
インド法のSEC
ボード
メキシコ:
Eコマース法
ブラジル:
憲法、人身保護データ&
消費者保護&防衛
インドネシア:
銀行秘密規則8
アルゼンチン:
人身保護データ法
チリ:
個人データ保護法
コロンビア:
政治憲法―記事15
© 2015 IBM Corporation
データ暗号化の要件
 コンプライアンス要件の遵守
– PCI DSSなどの業界標準
– HIPAAなどの規制
– 企業標準
 オンライン・データへの脅威に対する保護
– DBMSによる正規のアクセスによらずにデータを盗み見ようとするユーザー
 オフライン・データへの脅威に対する保護
– 物理メディアの盗難/損失
 セキュリティーやコンプライアンスのコストの削減
– DB2以外のアドオン・ツールなどは不要
– DB2をバンドルして製品開発するISVにも利用しやすい
– DB2の稼動するところでは、どこででも利用可能
Runs wherever DB2 runs !
5
© 2015 IBM Corporation
暗号鍵
 暗号化アルゴリズムによる暗号化操作を制御するビット列
 鍵のビット数は、鍵では鍵長と呼ばれる
 鍵長が長ければ長いほど、暗号解読の難易度が上がる
 256ビットの鍵ならば、2256の異なる値をとり得る
鍵
プレーンテキスト
暗号化
6
鍵
暗号文
プレーンテキスト
暗号化
© 2015 IBM Corporation
対称暗号化アルゴリズム (共通鍵暗号)
 暗号化と復号に同じ鍵を用いる暗号アルゴリズム
 AESや3DESは、最も有名な対称暗号化アルゴリズム
暗号化
元のメッセージ
秘密鍵
暗号文
暗号文
秘密鍵
元のメッセージ
復号
7
© 2015 IBM Corporation
非対称暗号化アルゴリズム (公開鍵暗号)
 暗号化と復号で別の鍵を使用する暗号アルゴリズム
– 暗号鍵は、公開鍵と呼ばれる
– 復号鍵は、秘密鍵と呼ばれる
– 公開鍵と秘密鍵は異なるが、数学的に関連している
 合理的な時間内に、公開鍵から秘密鍵を求めることが事実上不可能であること
に依存
 RSA、ECCやDiffie-Helmanといった方式が有名
公開鍵
平文
暗号化
8
秘密鍵
暗号文
平文
復号
© 2015 IBM Corporation
暗号アルゴリズム毎の鍵長のセキュリティ強度対応表
9
対称鍵の長さ
(AES)
非対称鍵の長さ
(RSA)
非対称鍵の長さ
(ECC)
-
1024
160
-
2048
224
128
3072
256
192
7680
384
256
15360
512
© 2015 IBM Corporation
暗号鍵管理
 ライフサイクル間での鍵の安全管理について
– 作成、配布、有効期限、削除、バックアップ、リストアなど
– アクセス・コントロールや暗号化を含めた暗号鍵の保護
 2つの主要なアプローチ
– 公開鍵暗号化標準(Public-Key Cryptography Standards(PKCS)#12)
• 暗号鍵を格納するための、パスワード保護されたキーストアのフォーマットの定義(たとえば
、IBM Global Security Kit (GSKit) PKCS#12キーストア)
– 暗号鍵管理システム
• 企業で暗号鍵を一元管理するための専用サーバー(たとえば、IBM Security Key
Lifecycle Manager (ISKLM))
 一般的に、キーストア/企業鍵マネージャーは、マスターキーを保管
 DB2 10.5は現在、PKCS#12に準拠したローカルのキーストアをサポート
10
© 2015 IBM Corporation
暗号鍵のラッピング
 ほかの鍵で鍵を暗号化するプロセス
 暗号鍵を暗号化する鍵は通常マスターキーと呼ばれる
 マスターキーは通常、別のデータ・システムに格納
 2層暗号化を行う理由:
– セキュリティー:マスターキーが保護したいデータ・システムの外部に格納されている
ため、物理メディアの盗難に対応することができる
– パフォーマンス:鍵のローテーションの際に、実際のデータを再暗号化せず、マスター
キだけ変更することによって、鍵のローテーション要件に準拠することが容易となる
 DB2は業界標準の2層モデルを実行
– 実際のデータは、データキー(Data Encryption Key: DEK)で暗号化
– DEKはマスターキー(Master Key: MK)で暗号化
11
© 2015 IBM Corporation
マスターキーとデータキーの関係
キーストアは、ローカルで作成されて、強力なパスワードで保護される:
データキーの暗号化と復号のために必要なマス
ターキー(MK)を取得するために、キーストアは
DB2インスタンスで利用可能である必要がある
パスワード
キーストア
ラベル付きのマスターキー(MK)で、データキー(DEK)を暗号化:
キーラベル
Key
SECRET.DB2INST1.2015.02.01
キーストア
DB2は、ユーザーのためにマス
ターキーとラベルを自動的に生成
できる
ラベルをユーザーで指定したい場
合は、暗号鍵を生成する必要が
ある
データキー(DEK)はDB2によって内部的に生成されて、データベースを暗号化するために使用される:
キーラベル
DB2鍵
SECRET.DB2INST1.2015.02.01
DB2データキー(DEK)は、キーストア内の
マスターキー(MK)を使用して暗号化され、
データベース・イメージ内にストアされる
12
© 2015 IBM Corporation
IBM DB2 Encryption Offering
13
© 2015 IBM Corporation
IBM DB2 Encryption Offering
 クラウド、ソフトウェア又はアプライアンスで簡単にデプロイできる
 オンライン・データやバックアップを暗号化
 透過性
 DB2に組み込まれたセキュアおよび透過的な鍵管理
 標準への準拠
– NIST SP 800-131準拠暗号化アルゴリズム
– FIPS 140-2認定の暗号化を使用
 DB2が稼動するところでは、どこででも使用可能
– すべての64ビット・プラットフォーム:
• AIX、HP-UX、Linux、pLinux、zLinux、Solaris、Windows
– 利用可能なHW暗号化アクセラレータの活用(AES暗号化のみ)
• Intelをサポート
• Power8をサポート予定
14
© 2015 IBM Corporation
IBM DB2 Encryption Offeringのライセンス
 AUSI、PVUおよびソケット・ライセンスオプションが使用可能
ライセンス・メトリック
ESE
許可ユーザー・シングル・インストール
(AUSI)
プロセッサー・バリュー・ユニット(PVU)
ソケット(WSEのみ)
Limited Use Virtual System
ワークグループ
エクスプレス
222ドル
189ドル
72ドル
87ドル
54ドル
21ドル
6451ドル
AESE/AWSE/Express-C
同梱
2326ドル
 注記:
• 図の価格は米ドル
• Limited Use Virtual Systemは、物理サーバーで利用可能なリソースを、適切な仮
想化技術を使用して、パーティショニングすることにより作成された物理サーバーま
たは仮想サーバーを指す
• 開発やプロトタイピングのためのExpress-Cにも同梱
15
© 2015 IBM Corporation
暗号化されるデータベース・オブジェクト
 データベースにおけるすべてのユーザー・データの暗号化
–
–
–
–
–
–
–
すべての表スペース(システム定義とユーザー定義)
すべてのデータ・タイプ(LOB、XMLなど)
すべてのトランザクション・ログ(アクティブ、アーカイブ)
すべてのload copyデータ
すべてのload ステージングファイル
すべてのdumpファイル バイナリファイル(bin)
すべてのバックアップ・イメージ
 その他の暗号化されるオブジェクト
– メモリ内での暗号鍵(実際に使用されるタイミングを除く)
– DPFのデータベース再起動時に1メンバー/パーティションから別のメンバーへ透過
的に伝わる場合のキーストアのパスワード
16
© 2015 IBM Corporation
マスターキーの管理
17
© 2015 IBM Corporation
IBM Global Security Kit
 DB2暗号化は、鍵管理のためにIBM Global Security Kitを使用
– DB2に同梱されて、インストールされる
• Linux, UNIXパス: /sqllib/gskit
• Windowsパス:
:¥Program Files (x86)¥IBM¥gsk8
– IBM Global Security Kit (GSKit)ライブラリにより、データベースを暗号化するための
鍵を作成、格納、および管理
– gskitコマンド(gsk8capicmd_64)の64ビット・バージョンのみ利用可能
 3つのGSKitコマンド・オプションで鍵を操作
– keydb
• DB2が使用するキーストアを作成
– secretkey
• キーストアにマスターキーラベルを追加
– cert
• マスターキーラベルの一覧表示、削除、インポート、エクスポート
18
© 2015 IBM Corporation
キーストアの作成(keydb)
 キーストアは、DB2 Native Encryptionを使用する前に作成・登録する
– キーストアは、gsk8capicmdコマンドkeydbオプションを使用して作成
gsk8capicmd_64 –keydb –create[-drop] –db –pw –strong –type –stash
 パラメーター
キーワード
意味
-keydb
キーストアの操作を行うことを示す
-create or -drop
キーストアを作成(又は、ドロップ)
-db
キーストアの絶対パス名。キーストアは、DB2インスタンスからアクセスできる必要がある
-type
「pkcs12」を指定
-pw
キーストアのパスワード(少なくとも14文字の長さ)
-strong
パスワードを単純でないものにすることを指定
-stash
キーストアへのアクセス時に、パスワードを入力しなくても実行できるようにするために、stashファイルを作
成する
 事例
– gsk8capicmd_64 -keydb –create -db ~/db2/db2keys.p12
-type pkcs12
-pw "Str0ngPassw0rd"
-strong -stash
19
© 2015 IBM Corporation
stashファイルの考慮事項
 キーストアを作成するときに-stashオプションを指定した場合、 キーストアに対
するパスワードを、stashファイルに保存する
– stashファイル名は以下
<キーストア名(-dbで指定したもの)>.sth
 stashファイルは、パスワードを自動的に提供する
– キーストアにアクセスする際、DB2はまずstashファイルの存在をチェック
– stashファイルがあれば、ファイルのコンテンツを復号してキーストアのパスワードとし
て使用
 ファイル・オーナーのみがstashファイルを読むことが可能
 stashファイルを使用するか否かは、セキュリティー要件と運用要件で決定
– stashファイルを使用している場合、DB2インスタンス起動を自動化できる
• stashファイルが無い場合は、キーストアのパスワードを入力することが必要
• キーストアへのパスワードを入力しないと、暗号化したデータベースにアクセス不可
– インスタンス・オーナーのアカウントが乗っ取られた場合、stashファイルがあると、セ
キュリティー上危険
• インスタンス・オーナーとして、stashファイルを使用し、キーストアにアクセスできてしまう
20
© 2015 IBM Corporation
stashファイルなしでDB2を起動
 stashファイルがなくても、DB2は正常に起動する(エラーが返されない)
 暗号化したデータベースに接続するアプリケーションは、エラーとなる
SQL1728N」コマンド又はオペレーションが失敗した原因はキーストアにアクセスできなかった為で
す。原因コード「3」
 暗号化したデータベースへのアクセスを可能にするためには、open keystore
オプション付きで、db2startコマンドを実行することが必要
– キーストアのパスワードは、以下の方法で指定可能
1. USINGを使って、コマンドラインで指定する
db2start open keystore USING Str0ngPassw0rd
2. ファイル(FILENAME:) または、パイプ(FD:)から入力する
db2start open keystore PASSARG FILENAME:<value> | FD:<value>
–USING、FILENAME, FD無しで、db2start open keystoreを実行すると、コンソール上
にパスワード入力を求めるプロンプトが出る
db2start open keystore
Keystore Password:
21
© 2015 IBM Corporation
マスターキーの作成
 DB2は、以下の操作時に、マスターキーを自動的に生成する
– データベースの作成
– 鍵のローテーション
– 新しいデータベースのリストア
 DB2のマスターキー(MK)は常にAES 256ビット
– MKは、実際のデータベースではなく、データベースキー(DEK)を暗号化するために
使用される
 マスターキーラベルをユーザーが指定してマスターキーを作成するこも可能
– マスターキーラベルをユーザー指定する場合は、秘密鍵もユーザーで生成する
– マスターキーラベルを管理したいケース
• キーストア全体をコピーするのではなく、別のサイトでバックアップをリストアした
いとき
• HADR構成であり、鍵を同期したいとき
 GSKitコマンド(gsk8capicmd_64)により、キーストアでマスターキーを生成す
ることが可能
22
© 2015 IBM Corporation
マスターキーラベルの作成
 マスターキーラベルを追加する前に、キーストアが作成されていること
– キーストアへの書き込みのアクセス権が必要
– gsk8capicmdコマンドにより、新しいマスターキーを生成
gsk8capicmd_64 –secretkey –add –db –label –file -stashed
 パラメーター
キーワード
意味
-secretkey
キー操作を行うことを示す
-add
キーを追加する
-db
キーストアの絶対パス名
-label
登録するマスターキーに付けるラベル(テキスト文字列)
-pw
stashファイルが利用可能ではない場合、キーストアのためのパスワード
-file
マスターキーとして使用するビット列の格納されたファイル名 次ページ参照
-stashed
キーストアにアクセスするために隠しパスワード(stashファイル)を使用することを指定
 コマンド例
gsk8capicmd_64 –secretkey –add -db ~/db2/db2keys.p12
-label secret.key -stashed -file ~/db2/mysecretkey
– キーストアに登録するキービット列は別途作成し、fileパラメータで指定(作成方法は次ページ)
23
© 2015 IBM Corporation
マスターキー用ビット列の生成
 マスターキーをキーストアに追加する前に、ユーザーは秘密鍵となるビット列を
別途作成しておく必要がある
– キーとなるビット列を何らかの方法で生成し、gsk8capicmd_64 –secretkey –add コ
マンドの–fileパラメータで渡す
– マスターキーとして使用される秘密鍵の安全性はデータベースの実際の暗号化とは
関係がない(データベースはDEKで暗号化する)
– 最高レベルのアルゴリズムAES256の使用を推奨
• DEKの復号は頻繁には行われないため、オーバーヘッドは重要ではない
 鍵の生成
– 鍵を16、24又は32バイトの長さにする必要がある
• 128、192又は256ビットのAES鍵に対応
– Linux、UNIX上で、次のコマンドを使用して、32バイトのランダムな文字列を生成する
(256ビットのAES鍵)
head –c 32 /dev/random >~/db2/mysecretkey
– AIXでは以下のコマンドを使用
openssl rand –out ~/db2/mysecretkey 32
24
© 2015 IBM Corporation
マスターキーの削除/一覧表示
 GSKitコマンドの-certオプションを使用することで、キーストアのコンテンツの照
会、マスターキーの削除が可能
gsk8capicmd_64 –cert [-list|-delete]
 パラメーター
一般的なキーワード
意味
-db
キーストアの絶対パス名
-stashed
キーストアへアクセスするための隠しパスワード(stashファイル)を使用
-pw
stashファイルが利用可能ではない場合、キーストアのためのパスワード
削除
意味
-delete –label
マスターキーラベルの名前(テキスト文字列)
一覧表示
意味
-list
キーストアにおけるすべてのマスターキーの一覧表示
 コマンド例
gsk8capicmd_64 –cert –list -db ~/db2/db2keys.p12 –stashed
gsk8capicmd_64 –cert –delete –db ~/db2/db2keys.p12 -stashed
-label secret.key
25
© 2015 IBM Corporation
マスターキーのエクスポート
 GSKitコマンド-cert -exportオプションを使って、鍵をキーストアからエクスポー
トする
– エクスポートした鍵は他のキーストアにインポートできる
gsk8capicmd_64 –cert -export –db –label –target –target_pw
 パラメーター
キーワード
意味
-export
マスターキーをファイルにエクスポートする
-db
キーストアの絶対パス名
-stashed
キーストアへアクセスするために隠しパスワード(stashファイル)を使用
-pw
stashファイルが利用可能ではない場合、キーストアのためのパスワード
-label
マスターキーラベルの名前(テキスト文字列)
-target
マスターキーのエクスポートのあて先として作成されるファイルの名前
-target_pw
あて先ファイルを暗号化するために使用されるパスワード
-target_type
ファイルのタイプ(pkcs12)
 コマンド例
gsk8capicmd_64 –cert –export -db ~/db2/db2keys.p12 -stashed
-label secret.key –target ~/db2/exportedkey.p12 –target_type pkcs12
-target_pw Str0ngPassw0rd
26
© 2015 IBM Corporation
マスターキーのインポート
 GSKitコマンド-cert -importオプションは、エクスポートした鍵を(通常はバック
アップサイトの)既存のキーストアへインポートする
– targetはバックアップ・システム(他システム)上のキーストアであることに注意
gsk8capicmd_64 –cert -import –db –label –target –target_pw
 パラメーター
キーワード
意味
-import
マスターキーをkキーストアにインポートするコマンドの実行
-db
インポートしたい鍵ファイル(エクスポートしたもの)の絶対パス名(現行のキーストアではない)
-stashed
targetのキーストアへアクセスするために隠しパスワード(stashファイル)を使用
-pw
インポートしたいキーのパスワード(エクスポート時に指定したもの)
-label
インポートしたいキーのラベル(元についていたもの)
-target
インポート先のキーストアの絶対パス名
-target_pw
インポート先のキーストアのパスワード。-stashedオプションを使用することによりstashファイルを使用可
-target_type
キーストアタイプ(pkcs12)
 コマンド例
gsk8capicmd_64 –cert –import -db ~/db2/exportedkey.p12 -stashed
-pw Str0ngPassw0rd -label secret.key
–target ~/db2/db2keys.p12 –target_type pkcs12
27
© 2015 IBM Corporation
DB2へのキーストアの登録
 キーストアを作成した後、 キーストアの場所とタイプを示すDB2インスタンス・
パラメーターを更新する(SECADM権限が必要)
– 2つの新しい構成パラメーター
• KEYSTORE_TYPE
–使用されるキーストアのタイプ(NULLあるいはPKCS12)
• KEYSTORE_LOCATION –キーストアの絶対パス名(使用しない場合 NULL)
 1つのDB2インスタンスは、1つのキーストアのみ指定可能
– OSシステムには、他のアプリケーションのためのキーストアがある可能性があるが、
DB2はインスタンス・レベルで1つのキーストアのみサポート
 両方のパラメーターを同時に更新することを推奨
db2 UPDATE DBM CFG USING
KEYSTORE_TYPE PKCS12
KEYSTORE_LOCATION "/home/db2inst1/db2/db2keys.p12"
 インスタンスからキーストアを削除するには、keystore_type NONE,
keystore_location NULLに設定する
db2 UPDATE DBM CFG USING KEYSTORE_TYPE NONE KEYSTORE_LOCATION NULL
28
© 2015 IBM Corporation
DB2データベースの暗号化
29
© 2015 IBM Corporation
オンライン・データの暗号化
 キーストアを作成・登録すれば、データベースを暗号化可能となる
– オプションとして、DB暗号化前にマスターキーの作成・登録を行ってもよい
 CREATE DATABASEコマンドの新しいオプションを使用して、暗号化する
CREATE DATABASE mydb ENCRYPT;
 デフォルトの暗号化アルゴリズムは、AES 256
– 他のアルゴリズムと鍵長を選択可能
CREATE DATABASE mydb
ENCRYPT CIPHER AES KEY LENGTH 128;
CREATE DATABASE mydb
ENCRYPT CIPHER 3DES KEY LENGTH 168;
CREATE DATABASE mydb
ENCRYPT CIPHER AES KEY LENGTH 256
MASTER KEY LABEL mylabel;
30
© 2015 IBM Corporation
暗号化のオプション
 CREATE DATABASE ENCRYPTの3つのオプション
– CIPHER
•
•
•
•
使用する暗号化アルゴリズムの種類
AES(Advanced Encryption Standard)または3DES(Triple Data Encryption Standard)
CIPHERが指定されていない場合、AESは既定
AESでは、ハードウェアアクセラレータを使用できる場合、パフォーマンスがよい
– KEY LENGTH
• CIPHER AESの場合、128、192 または 256 ビット (デフォルトは256)
• CIPHER 3DESの場合, 168のみ
– MASTER KEY LABEL
• キーストア中のマスターキーのラベル(キーを事前に作成・登録している場合)
• マスターキーを使って、データベースを暗号化する鍵(DEK)を暗号化する
 MASTER KEY LABELの指定はオプション
– CREATE DATABASE コマンドで指定されていない場合、DB2はマスターキーを生
成する
– DB2が生成するマスターキーラベルの命名規則:
DB2_SYSGEN_<instance名>_<database名>_<timestamp>
31
© 2015 IBM Corporation
データベース暗号化設定の確認
 SYSPROC.ADMIN_GET_ENCRYPTION_INFOテーブル関数により、データ
ベースの暗号化設定が確認できる
列
内容
OBJECT_NAME
暗号化の対象(データベース名)
OBJECT_TYPE
暗号化されたオブジェクトの種類 (DATABASE)
ALGORITHM
使用された暗号化アルゴリズム
ALGORITHM_MODE
使用された暗号化アルゴリズム・モード
KEY_LENGTH
暗号化鍵長
MASTER_LEY_LABEL
使用されたマスターキーのマスターキーラベル
KEYSTORE_NAME
キーストアのロケーションの絶対パス名
KEYSTORE_TYPE
キーストアのタイプ
KEYSTORE_HOST
キーストアのファイルが存在するサーバーのホスト名
KEYSTORE_IP
キーストアのファイルが存在するサーバーのIPアドレス
KEYSTORE_IP_TYPE
キーストアのIPアドレスのタイプ(IPV4又はIPV6)
PREVIOUS_MASTER_KEY_LABEL
現在のマスターキーラベルのひとつ前のマスターキーラベル。
マスターキー・ローテーションが行われていない場合、現在のマスターキーラベル
 実行例
SELECT MASTER_KEY_LABEL, ALGORITHM, KEY_LENGTH FROM TABLE(ADMIN_GET_ENCRYPTION_INFO())
MASTER_KEY_LABEL
ALGORITHM KEY_LENGTH
----------------------------------------------------------------------------- ------------------ ---------DB2_SYSGEN_db2inst1_SECRET_2015-02-09-06.26.40 AES
256
32
© 2015 IBM Corporation
鍵のローテーション
 法令遵守のために暗号鍵を変更するプロセス
– 元の鍵で暗号鍵を復号し、新しい鍵で再び暗号化する
– データは暗号化し直さない
 鍵のローテーション頻度は、コンプライアンスに依存する
– 通常は、3ヶ月―1年に一度程度
 鍵のローテーションの要求は、90日ごとにパスワードを変更するルールと類似
の意味を持つ
鍵ラベル
SECRET.DB2INST1.2015.02.01
マスターキー
DB2鍵
鍵ラベル
マスターキー
DB2鍵
SECRET.DB2INST1.2015.03.05
現行のマスターキーを使用して、
DB2暗号鍵(DEK)を復号する
新しいマスターキーを使用して、DB2
暗号鍵(DEK)を暗号化しなおす
33
© 2015 IBM Corporation
鍵のローテーション手順
 鍵のローテーションの要件に遵守するために、
SYSPROC.ADMIN_ROTATE_MASTER_KEYプロシージャを使用してマスターキー
を変更する
– プロシージャを実行するために、データベースへの接続が必要
CALL SYSPROC.ADMIN_ROTATE_MASTER_KEY('newMasterKeyLabel')
 SYSPROC.ADMIN_ROTATE_MASTER_KEYプロシージャは、新しいマスターキーで
データベース鍵(DEK)を再暗号化する
 プロシージャ引数で、新しいマスターキーのラベルを指定しない場合、DB2は、新しいマ
スターキーおよびキーラベルを自動的に生成する
 鍵ローテーションは、db2diag.logファイルに記録される
grep –A 3 "Key Rotation" ~/sqllib/db2dump/db2diag.log
Key Rotation successful using label:
DATA #2 : String, 46 bytes
DB2_SYSGEN_db2inst1_SECRET_2015-02-09-05.03.12
34
© 2015 IBM Corporation
暗号化を使用するバックアップやリストア
35
© 2015 IBM Corporation
バックアップ暗号化の設定
 2つのデータベース構成パラメーターを使用して、バックアップの暗号化を自動
的にコントロールする
– ENCRLIB
–どの暗号化ライブラリを使用するかの選択
– ENCROPTS –暗号化ルーチンに渡すオプション
 ENCRLIBを次の値のいずれかに設定する(完全パス名の指定が必要)
オペレーティング・システ
ム
圧縮だけする場合
暗号化だけする場合
両方実施する場合
Windows
db2compr.dll
db2encr.dll
db2compr_encr.dll
Linux
libdb2compr.so
libdb2encr.so
libdb2compr_encr.so
AIX
libdb2compr.a
libdb2encr.a
libdb2compr_encr.a
 ENCROPTS に設定できる値(省略可能)
– 各オプションは、コロン(:)で区切って指定する(例: Cipher=AES:Length=256)
36
オプション名
目的
指定可能な値
CIPHER
使用する暗号化アルゴリズムのタイプ
AES, 3DES
LENGTH
暗号鍵の長さ
AES: 128, 192, 256 3DES:
168
MASTER KEY
LABEL
データベース鍵を暗号化するために使用されたマスターキー
ラベルのオプション名前
文字列
© 2015 IBM Corporation
暗号化済みデータベースのバックアップに対する暗号化設定
 ENCRLIB と ENCROPTS DB 構成パラメータは、データベースがENCRYPT
オプション付きで作成されると、自動的に設定される
– ENCRLOIB, ENCROPTSの値はデータベース作成時間に使用されるENCRYPTオ
プションに従って設定される
• データベースのバックアップは,、これらの値によって暗号化される
• BACKUPコマンドで追加の暗号化キーワードは必要ない
– ENCRLIB, ENCROPTS構成パラメーターは、SECADMだけが変更できる
 バックアップにおける暗号化レベルは、 SECADMでENCROPTS設定を変更
することにより変更可能
– データベースの暗号化と、バックアップの暗号化で、異なるレベルを使用することが
できる
– ENCROPTSはBACKUPコマンドで指定が可能
• データベースのENCROPTS構成パラメーターが、NULLに設定されていることが必要
• BACKUPでENCROPTS を指定しない場合はデフォルトの暗号化設定となる(AES 256)
– ENCRLIBをNULLに、 ENCROPTSをNULLに設定すると、暗号化されないバック
アップを取得することが可能となる
37
© 2015 IBM Corporation
通常のデータベースのバックアップに対する暗号化設定
 ENCRLIB と ENCROPTS は暗号化されていないデータベースにも設定可能
– 要件に応じて、ENCRLIB と ENCROPTS構成パラメータを設定する
– SECADMでENCRLIB, ENCROPTSを設定すると、バックアップは暗号化されるよう
になる
– ENCROPTS (暗号化オプション) NULL, ENCRYPT NULLと指定されていない場
合、BACKUPコマンドでバックアップ・オプションを変更することはできない
 データベース構成パラメータでENCRLIB/ENCROPTSを設定することは、バッ
クアップを常に暗号化すること
– DBAは暗号化のための追加オプション指定無しでBACKUPコマンドを実行可能
 事例:
BACKUP DATABASE SECRET TO /HOME/DB2INST1/DB2
ENCRYPT ENCRLIB 'libdb2encr.so'
ENCROPTS 'Cipher=AES:Key Length=256'
38
© 2015 IBM Corporation
バックアップ暗号化のまとめ
 下の表はENCRLIB と ENCROPTSの 設定の組合せ
– ENCRLIBが設定されたらバックアップは常に暗号化される
– ENCROPTSがNULLに設定されていた場合に限り、DBAはバックアップ暗号化レベ
ルを変更できる
– バックアップはENCRLIB と ENCROPTS が NULL の時に復号される
データベース
暗号化
39
ENCRLIB
設定
ENCROPTS
設定
DBA で
ENCROPTS変更可
backupコマンドのデフォル
ト
✔
✔
✔
✖
暗号化
✔
✔
✖
✔
暗号化
✔
✖
✖
✔
無し
✖
✔
✔
✖
暗号化
✖
✔
✖
✔
暗号化
✖
✖
✖
✔
無し
データベー
ス暗号化
の
デフォルト
標準データ
ベースのデ
フォルト
© 2015 IBM Corporation
暗号化されたバックアップを既存DBにリストア
 replaceを指定して既存のDB上にバックアップをリストアする場合、特別なパラ
メーターは不要
– キーストアにはバックアップ・コピー作成時に使用されたマスターキーラベルが含まれ
ている必要がある
– バックアップ時に暗号化された標準データベースは、暗号化されていないデータベー
スとしてリストア可能
RESTORE DATABASE SECRET FROM /home/db2inst1/db2
 RESTORE時には、既存のDBにおけるデータベース暗号化設定(構成パラメー
タ)が使用される
– ENCROPTSのデータベース構成パラメーターは、データベースが作成された際に設
定されている
40
© 2015 IBM Corporation
暗号化されたバックアップの新規リストア
 バックアップを新規DBとしてリストアする場合は、ENCRYPTパラメーターの指
定が必要
– DB2は暗号化されたバックアップをリストアする前に、データベースを作成する
データベースを暗号化するためにはENCRYPTキーワードが必要
– RESTOREコマンドのENCRYPTキーワードのパラメーターはデータベース暗号化に
使用するものと同じ
RESTORE DATABASE SECRET FROM /home/db2inst1/db2
ENCRYPT
CIPHER AES
KEY LENGTH 128
MASTER KEY LABEL secret.key
 バックアップイメージと、リストアで作成するDBで、異なる暗号化設定が可能
– RESTOREコマンドのENCRYPTオプションで、バックアップイメージと異なる
CIPHER、KEY LENGTH、MASTER KEY LABELを指定する
– バックアップイメージと同じ設定にしたい場合は、RESTORE コマンドでshow
master key details オプションを使用する
41
© 2015 IBM Corporation
バックアップの暗号化設定の設定
 バックアップを新規DBとしてリストアする際、データベースが暗号化可能である
ことが必要
– 暗号化アルゴリズム(CIPHER)、鍵長(KEY LENGTH)、マスターキーラベル
(MASTER KEY LABEL)の変更が可能
– バックアップ・イメージの暗号化設定を照会可能
 RESTOREコマンドにより、バックアップの暗号化設定情報を抽出
– 既存のDBを指定して、show master key detailsオプション付きのRESTOREアン
ドを実行すると、DBを上書きしてよいかプロンプトが出るが、DBは実際にはリストア
されない
RESTORE DATABASE SECRET FROM /home/db2inst1/db2
ENCRLIB 'libdb2encr.so'
ENCROPTS 'show master key details'
 show master key detailを指定すると、暗号化情報がdb2dumpディレクトリ
ーのファイルに書き出される
– 次の名称が付いたファイルが作成される
<DATABASE>.#.<instance>.<partition>.<timestamp>.masterkeydetails
– バックアップを復号をする為にRESTORE コマンドで ENCROPTSの ‘Master Key
Label=xxx’ オプションで正しいマスターキーラベルを指定する
42
© 2015 IBM Corporation
異なるサーバーへの暗号化バックアップのリストア
 データベースを作成し、バックアップする
CREATE DATABASE SECRET ENCRYPT
BACKUP DATABASE SECRET TO /primary
 キーストアから マスターキーラベル を取得
gsk8capicmd –cert –export –db ~/db2/primary.p12 –stashed
-label secret.key –target secret.p12
-target_type pkcs12 –target_pw Str0ngPassw0rd
 バックアップ・サイトにマスターキーをコピーして、バックアップ・サイトのキースト
アに追加
gsk8capicmd –cert –import –db secret.p12 –pw Str0ngPassw0rd
–stashed -label secret.key
-target ~/db2/backup.p12
-target_type pkcs12
 データベースをリストア
RESTORE DATABASE SECRET FROM /backup
43
© 2015 IBM Corporation
旧バージョンアップのデータベースを暗号化してリストア
 旧バージョンのDBのバックアップ(暗号化されていない)を、暗号化設定されて
いるDBインスタンスにリストアすることで、DBの移行&暗号化を同時に実施で
きる
– 旧バージョンでのバックアップの取得
• db2 backup db testdb to /tmp
– 新バージョンの暗号化可能なインスタンスの用意
• キーストアを用意
• KEYSTORE
– 新環境に旧バージョンのバックアップをリストア
db2 restore db testdb from /tmp encrypt
SQL2555I データベースがリストアされた後、RESTORE DATABASE
コマンドの発行元である現行の DB2 リリースに正常にアップグレードされました。
– RESTRORE時に暗号化設定(ENCROPTS)を指定しない場合は、デフ
ォルトが使用される
• ENCROPTS = CIPHER=AES:MODE=CBC:KEY LENGTH=256
– マスターキーはRESTORE時に作成される
44
© 2015 IBM Corporation
ユーティリティ、診断および特別な考慮事項
45
© 2015 IBM Corporation
既存データベースのマイグレーション
 既存データベースで通常の(暗号化されていない)バックアップを取得
 V10.5 FP5から新規サポートされた ENCRYPT オプションを使用し、必要な暗
号化設定を行って、バックアップをリストアする
バックアップ
リストア
RESTORE DATABASE SECRET FROM /home/db2inst1
ENCRYPT
CIPHER AES
KEY LENGTH 192
MASTER KEY LABEL secret.key
46
© 2015 IBM Corporation
HADR考慮事項
 通常、プライマリ、セカンダリのデータベースは両方とも暗号化する
 プライマリやセカンダリのいずれかのみを暗号化することも可能
 HADRの起動時に、データベースの1つが暗号化されていない場合は、管理警告メッセージ
が生成される
 データベースを作成する場合、マスターキーラベルを定義する必要がある
 セカンダリ・サイトは、新規データベースとしてセットアップする
 RESTOREコマンドで暗号化オプションを指定する
 キーストアはローカルで利用可能となっていることが必要
 キーストア管理は、インスタンスの設定に従う
 セカンダリ・インスタンスでは、プライマリ・インスタンスで暗号化したデータベースの
みをサポートする場合、プライマリ・サイトのキーストアをセカンダリ・サイトにコピーす
るだけでよい
 セカンダリ・インスタンスが他の暗号化データベースを有する場合、プライマリからマ
スターキーをエクスポートして、セカンダリにインポートする
gsk8capicmd –cert –export –db ~/db2/primary.p12 –stashed
-label secret.key –target secret.p12
-target_type pkcs12 –target_pw Str0ngPassw0rd
47
© 2015 IBM Corporation
HADRにおける鍵のローテーション
 HADRは鍵のローテーションをサポートするが、キーストアの同期が必要
 スタンバイのキーストアに新しいマスターキーラベルが追加される前に、そのキーラ
ベルを必要とするアーカイブログがreplayされないようにすること
 自動的なキーストアの同期
 両方のキーストアを、共有ファイル・システムに置く、またはrsyncコマンドを使用して
同期する
 マニュアルでのキーストアの同期
 マスターキーをセカンダリで生成してエクスポートし、プライマリにインポートしてから
鍵をローテートする
 鍵のローテーションのプロセス
1. スタンバイのキーストア(Y)で新しいマスター・ラベルを追加する
2. キーストアが自動的に同期化されていない場合
• マスターキーラベルをファイルにエクスポートして、プライマリ・サイトに送る
• マスターキー(Y)をプライマリキーストアへインポートする
3. プライマリ・データベースに接続する
4. 鍵のローテーション・コマンドを発行する
CALL SYSPROC.ROTATE_MASTER_KEY('<Y>')
48
© 2015 IBM Corporation
HADRにおける鍵のローテーションの診断
 プライマリ・システムで鍵のローテーションを実行することにより、セカンダリ・シ
ステムでも鍵のローテーションが実施される
– プライマリにおける鍵のローテーションと非同期になる
 スタンバイ・システムにおける鍵のローテーションが失敗した場合、ADMメッセ
ージがログされる
2015-01-12-15.55.23.398487 Instance:geoffrey Node:000
PID:17361(db2hadrs.0.0 (HADRDB)) TID:1065347392 Appid:none
High Availability Disaster Recovery hdrEdu::hdrEduS Probe:21719 Database:HADRDB
ADM12517E A master key rotation to label
"DB2_SYSGEN_geoffrey_HADRDB_2015-01-12-15.54.26" failed on the HADR standby
with zrc "-2141452059". The standby system disconnects to retry key rotation.
 最も一般的なエラーは、マスターキーラベルがスタンバイのキーストアに存在し
ないことによる
49
© 2015 IBM Corporation
HADR状況フラグ
 db2pd –hadrオプションを使用し、プライマリ又はスタンバイ・システムからの
HADR状況フラグをチェック:
HADR_STATE = REMOTE_CATCHUP_PENDING
HADR_FLAGS = STANDBY_RECV_BLOCKED STANDBY_KEY_ROTATION_ERROR
 STANDBY_KEY_ROTATION_ERRORフラグ
 スタンバイ・システム上で鍵のローテーション・エラーがあり、新規のHADRメッセージ
の送受信がブロックされていることを示す
 タイムアウト時間(30分)内に問題が解決された場合、システムは性接続され、
HADRも継続実行される
 問題が解決されていない場合、HADRはシャット・ダウンされ、問題を修正した後、
HADRを再起動することが必要
 ほとんどの問題はマスターキーがシステム間で同期されていないことによる
50
© 2015 IBM Corporation
ツールの変更
 暗号化をサポートするツール
–
–
–
–
–
–
–
–
–
db2pdlog
db2fmtlog
db2cklog
db2flsn
db2LogsForRfwd
db2UncompressLog
db2ckbkp
db2adutl
db2dart
 これらのツールは、DBM CFG KEYSTORE_LOCATIONパラメーターで指定
されたキーストアを使用する
– stashファイルを使用していない場合、キーストアへのアクセスのために追加の変数
を使用
-kspassword password
-kspassarg fd:file_descriptor filename:file_name
-ksprompt
51
© 2015 IBM Corporation
DB2DIAGログ
 db2diag.logには暗号化コマンドで発生したエラーに関連する追加の情報が記
録される
2015-02-11-09.46.53.068475-300 E1265451E1280
LEVEL: Error
PID : 4527
TID : 139971511969536 PROC : db2sysc 0
INSTANCE: db2inst1
NODE : 000
DB : SECRET
APPHDL : 0-169
APPID: *LOCAL.db2inst1.150211144653
AUTHID : DB2INST1
HOSTNAME: localhost.localdomain
EDUID : 1767
EDUNAME: db2agent (SECRET) 0
FUNCTION: DB2 UDB, database utilities, sqludValidateUserOptionsAgainstMediaHeader, probe:789
MESSAGE : ZRC=0xFFFFF931=-1743
SQL1743N The RESTORE command failed because the database in the
backup image is encrypted but the existing database on disk is not
encrypted.
DATA #1 : String, 558 bytes
The database contained in the backup image is encrypted but existing database on disk is not. If this was
intentional re-execute the command with the 'no encrypt' option. If this was not intended and you are
restoring into a new database, supply the desired encryption options to the restore API. If this is a preexisting database, the encryption options can not be changed and you must either use a different backup image,
restore into a a different database, or drop the existing database and then re-issue the restore with the
desired encryption options.
 鍵のローテーションもdb2diag.logに記録される
Key Rotation successful using label:
DATA #2 : String, 46 bytes
DB2_SYSGEN_db2inst1_SECRET_2015-02-09-05.03.12
52
© 2015 IBM Corporation
データベース暗号化のまとめ
 データベースを暗号化するために必要な操作
–
–
–
–
–
インスタンスのためのキーストアを構成する(セットアップ時に一回)
マスターキーラベルを必要に応じて作成して、キーストアに追加(オプション)
データベースを作成時に、暗号化を指定
バックアップをする場合、暗号化を指定(暗号化データベースではデフォルト)
バックアップをリストアする場合、暗号化を指定
 データベース暗号化の運用管理
– キーストアの定期的なバックアップおよび安全保管が必要
– コンプライアンス要件に従ってデータベース・マスターキーをローテーションする
– キーストアのパスワード保護を行う場合、コンプライアンス要件に従い、変更も含めて
パスワードを慎重に管理すること
キーストアをバックアップは必須
53
© 2015 IBM Corporation
DB2ネイティブ暗号化とGuardium Data Encryptionの比較
 データベースレベルの暗号化
–
–
–
–
DBA/アプリケーション・チームが管理する
クラウド環境でも実現可能
データベースやバックアップ・イメージを暗号化
必要に応じてバックアップの圧縮も可能
 DBAによる管理
 企業レベルの暗号化
– 異種データベース、アプリケーションおよびファイ
ルシステム暗号化
 企業のセキュリティー・チームが管理
する必要あり
IBM DB2 Encryption Option
システム/プロジェクト
のオーナー、管理者に
基づき選択
54
© 2015 IBM Corporation
コマンド例
55
© 2015 IBM Corporation
暗号化データベースのバックアップ/リストアのコマンド例
暗号化データベースの作成、バックアップおよびリストア
CREATE DATABASE SECRET ENCRYPT
BACKUP DATABASE SECRET ON /db2
RESTORE DATABASE SECRET FROM /db2
暗号化データベースのバックアップを、新規DBとしてリストア
RESTORE DATABASE SECRET FROM /db2 ENCRYPT
暗号化データベースのバックアップを、暗号化のオプションを変更して新規DBとしてリストア
RESTORE DATABASE SECRET FROM /db2 ENCRYPT CIPHER AES KEY LENGTH 192
暗号化データベースのバックアップを、通常の(暗号化していない)新規のDBとしてとしてリストア
RESTORE DATABASE SECRET FROM /db2 NO ENCRYPT
暗号化されたバックアップ・イメージからマスターキーラベルの情報を抽出
RESTORE DATABASE SECRET FROM /db2 ENCRYPT
ENCRLIB 'libdb2encr.so' ENCROPTS 'show master key details'
暗号化されたデータベースを、異なるENCROPTS設定でバックアップ
UPDATE DATABASE CONFIG USING ENCROPTS NULL IMMEDIATE
BACKUP DATABASE SECRET ON /db2 ENCROPTS 'Ciper=AES:Key Length=128'
暗号化されたデータベースを、暗号化設定無しでバックアップ
UPDATE DATABASE CONFIG USING ENCRLIB NULL ENCROPTS NULL IMMEDIATE
BACKUP DATABASE SECRET ON /db2
56
© 2015 IBM Corporation
通常(暗号化されていない)DBのバックアップ/リストアの事例
通常(非暗号化)DBの作成、バックアップおよびリストア
CREATE DATABASE NOSECRET
BACKUP DATABASE NOSECRET TO /db2
RESTORE DATABASE NOSECRET FROM /db2
通常DBのバックアップを新規DBとしてリストア. その際に既定値を使用して暗号化
RESTORE DATABASE NOSECRET FROM /db2 ENCRYPT
バックアップのリストア時に、新規DBとしてリストアし、暗号化オプションを変更して暗号化しなおす
RESTORE DATABASE NOSECRET FROM /db2 ENCRYPT CIPHER AES KEY LENGTH 192
通常DBを暗号化してバックアップ
BACKUP DATABASE NOSECRET TO /db2 ENCRYPT
ENCRLIB 'libdb2encr.so'
ENCROPTS 'Cipher=AES:Key length=128:Master Key Label=secret.key'
暗号化されたバックアップを通常のDBとしてリストア
RESTORE DATABASE NOSECRET FROM /db2
ENCRLIBやENCROPTS設定を使用して、通常データベースをバックアップ
UPDATE DATABASE CONFIG USING
ENCRLIB '/home/db2inst1/sqllib/lib/libdb2encr.so'
ENCROPTS 'Cipher=AES:Key length=128:Master Key Label=secret.key'
BACKUP DATABASE NOSECRET TO /db2
57
© 2015 IBM Corporation
HADRセットアップの事例
プライマリ・サイトでキーストアおよびマスターキーをセットアップする
gsk8capicmd –keydb –create –db ~/db2/db2keys.p12 –type pkcs12 –pw Str0ngPassw0rd – strong –stash
head –c 32 /dev/random > ~/db2/secretkey.p12 (Linux)
gsk8capicm –secretkey –add –db ~/db2/db2keys.p12 –stashed –label secret.key –file ~/db2/secretkey.p12
プライマリ・インスタンスDBM構成パラメータのキーストア情報を更新し、暗号化データベースを作成、バックアップを取得する
UPDATE DBM CONFIG USING KEYSTORE_NAME /home/db2inst1/db2/db2keys.p12 KEYSTORE_TYPE PKCS12
CREATE DATABASE SECRET ENCRYPT CIPHER AES KEY LENGTH 256 MASTER KEY LABEL secret.key
BACKUP DATABASE SECRET TO …
プライマリから秘密鍵をエクスポートして、セカンダリ・サイトに送信する(又はキーストアをコピー)
gsk8capicm –cert –export –db ~/db2/db2keys.p12 –stashed –label secret.key
–target ~/db2/export.p12 –target_pw "Str0ngPassw0rd" –target_type pkcs12
scp ~/db2/export.p12 db2inst1@secondary:/home/db2inst1/db2
セカンダリ・サイトキーストアのセットアップ、およびプライマリから送信された秘密鍵をインポートする
gsk8capicmd –keydb –create –db ~/db2/db2keys.p12 –type pkcs12 –pw Str0ngPassw0rd – strong –stash
gsk8capicmd –cert –import -db ~/db2/export.p12 –label secret.key –pw "Str0ngPassw0rd"
-target ~/db2/db2keys.p12 –target_type pkcs12 –stashed
UPDATE DBM CONFIG USING KEYSTORE_NAME /home/db2inst1/db2/db2keys.p12 KEYSTORE_TYPE PKCS12
セカンダリ・サイトでプライマリで取得したデータベースのバックアップをリストア
RESTORE DATABASE SECRET FROM /db2 ENCRYPT CIPHER … MASTER KEY LABEL secret.key
58
© 2015 IBM Corporation
HADR鍵のローテーションの事例
セカンダリ・サイトで新しいマスターキーを生成する
head –c 32 /dev/random > ~/db2/newsecretkey.p12 (Linuxの場合)
gsk8capicm –secretkey –add –db ~/db2/db2keys.p12 –stashed –label newsecret.key –file
~/db2/newsecretkey.p12
新しいマスターキーをエクスポートして、プライマリ・システムに転送する
gsk8capicm –cert –export –db ~/db2/db2keys.p12 –stashed –label newsecret.key
–target ~/db2/export.p12 –target_pw "Str0ngPassw0rd" –target_type pkcs12
scp ~/db2/export.p12 db2inst1@primary:/home/db2inst1/db2
新しい秘密鍵をセカンダリからプライマリ・サイトへインポートする
gsk8capicmd –cert –import -db ~/db2/export.p12 –label newsecret.key –pw "Str0ngPassw0rd"
-target ~/db2/db2keys.p12 –target_type pkcs12 –stashed
プライマリ・サイト上で鍵のローテーションを開始する
CONNECT TO SECRET
CALL SYSPROC.ROTATE_MASTER_KEY('newsecret.key')
59
© 2015 IBM Corporation
IBM DB2 Encryption Offering
60
© 2015 IBM Corporation
Fly UP