セキュリティ概要とタイムライン
Bromure の保護機能はすべてホスト側、プロキシと仮想ネットワークスイッチの中で動きます。認証情報の入れ替え、送信ファイアウォール、ガードレール、サプライチェーンの検査、プロンプトインジェクションの検出、個人データ保護です。そのどれかが判断を下すたび — 認証情報を入れ替える、接続を遮断する、パッケージを検査する、メッセージを保留する — それは記録されます。セキュリティ タイムラインのウィンドウはその判断を見せます。直近 24 時間の概要と、すべてのイベントのタイムラインです。
これはトレースとは別の問いに答えます。トレースは通信そのもの — 「エージェントは何を送ったのか?」 — を記録し、しかもトレースを有効にしたときだけです。セキュリティ タイムラインは、その通信についてセキュリティエンジンが何を判断したかを記録し、常に有効です。どのマシンでも、登録済みでもそうでなくても、プライベートモードでもそうでなくても、設定するものは何もありません。
ウィンドウを開く
ウインドウ → セキュリティ タイムライン…を選ぶ、または ⌘K を押してセキュリティ タイムラインを選びます。ウィンドウは概要タブで開きます。左上のセグメントコントロールで概要とタイムラインを切り替えます。ウィンドウはアプリ全体で 1 つだけで、メニュー項目をもう一度選ぶと前面に出ます。
概要タブ
概要の見出しは過去 24 時間です — 「Bromure のセキュリティエンジンがあなたのエージェントについて何を判断したか。」3 つの部分があります。
タイル
5 つのタイルが直近 24 時間のイベントを数えます。
| タイル | 数えるもの |
|---|---|
| ブロック | 判定がブロックだったすべてのイベント(タイムラインでは赤)。どのエンジンからでも。 |
| 許可 | 判定が何かを通すことだったすべてのイベント(タイムラインでは緑)。どのエンジンからでも。 |
| 仲介した認証情報 | 資格情報ブローカーのイベント:認証情報の入れ替え、遮断された流出の試み、そして侵害アラートからあなたが許可したホスト。 |
| 確認したパッケージ | サプライチェーンのイベント:プロキシが見たすべてのパッケージ取得。 |
| 置き換えた個人データ | 個人データ保護が代替に置き換えた個人データの値の数 — リクエスト数ではなく値の数です。 |
タイルをクリックするとタイムラインタブへ飛びます。仲介した認証情報、確認したパッケージ、置き換えた個人データはそのエンジンで絞り込んで開き、ブロックと許可はすべてのエンジンで、その結果で絞り込んで開きます。
保護機能
保護機能の表は、この Mac の各マシンを色付きで並べ、どの保護がオンかを示します。オンは緑のチェック、オフは灰色のダッシュです。
| 列 | チェックが付く条件 |
|---|---|
| ファイアウォール | そのマシンのガードレールのペインに送信接続のルールがある、または一致しない通信を拒否している。 |
| サプライチェーン | サプライチェーンの層が少なくとも 1 つオン(年齢ゲート、OSV、socket.dev、スクリプトの除去、ロックファイルの確認のいずれか)。 |
| ガードレール | ガードレールが実際に何かを制限している:書き込みポリシーがオフ以外のサービス、データベースのガードレール、送信接続のルール、あるいは使用前に確認に設定された認証情報のいずれか。リクエストごとの非セキュアな回避(X-bromure-insecure)は、制限ではなく緩和なので数に入りません。 |
| プロンプトインジェクション | プロンプトインジェクションの検出器が少なくとも 1 つオン。 |
| 個人データ保護 | 個人データ保護のマスタースイッチがオンで、カテゴリが少なくとも 1 つある。 |
| 資格情報ブローカー | 常に:認証情報の入れ替えはオフにできません。 |
他よりも保護が少ない状態で動いているマシンを見つけるのに使ってください。変更するには、そのマシンの設定を開きます(設定リファレンスを参照)。
最近のブロック
最近のブロックは直近 24 時間で最も新しいブロックを、新しい順に最大 8 件並べます。何がブロックされたか、エンジンと判定、そして何分前かです。何もブロックされていないときはこの一覧は隠れます。
タイムラインタブ
タイムラインはすべてのイベントの 1 つの表で、新しい順です。
| 列 | 表示するもの |
|---|---|
| 時刻 | 判定の日付と時刻。 |
| ワークスペース | それが起きたマシン。リモートの Mac をミラーしているときは Mac · マシン と表示されます。 |
| エンジン | どのエンジンが判断したか。アイコン付き。 |
| 内容 | エンジンが見たもの:ホスト、パッケージ、断片、キーなど。カーソルを合わせると全文が出ます。テキストは選択してコピーできます。 |
| 判定 | 何を判断したか。色分けされています。 |
| (最後の列) | ファイアウォールの行では、クイックアクションのボタン:許可…、ブロック…、ルール… — ファイアウォールのクイックアクションを参照。OSV または socket.dev がブロックしたパッケージでは、許可… → このワークスペースで … を常に許可 でワークスペースの信頼するパッケージに追加されます(追加後は 現在は許可)— ブロックされたパッケージを信頼するを参照。 |
色はウィンドウのどこでも同じ意味です。
- 緑 — 許可:通した、合格、署名した。
- 赤 — ブロック:拒否、却下、保留。
- 青 — 情報:通過でもブロックでもない変換。認証情報の入れ替え、年齢ゲートによるバージョン一覧、除去されたインストールスクリプトなど。
表の上のツールバーで絞り込めます。
- **イベントをフィルタ…**は、エンジン、内容、判定、マシン名、Mac 名のテキストに一致します。
- エンジンのポップアップ(既定はすべてのエンジン)は、イベントのあるエンジンを並べます。
- 結果のポップアップ(既定はすべての結果)は、表をブロックまたは許可のイベントに絞ります。
- リモートの Mac を 1 台以上ミラーしていると、マシンのポップアップが現れます:すべてのマシン、この Mac、または個々のリモート Mac。
- イベント数(「8 件のイベント」)は絞り込みを反映します。
クリアはウィンドウを空にします。イベントを隠すだけで、ディスク上には残ります。ただしクリアしたイベントはアプリの再起動後に戻ってきません。**書き出す…**は下記で説明します。
エンジン
| エンジン | その行が記録するもの | 判定の例 |
|---|---|---|
| 資格情報ブローカー | ワイヤー上での認証情報の入れ替え(認証情報)、流出の試み、侵害アラートから許可されたホスト。 | 「sk-a…9f に入れ替え」(青);「ブロック — 流出の試み、VM を一時停止」(赤)、マシンで流出アラートをオフにしている場合は「ブロック — 流出の試み(アラートはオフ、VM は一時停止せず)」;「このセッションについてユーザーが許可」(緑) |
| 資格情報の使用 | ホストがエージェントのために行った SSH 署名と AWS SigV4 の署名。 | 「署名」(緑) |
| ファイアウォール | 送信ファイアウォールの判定。ホスト・ポート・プロトコル単位で、決めたルール(どのルールにも一致しなかった場合は「デフォルトのポリシー」)とともに記録されます。直接接続もプロキシ設定経由の接続も同様です。ホストはプログラムが求めた名前(www.wikipedia.org)で、解決先の CDN の名前ではありません。ある宛先は、前回の報告から 1 分たつか、ルールが変わった直後でなければ再報告されません。許可された接続は、マシンがそれを記録する場合にだけ一覧に出て、繰り返しはカウント付きの 1 行にまとめられます。ルールの変更で切断された開いている接続には専用の行が付きます。 | 「許可 — allow tcp github.com:443」(緑);「拒否 — デフォルトのポリシー」(赤);「接続を切断 — 『allow tcp github.com:443』では許可されなくなりました」(赤);ルールに関係なく捨てられる接続(IPv6、QUIC、IP フラグメント)は「拒否」(赤) |
| ガードレール | 書き込みポリシーによるブロック(ガードレール)。メソッドとパス付き。 | 「ブロック — …」(赤) |
| サプライチェーン | すべてのパッケージ取得。apt の .deb ダウンロードも含みます(サプライチェーン保護)。 | 「確認」「ダウンロード」(緑);「確認 — 待機期間より新しいバージョンを非表示」「インストールスクリプトを除去」(青);「ブロック — …」(赤) |
| プロンプトインジェクション | 検出器のヒット。検出器、出どころ、短い断片付き(プロンプトインジェクションの検出)。 | 「記録」「許可」(緑);「ブロック」(赤) |
| 個人データ保護 | 個人データが置き換えられたリクエスト。種類ごとの件数とホスト付きで、値は決して記録しません(個人データ保護)。また、走査がモデル予算を使い切ったリクエスト。 | 「代替に置き換え」(青);「部分的 — モデル予算に到達。パターンのルールのみ」(青) |
| エージェント間の委任 | あるエージェントが委任を通じて別のエージェントに送った各メッセージ。 | 「中継」(青);「保留 — プロンプトインジェクション」(赤) |
| 上流 TLS | ホストが信頼を拒んだ上流の証明書と、リクエストごとの非セキュアな回避の使用。 | 「ブロック — …」(赤);「許可 — 証明書の検証をスキップ(X-bromure-insecure)。認証情報は注入せず」(緑) |
ファイアウォールのクイックアクション
ファイアウォールの行から、マシンの送信接続のルールをその場で変更できます。行の最後の列のボタンを使うか、行を右クリックします。変更はマシンに保存され、実行中ならすぐに反映されます — 再起動は要りません。
- ブロックされた接続 — ホスト:ポート を許可は、まさにそのホスト・プロトコル・ポートへの許可ルールを追加し、ブロックしたルールに勝つよう先頭に置きます。ホストがサブドメインなら、ドメイン:ポート 全体を許可も出ます(たとえば
api.github.comに対してgithub.com)。これはすべてのサブドメインを含みますが、CDN や共有ホスティングのドメイン(cloudflare.net、cloudfront.net、amazonaws.com、github.io、herokuapp.com…)の下では出ません。そこで「全体」と言えば、そのプロバイダーのすべての顧客を意味してしまうからです。ホストが解決される途中で経由した他の名前(CDN のエイリアス)は、その後に正確なホストとして出ます。それぞれ常に、15 分間、1 時間、ワークスペースが停止するまでを選べ、期間付きのルールは時間が来ると自分でオフになります。同じルールがすでにある場合、メニューはまずその状態(オフ、またはいつまでオン)を示すので、再び許可しても黙って短くなることはありません。拒否ルールがブロックしていた場合は、そのルールをオフにしたり削除したりもできます。 - ルールで許可された接続 — ルールをオフにするはルールを残したまま一致しないようにします(エディタで再びチェックすれば戻ります)。ルールを削除は削除します。変更によって拒否されるようになった接続は切断されます。
- どのルールにも一致せずに許可された接続 — ホスト をブロック(または ドメイン 全体をブロック)は、そこへのすべてのプロトコルとポートに対する拒否ルールを追加します。
ここで作るルールは、プログラムが求めた名前、つまりプロキシが確認するのと同じ名前を使うので、プログラムがどう接続しても有効です。
行が記録されてからルールが変わっている場合 — ブロックされたホストがその後許可された、あるいはその逆 — ボタンは現在は許可または現在はブロックと表示され、メニューは同じ変更をもう一度出す代わりに、いま判定しているルール(またはデフォルトのポリシー)を示します。
クイックアクションは、ルールの変更が影響しうる行にだけ出ます:IPv6、QUIC、フラグメントの破棄や、web ルールによる HTTP メソッドのブロックには出ません。リモートの Mac の行ではボタンが淡色表示になります:そのマシンのルールは、それを動かしている Mac 上の設定で変更してください。
注: マシンの設定が開いていれば、ルールの表に変更が反映されます。保存していない編集は保たれます:変更はルールごとにそこへ統合され、表の上の注記がそれを知らせます。編集が統合できない場合(まだ解析できないルールがある場合)、注記は再読み込み(保存済みのルールを採る)か編集内容を保持を提示します。
タイムラインが記録するのはセキュリティの判定だけです。ファイルの読み取り、コマンド、ツール呼び出し、モデルの使用はここにはありません。それらはトレースの領分です。
イベントの書き出し
書き出す…(どちらのタブのツールバーにもあります)はイベントを CSV ファイルとして保存します。既定の名前は bromure-security-<日付>.csv です。タイムラインタブからは、絞り込みを適用した表の内容そのままを保存します。概要タブからは、ウィンドウ内のすべてのイベントを保存します。行は古い順で、列は time(ISO 8601)、machine(「This Mac」またはリモート Mac の名前)、workspace、engine、condition、decision、outcome(allowed、blocked、info)です。
保存と保持
- 各イベントは
~/Library/Application Support/BromureAC/security-timeline/の日別ファイルに追記されます。1 イベント 1 行の JSON で、ファイル名は<yyyy-MM-dd>.jsonl(UTC の日付)です。 - 90 日より古いファイルは削除されます。
- 起動時、ウィンドウは最新の 5,000 件を読み込み直し、メモリに保持するのは最大 5,000 件です。それより古いものはファイルに残ります。
- イベントに入るのはプレビューだけです。
sk-a…f9q3のようなトークンのプレビュー、断片のプレビュー、個人データの件数です。秘密の値や個人の値が書かれることはありません。
リモートの Mac
エンジンはマシンをホストしている Mac 上で動きます。リモートクライアントが別の Mac をミラーすると、その Mac の最新のイベントを受け取り、自分のセキュリティ タイムラインのウィンドウに、ローカルのものと並べて表示します。ミラーした各 Mac のイベントはこの Mac のものと分けて保持されるので、マシンのポップアップで切り分けられ、ワークスペース列にはその Mac の名前が出ます。
エンタープライズテレメトリとの関係
bromure.io に登録した Mac では、同じエンジンのイベントがクラウドイベント(credential.token_swap、egress.firewall、supply_chain.fetch、prompt_injection.detection、privacy.pii_swap など)として組織にも送られます。ただしマシンがプライベートモードの場合は送られません。ローカルのセキュリティ タイムラインはそれとは独立です。Mac が登録済みかどうか、プライベートモードかどうかに関わらず、すべてのイベントを記録します。トレースと監査とエンタープライズを参照してください。