SASを使った情報管理事例
~そしてリスクをやっつけろ~
惟高裕一,藤原正和,北西由武,吉田祐樹 塩野義製薬株式会社
Information Management by using SAS
- MINIMIZE THE RISK -
Yuichi Koretaka, Masakazu Fujiwara, Yoshitake Kitanishi, Yuki Yoshida Biostatistics Dept. SHIONOGI & CO., LTD.
要旨:
機密情報管理のためにフォルダのアクセス権設定を行うとき,SAS に精通していない方でもアクセス権設定が行えるようなSASプログ ラムを開発しました.その方法をご紹介します.
*本報告はSAS 9.2,Microsoft Office 2010, Windows server 2008 R2 standardでの設定を前提としています
キーワード:情報管理,コマンドプロンプト,xコマンド,PIPEエンジン, グローバル化
内容
• アクセス権管理の必要性
• SASプログラムによる管理方法
– SASプログラムの役割
– SASプログラムのポイント
• まとめ
3医薬品業界の現状
4開発のグローバル化
- 多極同時開発,国際共同治験 etc
開発に関わる人の増加,多様化
- 海外子会社,提携会社,CRO etc
臨床データや解析結果など,機密性の高
い情報管理の重要性が増している
- コンプライアンス違反のリスク
- 情報漏えいのリスク
SASサーバー (社内) 5 SASサーバー (社内)
シオノギの解析環境(これまで)
Project 1: STAT, DM, Programmer Project 2: STAT, DM, Programmer • 各極で独立したサーバーを持っていた • 作業も独立で行っていたため,情報管理は比較的容易であった Project 4: STAT, DM, Programmer Project 3: STAT, DM, Programmer SDD SASサーバー 6CPU: Intel Xeon Processor X5647 2.93 GHz, 4 Cores/8 Threads RAM: 16GB DISK: 2TB (RAID1) • 本社と子会社でドメイン間の信頼関係を結び,ユーザーアカ ウントの一元管理が可能となった. • 一方で,役割も多様となり情報管理も複雑になっている
シオノギの解析環境(これから)
Project 1: STAT, DM, Programmer Project 2: STAT, DM, Programmer Project 3: STAT, DM, Programmer Project 2: STAT, DM, Programmer SDD• PJ内での情報管理
– STAT,DM,Programmerによって作成・閲覧すべき情報が異なる• PJ外での情報管理
– PJ外の人には,機密情報にアクセスさせるべきでない – 機密性の高くない情報はPJ外の人にも参照可能としたい • 統計解析計画書(SAP),各種仕様書(spec類) など • ノウハウの蓄積 • PJ外の人も参照可能となるようにViewerという役割を追加した 7シオノギの解析環境(これから)
8 役割 特徴 STAT 当該PJの統計家 - 解析計画書作成 DM 当該PJのDM - SDTM spec作成,SDTM作成 Programmer 当該PJのプログラマー - ADaM spec作成,ADaM作成,解析資料作成 Viewer 当該PJ以外の人 - 他のPJの機密でない情報は閲覧可能業務プロセスごとに編集可能,閲覧のみ,閲覧不可,
といった具合に権利を付与する
業務プロセスごとに作業フォルダを分けることとした
シオノギの解析環境(これから)
STAT,Programmer
SDTM Data
Raw Data ADaM Data TLF
(解析 資料) DM DM,Programmer Programmer • DM以外編集 権は必要な い • Programmer, DMは編集権 が必要 • STATは閲覧 で良い • Programmer, STATは編集 権が必要 • DMは閲覧で 良い • Programmer は編集権が 必要 • STATは閲覧 で良い
SDTM Spec SAP, ADaM Spec TLF Spec, TLF Shells • ファイルの誤編集などのヒューマンエラーを防ぐ必要がある • ViewerはData類は閲覧できないが,spec類は閲覧できる
シオノギでの主なプログラミング業務プロセス
9 10 SDTMやADaM関連の フォルダの構造が示されている 出典 [1] FDAがeCTDで求めるmodule5の構造• FDAが提示した構造に加え,
TLFやSAP,TLF shellsを格納す
るフォルダを追加した社内独
自のフォルダ構造を構築した
フォルダをtemplate化
(全115folders)
• 上記で構築したフォルダ別,
役割別にアクセス権を細かく
定義
していった
シオノギが作ったフォルダ構造eCTDへの対応
シオノギが作ったフォルダ構造 (例)
11
権限 特徴
C Read and Write
R Read Only N Cannot Access Viewer R R N N C C R R stat XPT
• PJと役割に応じてユーザーグループを作成する (ex. PJ名_STAT)
• 役割に応じて,フォルダごとにユーザーグループのアクセス権
を設定する
– Ex.) ADaM spec,TLF spec格納フォルダはViewerが閲覧可能である – Ex.) TLF出力フォルダはViewerは閲覧すべきでない 12
アクセス権管理の具体的方法
• アクセス権管理が複雑になってしまうことは不可避であった
• PJメンバーの追加,異動による変更には機敏に対応する必要がある
手動での管理には限界があるため自動化したい!
アクセス権管理の自動化
自動でExcelから情報を読み取り,DOSコマンドでアクセス権を設定し, それらの管理ログを出力をする必要があった 13• アクセス権設定を容易に行いたい
– 複雑な設定に対応したDOSコマンドで行う• サーバー管理者,ユーザーの使いやすさも重視したい
– 各PJ主担当者がアクセス権設定の申請を行う手順が複雑になると不便で あるため,Excelに数個の情報を入力してもらうだけにした – サーバー管理者がSASやDOSコマンドに精通していないことを想定した• アクセス権設定の変遷も辿れるようにしたい
– 有事の際に参照する必要があるため,ログを出力し管理を行う データハンドリングが容易で,他のソフトウェアとの連携も可能な SASで管理することとした内容
• アクセス権管理の必要性
• SASプログラムによる管理方法
– SASプログラムの役割
– SASプログラムのポイント
• まとめ
14SASプログラムによる管理体制
15 1. PJ主担当者が,PJ名,プロトコル名,ユーザー名と役割を申請書(Excel)に入力して サーバー管理者に依頼 2. サーバー運用責任者が不自然な申請がないか確認,サーバー管理者に実行を指示 3. サーバー管理者がExcelからSASプログラムを実行,Excelの情報が抽出される 4. SASプログラムがコマンドプロンプトを実行 5. コマンドプロンプトの実行ログをテキストに出力する 6. コマンドプロンプト実行後のアクセス権の状況を出力する 7. SASプログラム自体の実行ログを出力する 1 2 4 5 6, 7 3 3 ユーザー サーバー運用責任者 サーバー管理者 申請書 ログ 16Excelの申請フォーム
ユーザーの追加,削除ともに対応 ユーザー名を入力すると, 自動で入力される サーバー管理者はSAS やDOSコマンドに精通し ていなくても良い サーバー運用責任者が入力内容を確認して, サーバー管理者が実行ボタンを押すとプログラムが走る ユーザーはこれらの情報を 入力するだけで良い project: protocol: PROG VIEWフォルダごとユーザーグループごとにアクセス権を割り当てる
- x “icacls …./&project.-&protocol./analysis /grant:r &project._PROG:(CI)(R)“ ; - x “icacls …./&project.-&protocol./tabulations /grant:r &project._DM:(CI)(R)“ ;
templateをコピーしてPJ名, protocol名でリネームする 17 申請フォームの情報を マクロ変数化する template &project.-&protocol.
SASプログラムの役割 (1/2)
templateフォルダのコピーとユーザーグループのフォルダへの
アクセス権付与
&protocol. &project. 新規のPJであれば, ユーザーグループを作成する- x “net localgroup &project._STAT /add” ;
template (全115 folders) VIEWER 18
SASプログラムの役割 (2/2)
ユーザーグループへのユーザーの割り当て
申請フォームの情報をマクロ変数&データセット化する 矛盾する申請 (グループに割り当てられていないのに削除 etc) があればエラーを出力 &project._[group name] DOSコマンドを格納した変数を作る xコマンドで実行 PROG VIEWER PROG PROG VIEWERSASプログラムのポイント (1/3)
19
• ExcelからのSASプログラム実行
retval = Shell(“[SAS.exeファイルのパス] -config
D:¥Progra~1¥SAS¥SAS9.2¥SASFoundation¥9.2(32-bit)¥nls¥1d¥SASV9.CFG -sysin [SASプログラムファイルのパス]
-log [保存するログのパス]") VBA, SASバッチ実行 指定したSASプログラムを実行してそのログを指定したファイル名で残すことが可能
SASプログラムのポイント (2/3)
20• SASからのコマンドプロンプト実行
xコマンド, icacls,robocopy など • フォルダへの指定したグループに編集権限を与えるx “icacls [フォルダ名] /grant:r [グループ名]:(OI)(CI)(M) /T /C“;
• フォルダ自体のアクセス権継承機能を無効にする
x “icacls [フォルダ名] /inheritance:d“ ;
• フォルダtemplateのコピーは下記のコマンドで行う
x “robocopy [folder path1] [folder path2] /E /COPYALL /MIR“ ;
SASプログラムのポイント (3/3)
21
• ユーザーグループの情報などを取得
filename data1 PIPE "net localgroup“ ; data temp ;
infile data1 dlm='09'x ; length TEMP $100 ; input TEMP $ ; run;
PIPEエンジン, net localgroup など • 現状のユーザーグループを 確認する場合 _VIEWER _VIEWER _VIEWER PROG PROG PROG PROG ①コマンド実行 ②結果を受け渡し PIPEエンジン