管理機能/ Management
渡したあとに、見る・止める・調べる
共有リンクは「渡して終わり」ではありません。開いてもらえたか、まだ生きているか、止めるべきものはないか。これを見る場所を 2 面用意しています。発行した人が自分の Box の中で見る面と、全社の管理者が横断で見る面です。どちらも同じデータを、それぞれの目的に合わせて見せています。
発行者の管理画面The Box Tab
Box の中に「共有リンク」タブがあり、その Box から発行されたリンクを一覧できます。Box のメンバー全員が見られます(自分が発行したものだけ、ではありません)。誰がどこへ何を出しているかを、チーム内で見えなくする理由がないためです。
| 列 | 内容 |
|---|---|
| 対象 | ファイルまたはフォルダの名前(クリックで元の場所へ移動) |
| 発行者 | 顔写真と表示名。社内と社外で写真の縁の色が変わります |
| 受取人 | 本人確認の宛先。伏せ字で表示し、発行者本人と Owner だけが全文を見られます |
| 有効期限 | 2 段表示。上段が「残り 3 日」などの相対表示、下段が実際の日時 |
| DL | 「実績 / 上限」の形(上限なしなら実績のみ) |
| 状態 | 有効 / 期限間近 / 期限切れ / 回数上限 / 無効化済み |
| 最終アクセス | 開封を含みます。ダウンロードが 0 件でも時刻が入っていれば「開いてはもらえた」と分かります |
| メール送信 | 案内メールを送った時刻と件数。届かなかった宛先があれば印が付きます |
| アクセス数 | 「成功 n / 全 m」。クリックでアクセス履歴が開きます |
| 操作 | URL をコピー / メールで再送 / 無効化 |
「期限間近」は残り 24 時間
状態のうち「期限間近」は、有効なリンクのうち残り 24 時間を切ったものを指します。この行には左端に色が付き、一覧の中で目に留まるようになります。
しきい値をもっと長く(たとえば残り 7 日)にすると、既定の 7 日で発行したリンクが発行した瞬間から期限切れまでずっと「期限間近」になり、警告としての意味が失われます。24 時間なら、点灯したときに「今日中に何かするか決める」という判断が実際に対応します。
誰が何をできるか
| 操作 | できる人 |
|---|---|
| 一覧・URL のコピー・アクセス履歴 | Box のメンバー全員 |
| 発行 | Editor / Owner |
| 無効化 | 発行者本人 / Box の Owner / 全社管理者 |
| 案内メールの再送 | 発行者本人(発行できる権限を持っている間)/ Box の Owner |
| 受取人の全文表示 | 発行者本人 / Box の Owner |
画面のボタンは、押せる人にだけ出します。「押すと権限エラーになるボタン」を出さないようにするため、画面側の判定条件をサーバ側の判定条件と1 対 1 で一致させています。
無効化と再送Revoke & Resend
無効化
無効化すると、そのリンクは即座に開けなくなります。取り消せません。確認ダイアログには対象名・残りの回数・最終アクセスを出したうえで、「再度共有する場合は新しいリンクを発行してください」と明記しています。
すでに無効なリンクをもう一度無効化しても、何も起こりません(記録も増えません)。同時に押されたり、連動処理と重なったりしても壊れないようにするためです。
案内メールの再送
「メールが届いていないようだ」というときに、同じリンクの案内をもう一度送れます。ただし宛先も本文も毎回あらためて入力します(前回の宛先やメッセージは保存も再表示もしません)。前回と同じ相手に送るとは限らないためです。
再送ダイアログには、そのリンクの本人確認の状態を必ず表示します。
| リンクの状態 | 表示する内容 |
|---|---|
| 本人確認あり | 「{メールアドレス} のみリンクを開けます」+「変更するには、このリンクを無効化して新しく発行してください」 |
| 本人確認なし・パスワードあり | 「URL とパスワードをご存じの方が開けます」 |
| どちらもなし | 「URL をご存じの方は誰でも開けます」 |
さらに、入力した宛先に本人確認の宛先が含まれていないときは警告を出します。「このままでは受取人はリンクを開けません」という状態を、送る前に気づけるようにするためです。ただし送信自体は止めません(本人確認の宛先の持ち主へ、別の連絡手段で URL を渡す運用もありうるためです)。
元データに連動した無効化Cascade Revoke
ファイルを削除したのに、そのファイルを指す共有リンクが生きたまま残る。これは絶対に起こしてはいけない状態です。削除・無効化の操作からリンクへ、自動的に連動させています。
削除・無効化のダイアログでは、実行する前に「有効な共有リンク n 件が同時に無効化されます」と件数を提示します(0 件のときは何も出しません)。
物理削除(ゴミ箱からの完全削除)に対する追加処理は持っていません。論理削除の時点ですでに無効化されており、ゴミ箱の保持期間(90 日)はリンクの最長期限(14 日)よりずっと長いためです。「リンクは生きているのに元データが物理削除済み」という状態には、設計上たどり着けません。
全社管理画面Company-wide View
全社の管理者は、すべての Box から発行されたリンクを横断で見られます。この画面の目的は「不審なアクセスを見つけて、緊急に止める」ことに絞っています。
主要指標(4 枚)
| 指標 | 内容 | 押せるか |
|---|---|---|
| 有効なリンク | いま開けるリンクの数(うち 24 時間以内に期限切れになる数を補足に表示) | — |
| 異常を検知中 | 3 種類のいずれかに該当するリンクの実数。補足に「総当たり n・大量アクセス IP n・閲覧元分散 n」 | 押せる |
| 期限切れ・回数上限・無効化済み | すでに開けないリンクの合計(内訳を補足に表示) | — |
| 直近 24 時間のアクセス試行 | 全社のアクセス試行数(成功数を補足に表示)。一定数を超えると色が変わります | — |
押せるのは「異常を検知中」だけです。押せる指標=いま対応が要るもの、という規則に統一しました。押すと一覧が該当分だけに絞られます。ほかの 3 枚は「見て把握する」ためのもので、押しても管理者がすることは特にありません。
「異常を検知中」の補足に出る 3 つの数を足しても、本体の数とは一致しません。1 本のリンクが複数の種類に同時に該当しうるためで、本体は重複を除いた実数です。これは仕様として明記しており、実装やレビューで「不一致」として揃えに行かないようにしています。
一覧の「異常」列
| バッジ | 出る条件 | 読み上げ |
|---|---|---|
| 総当たり疑い | 未解決の総当たりアラートがある | 「総当たりが疑われるアクセスを検知しています」 |
| 大量アクセス IP | 集中が起きていた時間帯にこのリンクが触られた | 「大量アクセスを行っている IP からのアクセスがあります」 |
| 閲覧元が分散 | 認証を通った異なる接続元が想定より多い(正当な使い方では到達しない数) | 「{n} か所の異なる接続元から閲覧されています」 |
バッジは色だけでなく必ず文字を伴います。また、略語(BF など)は使いません。管理する人が社内の誰であっても、その場で意味が分かる語にしています。
画面の上部に出るバナー
未解決の総当たりアラートがあるときだけ、画面の最上部に赤いバナーが出ます。ここに出すのは総当たりだけにしています。3 種類すべてを載せると常時点灯し、「今すぐ見て」という器としての意味が失われるためです。
自動更新
指標とバナーは 30 秒ごと、一覧とアクセス傾向は 60 秒ごとに自動更新します。ダイアログを開いている間は止まります(入力中に背後のデータが差し替わることを防ぐため)。自動更新そのものを切ることもできます。
新しい総当たりを検知した瞬間には、画面右下にお知らせを出します。バナーが増えたことに気づかないまま作業を続けることがないようにするためです。
強制無効化Force Revoke
管理者は、発行者の意向に関わらずリンクを即座に失効させられます。強い権限なので、実行の条件と痕跡を厚めにしています。
| 要素 | 内容 |
|---|---|
| 理由 | 必須・10〜256 文字。監査ログに残ります |
| 確認する情報 | 対象・発行者(メールアドレスの全文)・Box・発行日時・アクセス回数・異常の有無 |
| 通知 | 「発行者と Box の Owner にメールで通知する」を既定で有効。件名と本文は理由から自動で下書きされ、そのまま編集できます |
| 結果の表示 | 実行後に「{n} 名に通知を送信しました」を表示 |
通知の送信件数をわざわざ表示しているのは、0 名になる場合があるからです。通知は「現在の Box メンバー」に限って送られる仕組みなので、発行者がすでにその Box を離れていると誰にも届きません。件数が 0 と出れば、管理者は別の手段で連絡する判断ができます。
強制無効化を行うと、そのリンクに紐づく未解決のアラートも同時に解決されます。止めた時点で危険の条件が消えるためです。
アクセス傾向Access Trend
全社管理画面の下部に、直近 24 時間の傾向を 3 つ置いています。個別のリンクではなく全社としての様子を見るための面です。
| 表示 | 内容 |
|---|---|
| 時間別の試行 | 24 時間分を 1 時間ごとの棒グラフに。深夜に山ができていれば機械的な試行の可能性があります |
| 結果別の内訳 | 9 種類の結果の割合。色は「成功・失敗・中立」の 3 つの意味にまとめ、実際に起きた結果を凡例に実数と割合で並べます(0 件の結果は出しません) |
| 大量アクセス IP | 直近 5 分に 100 件以上あった接続元の一覧(アクセス数・対象リンク数・成功・認証失敗・最終アクセス) |
グラフの色を 9 色にしなかった理由
結果が 9 種類あるので、素直に作れば 9 色に塗り分けることになります。しかし9 色を、色覚特性の違いも含めて確実に見分けられる組み合わせは作れませんでした(実際に配色を検証したところ、この資料でも使っている金茶と橙の組み合わせが、ある色覚特性のもとで見分けられない差になりました)。
そこで、色は「うまくいった」「失敗した」「どちらでもない」の 3 つの意味だけを表すことにし、内訳は凡例に数字で並べました。ひと目で分かるのは「失敗が多いか」で、細かい内訳は数字で読みます。凡例に出るのは実際に起きた結果だけなので、9 種類が常に並ぶわけではありません。
「成功 / 認証失敗」の合計がアクセス数と合わない
大量アクセス IP の一覧には、アクセス数のほかに「成功」と「認証失敗」の列があります。この 2 つを足してもアクセス数にはなりません。成功はダウンロードだけ、認証失敗はパスワードとコードの誤りだけを数えており、閲覧やレート制限に掛かった分はどちらにも入らないためです。
列の見出しを「成功・失敗」ではなく「成功 / 認証失敗」としているのは、数えている対象を見出しで名指しして、合計が合わないことが読み取れるようにするためです。