当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2015年2月9日月曜日

フィールドの暗号化(4)・・・特殊フィールドを使って文書のフィールドを暗号化する

皆さん、こんにちは。
今日2月9日は河豚の日だそうですが、私は「肉の日」と思ってます(笑)。
うん、今日の夕飯は肉を食べよう!

そんなことはどうでもいいですので、
にほんブログ村 IT技術ブログへ
をクリックして先に進みましょう。


今日も文書のフィールドを暗号化する方法についての話です。
昨日までの話は、
フィールドの暗号化(1)・・・暗号キーを作成する
フィールドの暗号化(2)・・・暗号キーをマージする
フィールドの暗号化(3)・・・文書のフィールドを手動で暗号化する
を読んでくださいね。

さて、昨日は文書のプロパティを使って、一度保存した文書を暗号化するという事を行いました。
簡単にできて分かり易いのは良いのですが、一度文書を保存しないといけないというのが難点ですね。

今日はノーツDBにちょこっと細工を施すことで、文書の新規作成時から文書のフィールドを暗号化できるようにします。

利用するノーツDBは昨日の記事で作成したものを利用します。

細工を施す場所は、フォームの「MainTopic」です。
Domino Designerでこの「MainTopic」フォームを開きます。

そうしたら、下記のフィールドを任意の場所に追加します。
No.フィールド名フィールドの種類フィールドの種類説明
1SecretEncryptionKeysテキスト編集可能シークレット暗号キーの名前

下図は実際に追加した画面です。
フォームにフィールドを一つ追加

できたら、フォームを保存します。
これで終了です。なんとまぁ簡単ですね。

では、どのように文書を作成すれば良いのかを見ていきましょう。

なにはともあれ、新規に文書を作成します。
「タイトル」「カテゴリ」「本文」には適当にデータを入力します。

「暗号化データ」(AngouData)には、暗号化したいデータを入力します。
まだ、この時点では文書は暗号化されていないので、周りに見ている人がいないか、気にしながら入力してください(笑)


そして、「暗号キー」(SecretEncryptionKeys)フィールドですが、ここは、作成したシークレット暗号キーの名前直接入力します。

直接って・・・
ヘルプを見たのですが、シークレット暗号キーの一覧を取得する方法はどうも用意されていないようです。なんて面倒なんでしょう・・・
と、愚痴はさておき、ここは先日作成したシークレット暗号キーの名前である「test」と入力しましょう。

こんな感じで入力してみました。
新規文書の作成

では、文書を保存してみます。
一瞬ですが、ステータスバーに 「文書を暗号化します...」というメッセージが表示されます(メッセージは履歴として確認することができます(下図))。
文書を保存したときのステータスバー

どうやら文書の暗号化に成功したようです。
では、例によって文書を開きなおしてみましょう。

暗号キーを持っていないユーザが文書を開いた場合の画面です。
文書の復号に失敗

はい。ちゃんと暗号化データが見えないことが確認できました。


これで、「SecretEncryptionKeys」というフィールドにシークレット暗号キーの名前を入力することで、文書のフィールドを暗号化できるという事が分かりました。
これは予約フィールド名になっているので、このような動きをするのです。
文書の暗号化をしたくない場合は、このフィールドに何も入力しなければよいです。

また、存在しない暗号キーを入力して文書を保存しようとすると、下図のようにエラーが表示されますので、変な値を入力してデータが見れなくなってしまう!という心配は不要です。
存在しない暗号キーの名前を入力した場合

ちなみに・・・
昨日の記事で書いた、文書のプロパティで「シークレット暗号キー」を選択するという方法を紹介しましたが、あれも実は同じことをしているのです。
ですので、文書を保存すると、「SecretEncryptionKeys」というフィールドに格納されるんですね。

昨日のブログの最後の画像をよぉく見ると、「SecretEncryptionKeys」というフィールドがあるのが確認できます。


ヘルプを見ると、シークレット暗号キーの名前の管理は自分で行う必要がある感じです。
手動入力させたくないのであれば、フィールドをダイアログリスト等にして選択肢として保存しておくようにと書いてありました。



次回は、このブログらしくLotusScriptで文書の暗号化を行う方法を紹介します。
では、今日はこの辺で・・・







【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: