Slide 1

Slide 1 text

読者/作成者 フィールド セキュリティ小噺 中野晴幸 Haruyuki Nakano harunakano.blogspot.com (blog)

Slide 2

Slide 2 text

セキュリティにもいろいろありますが.. • サーバー設置場所への入室 • コンソールへのログイン • Dominoサーバーのアクセス制御 (サーバー文書) • データベースの暗号化(主にローカ ルにあるもの) • データベースのアクセス制御(ACL) • 文書のアクセス制御(読者フィールド /作成者フィールド) • フィールドの暗号化 など

Slide 3

Slide 3 text

今回は、文書のアクセス制御の話です

Slide 4

Slide 4 text

「DBの」アクセス制御と言えばACLですが 【アクセスレベル】 管理者 設計者 編集者 作成者 読者 投稿者 なし ACL (アクセス・コントロール・リスト) 【追加できるもの】 ユーザー サーバー グループ

Slide 5

Slide 5 text

読者フィールド 作成者フィールド 「文書の」アクセス制御と言えば

Slide 6

Slide 6 text

既存の文書への操作を許可します 読者フィールド • 文書の閲覧を許可 作成者フィールド • 文書の閲覧・編集を許可

Slide 7

Slide 7 text

許可する対象 読者フィールド • 文書の閲覧を許可 ユーザー サーバー グループ ロール *(ワイルドカード) 作成者フィールド • 文書の閲覧・編集を許可 ユーザー サーバー グループ ロール *(ワイルドカード)

Slide 8

Slide 8 text

影響するACLのアクセスレベル 読者フィールド • 文書の閲覧を許可 管理者 設計者 編集者 作成者 読者 作成者フィールド • 文書の閲覧・編集を許可 閲覧 編集 管理者 設計者 編集者 作成者 読者 作成者

Slide 9

Slide 9 text

アクセス 作成 閲覧 更新 削除 管理者 可能 ※3 可能 ※2 設計者 可能 ※3 可能 ※2 編集者 可能 ※3 可能 ※2 作成者 ※1 ※3 ※4 ※2 ※4 読者 ※3 投稿者 可能 なし 可能となる条件 ※1: ACLエントリに「文書の作成」のチェックがある ※2: ACLエントリに「文書の削除」のチェックがある ※3: 読者(または作成者)フィールドが文書に存在する場 合、自身が関連する値を含むか値が無い ※4: 作成者フィールドが文書に存在する場合、自身が関 連する値を含む 読者フィールドは、アクセス「管理者」~「読 者」まで影響する 作成者フィールドは、アクセス「作成者」のみ 影響する

Slide 10

Slide 10 text

タイプは「読者」「作成者」「名前」の3種類 フィールドフラグ 名前の階層 検索オプション 名前フィールドの特徴

Slide 11

Slide 11 text

フィールドのタイプ 読者フィールド 作成者フィールド

Slide 12

Slide 12 text

フィールドフラグ 読者フィールド 作成者フィールド

Slide 13

Slide 13 text

名前の階層を自動変換 フィールドの表示と入力 保存される値 階層名の構成要素ラベルを省略 階層付きの名前表現に自動変換される

Slide 14

Slide 14 text

検索オプション

Slide 15

Slide 15 text

読者フィールドについて 文書の閲覧を制限する

Slide 16

Slide 16 text

読者フィールドの効能 • 文書の閲覧を許可します • 文書の閲覧を許可されない文書は、 • ビューに表示されません • LotusScript等のプログラムからアクセスできません

Slide 17

Slide 17 text

アクセスレベルとフィールドの「読者」 アクセス:読者 • データベースへのアクセスを許 可します • 文書の閲覧を許可します 読者フィールド • アクセス「管理者」~「読者」に よる文書の閲覧を制限します

Slide 18

Slide 18 text

読者が文書を作成しようとすると… フォームを使わず LotusScript のバックグラウンド系のクラスを使い文書を 作成しようとすると、Saveメソッドでエラーとなり、作成できない。

Slide 19

Slide 19 text

読者フィールドの使い方 • 文書の閲覧を許可する対象を値としてセットします • 読者フィールドへセットする値 • ユーザー • サーバー • グループ • ロール • ワイルドカード “*”

Slide 20

Slide 20 text

読者フィールドが影響するアクセスレベル • 管理者 • 設計者 • 編集者 • 作成者 • 読者

Slide 21

Slide 21 text

読者フィールドを追加する フォーム上の読者フィールド フォームのプロパティ 文書のプロパティ

Slide 22

Slide 22 text

フォーム上の読者フィールド

Slide 23

Slide 23 text

フォームのプロパティ 設定した値は読者フィールド の属性を持つ $Readers アイ テムに保存されます 「このフォームで作成した文書のデ フォルトのアクセス権」で「読者以上 すべて」のチェックを外し、許可する 対象にチェックを付けます

Slide 24

Slide 24 text

文書のプロパティ • 文書を編集可能なユーザーは、 文書のプロパティのセキュリティ タブで、「読者以上すべて」の チェックを外し、許可する対象に チェックを付けます • ここで設定した読者のリストは読 者フィールドの属性を持つ $Readers アイテムに保存され ます

Slide 25

Slide 25 text

制限した文書へアクセス

Slide 26

Slide 26 text

読者フィールドのフラグと値

Slide 27

Slide 27 text

ビューに表示されない 許可されている 許可されていない

Slide 28

Slide 28 text

文書リンクで開かない 閲覧を許可されていないユーザーが文書リンクから文書を開こうとしたり、文 書を作成しようとしてフォームを開こうすると「操作を実行する権限がありま せん」(You are not authorized to perform that operation)と表示 され、文書は開きません

Slide 29

Slide 29 text

ブラウザで開かない ユーザーが閲覧を制限されている文書へブラウザからアクセスすると401が 戻ります

Slide 30

Slide 30 text

プログラムでアクセスできない ユーザーが閲覧を許可されていない文書へ LotusScript を使ってアクセスしてもエラーにはなり ませんが、プロパティやアイテムから値を取得することは できません

Slide 31

Slide 31 text

よくある疑問 フィールドが無い フィールドに値が無い 複数のフィールド

Slide 32

Slide 32 text

読者フィールドが無い文書は… • アクセス「読者」以上は閲覧可能です

Slide 33

Slide 33 text

読者フィールドに値が無い文書は… • アクセス「読者」以上は閲覧可能です

Slide 34

Slide 34 text

複数の読者フィールドが存在する文書は… • それぞれの読者フィールドで指定されている名前を累積したもの が閲覧可能です • どれか1つの読者フィールドに値が無い場合、値があるフィールド で指定されている名前のみ有効です • 全ての読者フィールドの値が無い場合、アクセス「読者」以上であ れば閲覧が可能です

Slide 35

Slide 35 text

作成者フィールドと 「アクセス:作成者」 文書の編集を制限する

Slide 36

Slide 36 text

文書の作成を制限する簡易的な方法 • 新規フォームを開くアクションボタンを表示しない • フォームで作成できるユーザーを制限する • フォームのイベントで開く操作を制限する • フォームのイベントで保存の操作を制限する • ビュー上でペーストする操作を制限する これらはバックグラウンド・エージェントによる文書の作成を 制限しません

Slide 37

Slide 37 text

文書の作成を完全に制限するには • アクセス「作成者」のオプションで「文書の作成」をオフにします

Slide 38

Slide 38 text

作成者フィールドは何のためにあるの?

Slide 39

Slide 39 text

作成者フィールドの効能 • アクセス「作成者」に次の権限を許可します • 文書の作成 ※別途オプションで「文書の作成」の許可が必要 • 文書の閲覧 • 文書の編集 • 文書の削除 ※別途オプションで「文書の削除」の許可が必要 • アクセス「読者」以上に次の権限を許可します • 文書の閲覧 • フィールドのデフォルト値を指定しなければ、文書の作成者自身のアカ ウントを自動でセットします

Slide 40

Slide 40 text

アクセス「作成者」と「編集者」の違い 作成者 • 自身に関連する値を作成者 フィールドに含む場合に限りそ の文書を編集できる 編集者 • 閲覧できる文書を編集できる

Slide 41

Slide 41 text

作成者フィールドの使い方 • 既存文書の編集を許可する対象を値としてセットします • フィールドへセットできる値 • ユーザー • サーバー • グループ • ロール • ワイルドカード “*”

Slide 42

Slide 42 text

よくある疑問 フィールドが無い フィールドに値が無い 複数のフィールド

Slide 43

Slide 43 text

作成者フィールドが無い場合 • アクセス「作成者」は文書を編集できません

Slide 44

Slide 44 text

作成者フィールドに値が無い場合 • アクセス「作成者」は文書を編集できません

Slide 45

Slide 45 text

複数の作成者フィールドが存在する場合 • アクセス「作成者」は、自身に関連する値がいずれかの作成者 フィールドに存在すれば、文書を編集できます

Slide 46

Slide 46 text

【参考】まぎらわしいプロパティ項目 作成者フィールドが作成さ れるわけではありません アクセス「作成者」以上の ユーザーがこのフォームを 使って新規に作成する事に 影響します 「フォームで文書を作成できるユーザー」 で「作成者以上すべて」のチェックを外し、 許可する対象にチェックを付けます

Slide 47

Slide 47 text

私が遭遇した失敗たち 反面教師

Slide 48

Slide 48 text

存在しない名前で、許可無し タイプミス、全角文字で指定、ハイフンなど記号の文字コード違い、誤字脱字など ➢ 検索オプションを活用しましょう ロール名に[]が無い 本来複数の値のところ区切り文字の誤りで単一の値になっている 文書を誰も閲覧できなくなった場合、[フルアクセスアドミニストレーション]を使用でき るユーザーへ対応を相談しましょう

Slide 49

Slide 49 text

階層無しで、許可も無し 編集可能 CN=admin/O=v 10 編集不可 ichiro suzui/v10

Slide 50

Slide 50 text

プログラムで作成した文書の権限が変 LotusScript等のプログラム言語で作成した文書の読者フィールドで IsReaders 属性を True にせず、皆が閲覧できてしまったり、同様に作成者 フィールドで IsAuthors 属性を True にせず、アクセス「作成者」のユーザー が文書を編集できない、といったことがあります。 HCL Master 御代様のブログ記事に記載のコードのサンプルが参考になりま す 作成者フィールドを変更する https://guylocke.blogspot.com/2008/09/blog-post_05.html 読者フィールドを変更する https://guylocke.blogspot.com/2009/01/isauthorsisreaders-cnxxxx-xxxxoyyyyxxxx.html

Slide 51

Slide 51 text

複製先に閲覧権なく、文書も無し 読者フィールドによって複製先のサーバーの閲覧が制限されていることで、文 書が複製されないケースがあります。 すべてのサーバーが、すべての文書を閲覧できるよう設定しましょう(ただし、す べてのサーバーにすべての文書を複製する必要がない場合を除きます)。

Slide 52

Slide 52 text

制限超えで、許可無し 読者/作成者フィールドにはSUMMARY属性があり、フィールドの SUMMARYデータは32Kを超えられないという制限があります。 ※未確認ですがODS53以降は制限が64Kに改善されているかも? 32Kを超えたデータでは、入力されているユーザーが実際には権限が有効に なっていない、といったことがあります。 こういった場合はグループやロールの使用を検討しましょう。

Slide 53

Slide 53 text

ビュー表示の遅延 Notesは、ユーザーがビューを開くと、NIFへページ(ここでは約30行とします) を要求します NIFはユーザーが閲覧権限のあるエントリだけをページへセットしNotesへ返し ます。 • 全ての文書を閲覧できるユーザーの場合、最初の30件を走査してページが満たさ れます。そのため、クライアントはビューをすぐに表示できます。 • 全文書のうち10%だけ閲覧できるユーザーの場合、NIFが閲覧権限のあるエントリ だけページへセットするために、全件閲覧できるユーザーよりも10倍のエントリを走 査しなければなりません。そのため走査にかかる時間がクライアント側のビュー表示 の遅さに直結する場合があります。

Slide 54

Slide 54 text

ご清聴ありがとうございました