7月開催
■テーマ 「IBM Verse オンプレミス」の構築体験
■日時 2017年7月11日(火) 13:30~17:00
■場所 日本アイ・ビー・エム本社(箱崎事業所)

8月開催
■テーマ 「フィールドの暗号化」技術検証
■日時 2017年8月8日(火) 13:30~17:00
■場所 日本アイ・ビー・エム本社(箱崎事業所)

7月開催と8月開催では、検証用の環境で「IBM Verse オンプレミス」の構築体験と、フィールドの暗号化の検証を行いました。

「IBM Verse オンプレミス」導入体験

IBM VerseのユーザーインターフェースをオンプレミスのDominoサーバー上で利用する為のパッケージで、オプションでIBM Connectionsに統合でき、IBM Connections内のコンポーネントを利用できます。
https://www.ibm.com/support/knowledgecenter/ja/SS4RQV_1.0.1/welcome/vop_welcome.html

今回は検証用の環境を用意し、Dominoサーバーのインストールから、Verse オンプレミスの導入まで、全ての工程を1日で行いました。

①Dominoサーバーのインストール
IBm Verse オンプレミスの動作要件として、IBM Domino 9.0.1 FP8 Intrim Fix3以上が必要となります。
検証環境上にDomino 9.0.1、ランゲージパック、FP8、Intrim Fix3の順でインストールしていきます。
インストール後、Dominoサーバーの初期セットアップを行いますが、特に気を付ける点はありませんでした。

②Dominoサーバーの設定
Dominoサーバーの初期セットアップ後、Dominoサーバーが起動したら、IBM Verse オンプレミス用の設定を行いました。
サーバー文書の「インターネットプロトコル」タブ → 「Domino Web Engine」タブ→「 出力にUTF-8を使用」を「はい」に変更し、保存。
一旦、Dominoサーバーを停止させ、Notes.iniに以下のJavaVM関連のパラメーターを追加しました。
HTTPJVMMaxHeapSize=1024M
HTTPJVMMaxHeapSizeSet=1

保存後、再度Dominoサーバーを起動しました。

③SSLの有効化
DominoサーバーがHTTPSで通信できる様、証明書の導入と必要な設定を行います。
証明書のファイルをDominoサーバーのDataフォルダ配下に配置し、サーバー文書の「ポート」タブ → 「インターネットポート」タブ→「SSLキーファイル名」に証明書のファイル名を入力し、同じく、「ポート」タブ → 「インターネットポート」タブ→「Web」タブ → 「SSLポートステータス」を「有効」に変更し、保存しました。

Dominoサーバーを再起動し、HTTPSで通信できるかの確認を行いました。
※今回は検証ですので、実物の証明書は使用せず、OpenSSL等を使用し、自己署名証明書を作成し、利用しました。

④ID Vaultの設定
DominoサーバーにID Vaultを導入します。
Domino Administratorクライアントから、「設定」タブ で 「ツール」ペインを展開し、「IDボールト」→「作成」クリックし、VaultDBの作成などを行います。Dominoサーバーを再起動し、ID Vaultが正常に動作しているかを確認しました。

⑤Verseオンプレミスパッケージの導入
事前の準備が完了したので、いよいよIBM Verseオンプレミスパッケージを導入します。
まず、DominoサーバーのHTTPタスクのみ停止します。
IBM Verseオンプレミスパッケージのファイルを解凍すると作成されるファイルの内、以下のファイルをDominoサーバーのDataフォルダ配下にコピーします。

VOPDesign.nsf
iwaredir.ntf 

同じく、解凍されたIBM_Verse_On_Premise.zipをさらに解凍し、作成されるファイルを、フォルダごと、<Dominoデータフォルダ>\domino\workspace\applications\eclipse以下にコピーします。

コピーが完了したら、HTTPタスクを起動します。
HTTPタスクが起動したら、Dominoサーバーのコンソールに以下のコマンドを投入します。

keymgmt create nek credstore
keymgmt create credstore credstore

⑥ユーザーメールファイルの変更
Verseオンプレミスを利用する為には、ユーザーのメールファイルに2つビューが必要となりますので、メールテンプレートに導入します。
先の手順でコピーしたVOPDesign.nsfをDomino Designerクライアントを使用して開き、メールテンプレートにコピーします。
コピーするビューは以下の2つのビューです。

($VerseLookup)
($VerseTrashLookup)

テンプレートをユーザのメールファイルに反映する為、Dominoサーバーのコンソールに以下のコマンドを投入します。

load design

変更された設計が反映されたら、ユーザーのメールファイルとDominoDirectoryに全文索引を作成します。

⑦IBM Verseオンプレミスを試す
準備が整いましたので、IBM Verseオンプレミスを試します。
ブラウザを起動し、「https://<FQDN>/Verse」と入力します。

ユーザー認証後、IBM Verseオンプレミスのインターフェーズが表示されます。

Verseオンプレミス

iNotesの画面とはかなり違います。
Connectionsの環境と連携すれば、もっといろいろな機能が使えますが、今回はここまでです。

 

ーーーーーーーーーーーーーーー

フィールドの暗号化の検証

フィールドに暗号化を施し、文書内のフィールドの参照ユーザーを絞る機能を検証しました。

文書とフィールドを暗号化する
https://www.ibm.com/support/knowledgecenter/ja/SSVRGU_9.0.1/basic/H_DOCUMENT_AND_FIELD_ENCRYPTION_OVERVIEW.html


同じような事は、読者名フィールドであったり、フォームのセクションに参照可能なユーザーを設定する方法があります。
しかし、これらの機能では、参照可能なユーザーを変更する場合、文書を開き、読者名の一覧が格納されているフィールドを更新したり、フォームの設計を修正したりする必要があります。

フィールドの暗号化では、参照させたいユーザーに暗号化キーを取り込んでもらうだけで参照権を与える事が出来る為、意外と便利な様です。
検証では標準テンプレートの掲示板を作成し、新規に暗号化するフィールドを作成し、検証を行いました。

①暗号化キーの作成
暗号化を行う為に、まず「シークレット暗号化キー」を作成します。
シークレットキーは、Notesクライアントのファイルメニューから、「ファイル]→「セキュリティ」→「[ユーザーセキュリティ」を選択し、ユーザーセキュリティーダイアログから、さらに、「IBM Notes データ」タブ→「文書」→「シークレットキーの作成」ボタンから作成します。

シークレットキーの作成



②掲示板フォームに暗号化のフィールドを作成
検証用に作成した掲示板DBをNotesDesignerクライアントで開き、「メイントピック」フォームに2つフィールドを追加します。

掲示板フォーム修正


1つは、シークレットキーを持っていないユーザーには暗号化されるフィールドで、もう一つは暗号化キーとして使用するシークレットキー名を入力する為のフィールドです。
暗号化され、見えなくなるフィールドの名前は任意の名前を付けられます。

フィールドオプションの「詳細」タブ(プロペラつき帽子?)の「セキュリティーオプション」に「このフィールドを暗号化する」にチェックを付け、フィールドを暗号化できるように設定します。

シークレットキー名を入力するフィールド名は「SecretEncryptionKeys」という名前である必要が有ります。
「複数値も可」のオプションにチェックを付けます。

フィールドオプション


③暗号化の検証
新規文書を作成します。
シークレットキー名には、先の手順で作成しておいたシークレットキーの名前を入力します。

掲示板文書


シークレットキーを持っているユーザーで、文書を参照します。
暗号化されたフィールドの内容も普通に表示されます。

掲示板文書


シークレットキーを持っていないユーザーに切り替えて、文書を参照します。
暗号化されたフィールドの内容は表示されません。

掲示板文書


仕組みとしては、「SecretEncryptionKeys」という予約名フィールドを使用し、シークレットキー名を指定すると、実際に暗号化が行われるという事が理解できました。


④XPagesで暗号化/復号化
暗号化の仕組みについて理解しましたので、次はNotes/Domino 9.0.1FP8の新機能の「XPage を使用した Domino での文書の暗号化と暗号化解除」を検証しました。

これまでのバージョンでは、文書の暗号化/復号化は、暗号化の為のシークレットキーはIDファイルに格納されている為、Notesクライアントでしか行えないということが、主な理由だったようです。
9.0.1 FP8からは、ID Vault上のIDファイルからシークレットキーを取得するという手法でWeb上のXPagesでも、暗号化/復号化を実現している様です。

検証を行うにはXPagesの知識が必要となりますので、XPages有識者を振り分ける形でチーム編成を行い、検証を行いました。

Notesクライアントでの暗号化検証で使用したDBをDomino Designerクライアントで開き、アプリケーションの構成→Xspプロパティの画面で、「Enable document encryption for this application」というプロパティがありますので、チェックを付けます。
文字通り、文書の暗号化を使用可能にする設定です。

文書を保存するプログラムを、以下の様な内容で作成します。

1.IDVaultオブジェクトを作成。
2.IDVault から特定ユーザのUserIDを取り出す。
3.特定ユーザのUserIDで使用可能な秘密鍵の一覧を取得。
4.秘密鍵で文書を暗号化。
5.文書を保存。

プログラムコードにすると、以下の様な感じになります。

var sKeys:java.util.Vector = new java.util.Vector();
var docBackend:NotesDocument = document1.getDocument(true);
var scKey = "<選択した暗号キー>";
var svrName = dominoIDVaultBean.getServerName();
var usrName = dominoIDVaultBean.getUserName();
var passWd = dominoIDVaultBean.getUserPassword();
 
if (passWd != null && scKey != "") {
    var idVault:NotesIDVault = session.getIDVault();
    var usrId:NotesUserID = idVault.getUserID(usrName, passWd, svrName);
     
    sKeys.addElement(scKey);
    docBackend.setEncryptionKeys(sKeys);
    docBackend.encrypt(usrId);
}

docBackend.save( true, true, true );

完成後に実行すると、文書が暗号化され、シークレットキーを持っていないユーザでは暗号化されたフィールドの情報は表示されない状態となりました。同様に、復号化についても、同様の手法でシークレットキーを取得し、復号化する事が出来ました。

今回の暗号化/復号化については、研究会メンバーからも高評価の検証となりました。

研究会メンバー 中原