Comments
Description
Transcript
DB2 V9.7新機能ワークショップ セキュリティー機能強化
DB2 V9.7新機能ワークショップ セキュリティー機能強化 本書に含まれている情報は、正式なIBMのテストを受けていません。また、明記にしろ、暗黙的にしろ、なんらの保証もなしに配布されるものです。 この情報の使用またはこれらの技術の実施は、いずれも、使用先の責任において行われるべきものであり、それらを評価し、実際に使用する環境に統合する 使用先の判断に依存しています。それぞれの項目は、ある特定の状態において正確であることがIBMによって調べられていますが、他のところで同じまたは同 様の結果が得られる保証はありません。これらの技術を自身の環境に適用することを試みる使用先は、自己の責任において行う必要があります。 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009 内容 権限の 権限の分離 • 目的 • DB管理者とセキュリティー管理者の権限を分離 • 必要以上の権限をユーザーやグループに与えないようにする ネットワーク機能強化 ネットワーク機能強化 • 目的 • データ暗号化の強化 • SSL通信の設定の簡素化 主な変更点 •SYSADM、SECADM、DBADMの明確な役割分担 •SSL設定はDBM CFGで実施 2 © 2009 ISE Corporation 権限の分離 権限の分離 3 © 2009 ISE Corporation 権限の分離 ~内容~ • DB2の の権限 • インスタンス権限 インスタンス権限の 権限の変更点 • SYSADM • SYSMON • データベース権限 データベース権限の 権限の変更点 • SECADMの変更 • DBADMの変更点 • 新しいデータベース しいデータベース権限 データベース権限 • SQLADM • WLMADM • EXPLAIN • 移行 4 © 2009 ISE Corporation DB2の権限 以前まで 新規DB 新規DB環境 構築すると… DB環境を 環境を構築すると すると データベース インスタンス SYSADM システム管理 V9.1 ~ SECADM セキュリティー管理 DBADM データベース管理権限 SYSCTRL システム制御 SYSMAINT システム保守 SYSMON SYSMON システム・モニター SYSADMはSECADM、DBADM権限の付与が可能 SYSADMには暗黙的にDBADMが付与されている 5 © 2009 ISE Corporation DB2の権限 V9.7から 新規DB 新規DB環境 構築すると… DB環境を 環境を構築すると すると データベース インスタンス × SYSADM システム管理 V9.1 ~ DATAACCESS ACCESSCTRL SECADM セキュリティー管理 DBADM データベース管理権限 WLMADM SQLADM EXPLAIN × SYSADMはSECADM、DBADM権限を付与できない SYSADMには暗黙的にDBADM権限が付与されない 6 SYSCTRL* システム制御 SYSMAINT* システム保守 SYSMON SYSMON** システム・モニター *:変更なし **:マイナー変更 © 2009 ISE Corporation SYSADMの変更点 インスタンス権限 • DBADM権限 権限は 権限は付与されない 付与されない • 以前の権限が必要な場合、明示的にDBADM権限を付与する • SECADM権限 権限を 権限を付与できない 付与できない • SECADM権限の付与はSECADMのみ可能に • V9.7からは からはSYSADMは は以下のみ からは 以下のみ実行可能 のみ実行可能 • Upgrade database • Restore database • DBM CFG の変更 7 © 2009 ISE Corporation (参考)SYSMONの変更点 インスタンス権限 • 実行可能な コマンドの 実行可能なLISTコマンド コマンドの拡張 • db2mtrkの の実行が 実行が可能 GET DATABASE MANAGER MONITOR SWITCHES GET MONITOR SWITCHES GET SNAPSHOT LIST ACTIVE DATABASES LIST APPLICATIONS LIST DCS APPLICATIONS RESET MONITOR UPDATE MONITOR SWITCHES db2GetSnapshot db2GetSnapshotSize db2MonitorSwitches db2ResetMonitor V9.5 GET DATABASE MANAGER MONITOR SWITCHES GET MONITOR SWITCHES GET SNAPSHOT LIST ACTIVE DATABASES LIST APPLICATIONS LIST DATABASE PARTITION GROUPS LIST DCS APPLICATIONS LIST PACKAGES LIST TABLES LIST TABLESPACE CONTAINERS LIST TABLESPACES LIST UTILITIES RESET MONITOR UPDATE MONITOR SWITCHES db2GetSnapshot db2GetSnapshotSize db2MonitorSwitches db2mtrk db2ResetMonitor 8 V9.7 © 2009 ISE Corporation SECADMの変更 データベース権限 • データベース権限 データベース権限の 権限の GRANT/REVOKE をすべて管理 をすべて管理 • DBADM、SECADMなど • Roleや やGroupに に対してSECADMを をGRANT/REVOKE可能 可能 して • 以前はUserにのみ可能 • 以下の ストアード・ 以下のAuditストアード ストアード・プロシージャーや プロシージャーや表関数を 表関数を実行する 実行する必要 する必要がない 必要がない • AUDIT_ARCHIVES • AUDIT_LIST_LOGS • AUDIT_DELIM_EXTRACT 以前は、SECADMのみ実行可能 V97では、上記のEXECUTE特権を他のユーザにGRANT可能になった 9 © 2009 ISE Corporation DBADMの変更点 データベース権限 • DBADMを をGrant/Revokeできるのは できるのは、 のみ できるのは、SECADMのみ • DBADM権限 権限を 付与する時 以下の権限も 権限も付与するか 付与するか選択可能 権限を付与する する時、以下の するか選択可能 • DATAACCESS • データアクセス可否に関する権限 • デフォルトは WITH DATAACCESS • ACCESSCTRL • 権限のGrant/Revokeに関する権限 • デフォルトは WITH ACCESSCTRL • 以前は は自動的に 権限、 以前はDBADMは 自動的にGrant/Revoke権限 権限、データの データのアクセス権 アクセス権が 付与されていたが からは、 付与されていたが、 されていたが、V9.7からは からは、選択可能 例 GRANTE DBADM WITH DATAACCESS WITH ACCESSCTRL ON DATABASE TO USER XXXX 10 © 2009 ISE Corporation (参考)DBADM権限のREVOKE • 今まではDBADM権限 権限を しても以下 までは 権限をREVOKEしても しても以下の 以下の権限は 権限は残る • BINDADD • CONNECT • CREATETAB • CREATE_EXTERNAL_ROUTINE • CREATE_NOT_FENCED_ROUTINE • IMPLICIT_SCHEMA • QUIESCE_CONNECT • LOAD • V97では では自動的 される では自動的に 自動的に上記の 上記の権限も 権限もREVOKEされる 11 © 2009 ISE Corporation その他の新しいデータベース権限 • ACCESSCTRL • Grant/revoke権限 • DBADMに対する権限(デフォルトは付与される) • DATAACCESS • データへのアクセス権限 • DBADMに対する権限(デフォルトは付与される) • WLMADM • Workload manager用の権限 • SQLADM • SQLチューニング用の権限 • EXPLAIN • EXPLAIN実行用の権限 12 © 2009 ISE Corporation WLMADM • Workload Manager用 用の権限 • work action sets、Work class setsなどの作成 • DBADM権限 権限の 権限のサブセット V9.1 ~ SECADM セキュリティー管理 DBADM データベース管理権限 WLMADM SQLADM EXPLAIN 13 © 2009 ISE Corporation SQLADM • SQLステートメント ステートメントの ステートメントのモニタリングに モニタリングに使用する 使用する権限 する権限 • CREATE EVENT MONITOR、REORG、RUNSTATS など • DBADM権限 権限の 権限のサブセット V9.1 ~ SECADM セキュリティー管理 DBADM データベース管理権限 WLMADM SQLADM EXPLAIN 14 © 2009 ISE Corporation EXPLAIN • 以下の 以下の実行のみ 実行のみ可能 のみ可能 • EXPLAIN、EXPLAIN関数 • PREPARE • DESCRIBE SELECT • 例:describe select (*) from table • ただし、データへのアクセス権限はなし • SQLADM権限 権限の 権限のサブセット V9.1 ~ SECADM セキュリティー管理 DBADM データベース管理権限 WLMADM SQLADM EXPLAIN 15 © 2009 ISE Corporation データベース作成者のデフォルト権限 • 以前まで 以前まで • 自動的にDBADM権限が付与される • V9.7から から • 自動的に、DBADM(ACCESSCTRL と DATAACCESS付) 、 SECADM 権限が付与される 必要以上の権限が付与されるため、 必要に応じて明示的に権限をREVOKEする 16 © 2009 ISE Corporation 一般的な移行パターン SYSADM システム管理 V9.5 SECADM セキュリティー管理 DBADM データベース管理権限 V9.7 V9.5 SECADM セキュリティー管理 移行パターン 移行パターン1 パターン1 DBADM データベース管理権限 変化なし 変化なし SYSADM システム管理 SYSADM システム管理 V9.7 SYSADM システム管理 移行パターン 移行パターン2 パターン2 DBADM データベース管理権限 17 SECADMが が 移行ユーザー 移行ユーザーに ユーザーに付与 DBADM データベース管理権限 © 2009 ISE Corporation 移行後の権限 • SYSADMに に自動的に 自動的に以下の 以下の権限が 権限が付与される 付与される • DBADM(DATAACESS と ACCESSCTRL権限付) • DBADMを を持つユーザに ユーザに自動的に 自動的に以下の 以下の権限が 権限が付与される 付与される • DATAACCESS と ACCESSCTRL • 移行する 権限が 移行するユーザー するユーザーに ユーザーに自動的に 自動的にSECADM権限 権限が付与される 付与される • ただし、SECADM権限にUSERタイプのIDがいないとき 移行後は各ユーザー、グループの権限の妥当性をチェックする 必要に応じてSYSADMから DBADMなどの権限を明示的にREVOKEする 18 © 2009 ISE Corporation 自動的に 自動的に作成 (参考)テスト結果 ~移行パターン1~ Instance User Security User SYSADM _GROUP BINDADD Y N N N CONNECT Y N N Y N CREATETAB Y N N DBADM Y N DBADM Y N Y CREATE_EXTERNAL_ROUTINE Y N CREATE_EXTERNAL_ROUTINE Y N N IMPLICIT_SCHEMA Y N IMPLICIT_SCHEMA Y N N LOAD Y N LOAD Y N N CREATE_NOT_FENCED_ROUTINE Y N CREATE_NOT_FENCED_ROUTINE Y N N QUIESCE_CONNECT Y N QUIESCE_CONNECT Y N N LIBRARY N N LIBRARY N N N SECADM N Y SECADM N Y N SQLADM N N N WLMADM N N N EXPLAIN N N N DATAACCESS Y N Y ACCESSCTRL Y N Y Instance User Security User AUTHORITIES BINDADD Y N CONNECT Y CREATETAB AUTHORITIES V9.5 手順:instance user にて実行 1. db2iupgrade <instance user> 2. db2 upgrade database V9.7 必要に応じて権限を revoke 19 © 2009 ISE Corporation 自動的に 自動的に作成 (参考)テスト結果 ~移行パターン2~ Instance User SYSADM _GROUP BINDADD Y N Y CONNECT Y N CREATETAB Y CREATETAB Y N DBADM Y DBADM Y Y CREATE_EXTERNAL_ROUTINE Y CREATE_EXTERNAL_ROUTINE Y N IMPLICIT_SCHEMA Y IMPLICIT_SCHEMA Y N LOAD Y LOAD Y N CREATE_NOT_FENCED_ROUTINE Y CREATE_NOT_FENCED_ROUTINE Y N QUIESCE_CONNECT Y QUIESCE_CONNECT Y N LIBRARY N LIBRARY N N SECADM N SECADM Y N SQLADM N N WLMADM N N EXPLAIN N N DATAACCESS Y Y ACCESSCTRL Y Y Instance User AUTHORITIES BINDADD Y CONNECT AUTHORITIES V9.5 手順:instance user にて実行 1. db2iupgrade <instance user> 2. db2 upgrade database V9.7 必要に応じて権限を revoke 20 © 2009 ISE Corporation ネットワーク機能強化 ネットワーク機能強化 21 © 2009 ISE Corporation ネットワークを流れるデータのセキュリティー強化 • AES暗号化 暗号化 256bit アルゴリズムを アルゴリズムをサポート • SSL通信 通信の 通信の設定を 設定を簡易化 22 © 2009 ISE Corporation AES暗号化の設定 • AUTHENTICATIONパラメータ パラメータが の場合 パラメータがSERVER_ENCRYPTの • ユーザーID、パスワードを暗号化する • 暗号化方法は 構成パラメータ 暗号化方法は ALTERNATE_AUTH_ENC DBM構成 構成パラメータで パラメータで設定 • 以前の DB2_SERVER_ENCALG は非推奨 NEW! • ALTERNATE_AUTH_ENC • NOT_SPECIFIED(デフォルト) • クライアントの暗号化アルゴリズムをサーバーが受け入れる • AES_CMP • クライアントがAESをサポートする場合、サーバーはAESで交渉 • クライアントがAESをサポートしない場合、DESで接続 • AES_ONLY • サーバーはAESのみ受け入れる • クライアントがAESをサポートしない場合、接続は拒否される 23 © 2009 ISE Corporation SSLクライアントサポートの拡張と構成の簡易化 • すべての non-Java DB2 クライアントを クライアントをサポート • CLI/ODBC Client • .Net Data Provider • Embedded SQL • CLP • SSL設定 設定が で可能 設定がDBM CFGで • 今までは SSLconfig.ini と SSLClientconfig.ini に設定 • 移行時は自動的に DBM CFG に設定される 24 © 2009 ISE Corporation サーバー側での SSL 設定項目(DBM CFG) • 新しいパラメーター しいパラメーター • SSL_SVR_KEYDB :Keystore DBファイル名(絶対パス) • SSL_SVR_STASH :Stashファイル名(絶対パス) • SSL_SVR_LABEL :デジタル署名のラベル • SSL_SVCENAME :SSL ポート オプション 25 • SSL_CIPHERSPECS :cipher suitesの暗号化方法 • SSL_VERSIONS :SSL と TLS バージョン © 2009 ISE Corporation クライアント側での SSL 設定項目 • DBM CFG 新しいパラメーター しいパラメーター • SSL_CLNT_KEYDB :Keystore DBファイル名(絶対パス) • SSL_CLNT_STASH :Stashファイル名(絶対パス) • CLI/ODBC用 用の新しいパラメーター しいパラメーター • ssl_client_keystoredb : Keystore DBファイル名(絶対パス) • ssl_client_keystash : Stashファイル名(絶対パス) • DB2 .Net Provider用 用の新しいパラメーター しいパラメーター 26 • SSLClientKeystoredb : Keystore DBファイル名(絶対パス) • SSLClientKeystash : Stashファイル名(絶対パス) • Security :SSL © 2009 ISE Corporation テスト ~SSL接続例~ SSL 1. SSLのクライアント Keystore DB を作成 1. SSLのサーバー Keystore DB を作成 2. クライアント鍵DBの stash file を作成 2. サーバー鍵DBの stash file を作成 3. サーバーのSSL証明書をインポート 3. SSL証明書を抽出 4. DBM CFG設定 4. DBM CFG設定 5. データベースカタログ *stash file : Keystore DBの暗号化されたパスワードファイル 27 © 2009 ISE Corporation テスト ~SSL設定:サーバー側 鍵と証明書の作成~ Keystore DB の作成 $ gsk7capicmd -keydb -create -db SeverKey_cms.kdb -pw password -type cms -expire 365 –stash 自己証明書の 自己証明書の作成 $ gsk7capicmd -cert -create -db SeverKey_cms.kdb -pw password -label cmskeylabel -dn "CN=db2.ibm.com,O=IBM,C=JP" -expire 365 -ca true 証明書の 証明書の抽出 $ gsk7capicmd -cert -extract -db SeverKey_cms.kdb -pw password -label cmskeylabel -target ServerCert.arm -format ascii 以下の 以下のファイルが ファイルが作成される 作成される $ ls –ltr -rw-------rw-------rw-------rw-------rw-r--r-- 28 1 1 1 1 1 yanav97 yanav97 yanav97 yanav97 yanav97 db2adm db2adm db2adm db2adm db2adm 80 80 129 125080 729 May May May May May 29 29 29 29 29 10:07 10:07 10:07 10:07 10:07 SeverKey_cms.rdb SeverKey_cms.crl SeverKey_cms.sth ← stash file SeverKey_cms.kdb ← keystore db ServerCert.arm ← certificate 証明書はClientに 送信する © 2009 ISE Corporation テスト ~SSL設定:サーバー側 DBの設定~ DBM CFGの CFGの設定 $ $ $ $ db2 db2 db2 db2 update update update update dbm dbm dbm dbm cfg cfg cfg cfg using using using using SSL_SVR_KEYDB /home/yanav97/ServerKey_cms.kdb SSL_SVR_STASH /home/yanav97/SeverKey_cms.sth SSL_SVR_LABEL cmskeylabel SSL_SVCENAME 60138 $ db2 get dbm cfg | grep SSL SSL SSL SSL SSL SSL SSL SSL SSL server keydb file server stash file server certificate label service name cipher specs versions client keydb file client stash file (SSL_SVR_KEYDB) (SSL_SVR_STASH) (SSL_SVR_LABEL) (SSL_SVCENAME) (SSL_CIPHERSPECS) (SSL_VERSIONS) (SSL_CLNT_KEYDB) (SSL_CLNT_STASH) = = = = = = = = /home/yanav97/SeverKey_cms.kdb /home/yanav97/SeverKey_cms.sth cmskeylabel 60138 別途SSL用のportをあける (/etc/services) 証明書を作成したときに指定したラベル名 29 © 2009 ISE Corporation テスト ~SSL設定:クライアント側 鍵DBの作成~ ikeymanを使用 新規データベースを作成 30 © 2009 ISE Corporation テスト ~SSL設定:クライアント側 Stashファイル作成~ CMSを選択 Keystore DBファイル名を指定 パスワードを設定 保存先ディレクトリを指定 有効期限を設定 Stash file を作成 Stash file が作成される 31 © 2009 ISE Corporation テスト ~SSL設定:クライアント側 証明書の追加~ 新規CA証明書を追加 32 © 2009 ISE Corporation ASCIIを選択 テスト ~SSL設定:クライアント側 証明書の追加~ 証明書ファイル名を指定 保存先ディレクトリを指定 ラベルを設定 証明書が追加された 33 © 2009 ISE Corporation Note: • ikeyman は、DB2に にバンドルされていますが のみ対応 に対応していない バンドルされていますが、 されていますが、Javaのみ のみ対応( 対応(CMSに 対応していない) していない) • <DB2 install Dir>¥java¥jdk¥jre¥bin¥ikeyman.exe • <instance home dir>/sqllib/java/jdk64/jre/bin/ikeyman • MQに にバンドルされている に対応 バンドルされている ikeyman はCMSに • <MQ install Dir>¥gskit¥jre¥bin • ikeyman以外 以外にも 、gsk7capicmd はDB2を をインストールしていれば 以外にも、 にも、keytool、 インストールしていれば使用可能 していれば使用可能 • keytool • <DB2 install Dir>¥java¥jdk¥bin¥keytool • <instance home dir>/sqllib/java/jdk64/jre/bin/keytool • gsk7capicmd • C:¥Program Files¥IBM¥gsk7¥bin¥gsk7capicmd • gsk8capicmd_64 • <instance home dir>/sqllib/gskit/bin 34 © 2009 ISE Corporation テスト ~SSL設定:クライアント側 DB設定~ 作成される 作成されるファイル されるファイル C:¥temp> dir | find “Client” 2009/05/29 10:22 80 2009/05/29 10:22 120,080 2009/05/29 10:22 80 2009/06/02 13:29 129 ClientKey.crl ClientKey.kdb ← keystore db ClientKey.rdb ClientKey.sth ← stash file DBM CFG 設定 C:¥> db2 update dbm cfg using SSL_CLNT_KEYDB C:¥temp¥ClientKey.kdb C:¥> db2 update dbm cfg using SSL_CLNT_STASH C:¥temp¥ClientKey.sth C:¥>db2 get dbm cfg | find “SSL“ SSL サーバー keydb ファイル (SSL_SVR_KEYDB) = SSL サーバー stash ファイル (SSL_SVR_STASH) = SSL サーバー証明書ラベル (SSL_SVR_LABEL) = SSL サービス名 (SSL_SVCENAME) = SSL 暗号仕様 (SSL_CIPHERSPECS) = SSL バージョン (SSL_VERSIONS) = SSL クライアント keydb ファイル (SSL_CLNT_KEYDB) = C:¥temp¥ClientKey.kdb SSL クライアント stash ファイル (SSL_CLNT_STASH) = C:¥temp¥ClientKey.sth 35 © 2009 ISE Corporation テスト ~SSL設定:クライアント側 DBカタログ~ DBの DBのカタログ C:¥> db2 catalog tcpip node SSLNODE remote x.xxx.xxx.xx server 60138 security ssl C:¥> db2 catalog db srcdb as SSLDB at node SSLNODE C:¥>db2 list node directory ノード名 コメント ディレクトリー項目タイプ プロトコル ホスト名 サービス名 セキュリティー・タイプ = = = = = = = SSLNODE = = = = = = = = = SSLDB SRCDB SSLNODE d.00 LOCAL TCPIP x.xxx.xxx.xx 60138 SSL C:¥>db2 list db directory データベース別名 データベース名 ノード名 データベース・リリース・レベル コメント ディレクトリー項目タイプ カタログ・データベース・パーティション番号 代替サーバー・ホスト名 代替サーバーのポート番号 36 リモート -1 © 2009 ISE Corporation テスト ~SSL接続~ C:¥>db2 connect to ssldb user yanav97 using xxxxx データベース接続情報 データベース・サーバー SQL 許可 ID ローカル・データベース別名 = DB2/AIX64 9.7.0 = YANAV97 = SSLDB gsk8sys.dllのライブラリーが見つからないとのエラーが出た場合は、PATHを設定 C:¥> set PATH=C:¥Program Files¥IBM¥gsk8¥lib; C:¥Program Files¥IBM¥gsk8¥bin;%PATH 37 © 2009 ISE Corporation テスト~SSL通信確認~ “Client Hello” SSLの最初のHandshake ※ wireshark を使用 38 © 2009 ISE Corporation 参考資料 • Technote: :Authorization errors due to changes to the SYSADM authority scope • http://www01.ibm.com/support/docview.wss?uid=swg21385801&myns=swgimgmt&mynp=OCSSEPGG&my nc=E • DB2インスタンス インスタンスの サポートの インスタンスのSecure Socket Layer(SSL)サポート サポートの構成 • http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.sec.doc/doc/t0 025241.html • DB2 technical tip: Set up Secure Sockets Layer (SSL) for DB2 on Windows • http://www.ibm.com/developerworks/data/library/techarticle/dm-0806sogalad/index.html • SSL の入門および ユーザーズ・ 入門およびikeymanユーザーズ および ユーザーズ・ガイド • http://publib.boulder.ibm.com/tividd/td/ITAME/SC32-1363-00/ja_JA/PDF/ss7aumst.pdf • GSK7c_CapiCmd_UserGuide • ftp://ftp.software.ibm.com/software/webserver/appserv/library/v61/ihs/GSK7c_CapiCmd_UserGui de.pdf • keytool • http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/tooldocs/solaris/keytool.html • SSL Return Codes • http://publib.boulder.ibm.com/infocenter/tsminfo/v6/index.jsp?topic=/com.ibm.itsm.tshoot.doc/r_p dg_retcodes.html • Wireshark • http://www.wireshark.org/ 39 © 2009 ISE Corporation ブランク・ ブランク・ページ 40 © 2009 ISE Corporation