貴社ではz/OSをバージョンアップする際、RACFデータベースの移行について課題となることはありませんか? IRRUT200などのユーティリティで簡単にコピーできれば良いのですが、仕様変更などに伴い、すべての定義を再度登録し直さなければならないことがあります。
その時に役立つツールは無いのか探してみました。
IBM社のツール群
IBM社のRACF開発チームでは運用管理に役立つツール群(15種類以上)を提供しており、その中にDBSYNCというツールがあります。このツールは2つのRACFデータベースの内容を比較して違いを見つけ、それらを同期するためのRACFコマンドを生成します。
生成されたRACFコマンドはREXX形式のため、z/OS V1R11からRACFに正式に導入された、IRRXUTILと呼ばれるREXXインターフェースを利用してRACF登録コマンドを実行することができます。
尚、DBSYNCはz/OSバージョンアップ以外にも、例えば複数システムを運用されている場合、両システムのRACFデータベースの違いを確認することなど、色々な場面に応用できます。
DBSYNCについて
DBSYNCは、アンロードされた2つのRACFデータベースを処理し、データベース間の差異を判別し、可能な場合はそれらの差異を訂正するコマンドを含むREXX execを生成します。
コマンドを実行すると、事実上、データベースが同期されて同じ内容になります。あるいは、DBSYNCを単一の入力データベースで実行して、データベース内のプロファイルを再作成するか、データベースからプロファイルを削除するために使用できるコマンドを作成することもできます。
DBSYNCは、データベース内のすべてのプロファイルを処理するモード、または指定されたクラスのプロファイルのみを処理するモードで使用できます(DBSYNCドキュメントより抜粋)。
(備考) IRRXUTIL関係のユーティリティは下記のページからダウンロード可能です。
https://github.com/IBM/IBM-Z-zOS/tree/master/zOS-RACF/Downloads
DBSYNCの利用
z/OS 2.3からz/OS 2.4へのバージョンアップをする際に、DBSYNCを利用してRACFデータベースを移行しました。その時色々明らかになった点についてご紹介致します。尚、移行は以下の手順で実施しました。
- RACFデータベースをIRRUT200でコピー&チェック
- コピーRACFデータセットをIRRDBU00でアンロード
- DBSYNCで同期させるREXXコマンドファイルを生成
- 生成されたREXXコマンドファイルをIRRXUTILで実行
- 更新されたRACFデータベースを検証
DBSYNCではA、B2つのRACFデータベースを元に2種類のREXXコマンドファイルを生成します。AからBに同期するためのコマンド、BからAに同期するためのコマンドです。生成されたREXXコマンドファイルは、TSOバッチのSYSTSINとして実行しRACFデータベースを更新します。尚、TSOバッチを実行する場合には、SPECIAL権限を持つユーザーで実行します。
複雑なRACFの管理、正しくできていますか?Vanguard RACF研修コース
DBSYNC経験談
生成されたREXXコマンドはそのまま利用できないため、事前に修正作業が必要でした。それは以下の理由によります。
プロファイルでseclevels、categories、またはseclabelsを使用していないにも関らず、生成されたコマンドにseclevelが記述されていたため、その部分を消去する必要がありました。
ユーザーID登録コマンドには何故かKEAFESパラメータが追加されていたため、その部分の消去する必要がありました(そのまま実行するとエラーになるため除去)。
当然のことですが、ユーザーIDのパスワードやパスワードフレーズは一方向関数で生成されておりIRRDBU00でアンロードできないため、DBSYNCで同期させることはできません。
尚、RACFデータベースから別のデータベースにパスワードをコピーするPWDCOPYユーティリティが存在しますが、今回は時間切れで確認に至りませんでした。
RACFデータベースの検証
更新結果の検証作業には比較機能が便利です。
残念ながらRACF標準機能には存在しないため弊社で販売代理店をしております、Vanguard社のAdministratorを利用して設定された権限やプロファイル内容を比較して対応しました。
下記のブログ記事やAdministratorのページもご参考ください。