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