Tailscale Grants マトリクス
Tailscale ポリシーの grants を送信元 × 宛先のマトリクスに整理し、複数ルールが同じ組に与える ip / app の権限を統合して表示します。
入力と主要な処理をブラウザ内で行い、その入力内容をQuickKitサーバーへ送信しない設計です。
実運用中の秘密情報を避け、可能ならダミー値やマスク済みデータを使用してください。 データ取扱いの詳細
アクセスマトリクス
| 送信元 | 宛先 | ip | app | ルール別 (ip / app / srcPosture) |
|---|
未解決の参照
仕組みと使い方
Tailscale のポリシーファイルの grants ブロックを読み取り、送信元と宛先の組み合わせをマトリクスとして表示します。grants は acls に代わるアクセス表現で、2 つの異なるものを同時に運びます。ip はプロトコルとポートの権限、app は受け取る側のアプリケーションが解釈する名前付きのアプリケーション権限です。grants をルールの並びとして読むと重要な点が見えなくなります。同じ組が複数のルールに現れることがあり、最終的に許可される内容はそれらの和集合だからです。このツールは組ごとにその和集合を計算しますが、和集合だけでは安全な要約になりません。そのため、寄与した各ルールについて、そのルールの権限と posture を並べて表示します。posture 付きの tcp:22 と posture なしの tcp:443 で到達できる組は、両方のポートが無条件に開いている組ではないためです。grants には deny 形式がないため、マトリクスは構造上つねに加算的で、後続のルールが権限を取り消すことはありません。グループの送信元は同じファイル内の定義から展開します。ipset: の参照は同じファイルの ipsets ブロックと照合し、未定義のものは有効とみなさず打ち間違いとして報告します。アドレスの展開は行いません。tag:、autogroup:、svc: は種別のみ表示します。内容が coordination server 側にあるためです。svc: は Tailscale Service で、宛先専用のセレクタです。種別の分類のみを行い、送信元に使われている場合は有効でないものとして報告します。サービスの存在、advertisement、approval の状態は確認しません。srcPosture は破棄せず、寄与するルールごとに保持します。デバイス posture で制限された grant は条件付きアクセスであり、無条件アクセスのように見えてはならないためです。grant の実効 posture は、自身が srcPosture を指定していればその値、指定していなければトップレベルの defaultSrcPosture です。したがって、posture を指定していない grant も、default が設定されたポリシーでは無条件ではありません。srcPosture が空または null の場合も、そのルール自身の条件がない状態として default が適用されます。同じ組を複数の grant が対象にする場合は、ルールごとの posture をそのルールの権限と並べて表示します。実効 posture のない grant が同じ組を対象にしている場合はその旨を明示します。grants は加算的で deny 形式がないため、その grant の権限は条件なしで到達できます。一方で条件付きの grant の権限は条件付きのままです。posture の定義自体は postures ブロックにあり、ここでは評価しません。grants の宛先はコロンで分割せずそのまま扱います。ACL の宛先と異なりポートは ip 側にあるため、tag:prod は「tag という名前のホストのポート prod」ではなく、そのまま宛先です。app の権限は名前のみを表示し、値は表示しません。権限の値は受け取る側のアプリケーションだけが定義する自由形式のオブジェクトであり、ここで意味があるかのように表示するのは誤解を招くためです。ポリシーファイルは HuJSON なので、コメントと末尾カンマを受け付けます。アップロード、保存、ログ出力、URL への埋め込みは行わず、tailnet や API へも接続しないため、マトリクスはファイルの内容だけを反映し、実際のデバイス状態は反映しません。