【技術本】ゼロトラストネットワーク
https://amzn.to/4lscwG5
【技術本】ゼロトラストネットワーク
へポスト
従来のFWなどの活用による境界防御モデルでは、ホストやリンクに一度侵入を許すとネットワーク横断的に全体が脅威にさらされる問題を抱えていた。これに対し、ゼロトラストネットワークモデルには、既存のセキュリティ技術を活用しながらも外部と内部からの攻撃に対する耐性を提供してくれる。一言でまとめると、同一ネットワーク内の通信であっても、利用ユーザ、デバイス、アプリケーションをそれぞれ都度認証(セッションごと)、認可(リクエストごと)し通信を暗号化することで、悪意ある攻撃のインジェクトや、乗っ取りの影響を最小限に低減する防御方法である。
ゼロトラストモデルは、現在も標準化の最中の最新の概念である。本書では、ゼロトラストモデル環境の構築方法を解説しているが、コードレベルの具体的な実装ではなく、基本設計仕様、概念までの解説で言及している。
具体的内容(抜粋メモ)は、以下の通り。
●利用者認証
政府発行の識別証の使用、当人しか知り得ないパスワード、ハードウェアトークン、生体認証などを利用。
※デスクトップコンピュータの場合、パスワードとハードウェアトークンは強力であり推奨される。
※モバイルは指紋とパスフレーズが推奨。
認証の際に、2要素認証(2段階認証)を活用する。
●各ホスト/デバイスの認証
X.509:公開鍵方式:信頼されるデバイス、ユーザ、アプリケーションなどを特定と通信の暗号化。
プライベートPKI:公開鍵証明書の管理。セキュリティを高めるために期限の短い証明書を大量に使い捨てる。>鍵の発行、失効などの効率的自動化の実装が独自に必要になる。
TPM:デバイスのX.509秘密鍵を保護すること。TPM内のSRKを使って秘密鍵を暗号化>秘密鍵はOSに公開されず、ハードウェアにバインドされる。
mTLS(mutal TLS:相互認証TLS):公開鍵を使った利用者利用側の相互認証。
※通信にUDPパケットとしてリソースに送信する方法>TCPと異なりUDPパケットがレスポンスを受け取らないのを利用し利用ポートを隠し、正しい鍵で暗号化されたパケットを受信した時に初めて姿を表すことが可能。
IPsec
・アプリごとに一意なセキュリティアソシエーションを使用できる。
・フィルタリングシステム(ソフトウェアファイアウォール)をIPSecの上位層に追加できる。
・X.509証明書といった標準の認可手法の利用が可能になる。
・iPsec層の上位層としてmTLSを実装できる。
IKE
・認証プロトコル。IPsecの鍵交換コンポーネント。
●各ホスト/デバイスのシステム状態の証明
TPMのPCR(Platform Configuration Register):実行中のソフトウェアのハッシュ値が格納されるストレージスロットを提供。BIOSのハッシュ値、ブートレコードなどの設定が格納。>このハッシュ値を利用すれば、システムが承認された設定、または状態であることを証明できる。
リモートアステーション:TPMにはEK(Endorsement Key)という別の鍵ペアがある。EKはTPMごとに一意。>TPM識別の手立てとなる。EKの秘密鍵はOSからアクセスできない。TPMはリモートアステーションという方法で「クォート」と呼ばれるものを生成し、リモートパーティに安全に送信する。
クォート:現在のPCR値のリストが含まれており、EKで署名。>これで、ホストのアイデンティティとソフトウェアの状態、設定の両方を検証できる。
●アプリ:ソースコードの認証
一連のコミットが書き換えられないことを暗号的に証明できるようにする>例:Git(有向非巡回グラフ:DAG)。
信用された開発者のGPG(GNU Privacy Guard)鍵でコミットやタグに署名>例:Git。
コードレビューによる不正コードコミット抑止。
●アプリ:ビルド時のセキュリティ手段
ビルドシステムは、バージョン管理システムに認証されたチャネル(通常はTLS)を通じてアクセスすべき
タグ、コミットなどに署名されたものを、ビルドシステムが再び検証する。
ビルド設定も重要な入力の一つ>設定もバージョン管理システムに配置すればソースコード同様署名が使える
さらに成果物に署名>ハッシュ値を管理して悪意ある置き換えを検知。
リリースされたバージョンとそのハッシュ値を署名付きのマニフェストで公開する>利用者も検証できるようにする。
※アプリ配布について:信頼されないミラーサイトへの配布は、様々な攻撃を可能にしてしまう。古い(署名された)バージョンへの強制的ダウングレードなど。
●アプリ:ランタイムのセキュリティ手段
セキュアコーディングの実践。
脆弱性のある潜在バグをなくす。
アクセスできるリソースをアプリごとに制限、分離することが重要。
利用可能技術参考:
・SELinux, APPArmor
・BSD jails
・仮想化、コンテナ化
・AppleのApp Sandbox
・Windowsの分離アプリケーション
能動的な監視。
■独自実装ポイント■
コントロールプレーン(リソースのアクセスの認証、認可を司る)と、データプレーン(コントロールプレーンに管理される、サーバ、ホストなど)の実装が必要。
データプレーン間の通信は、全てコントロールプレーンによって認証(セッションごと)、認可(リクエストごと)が必要。認証には大量の期限の短いX.509証明書を使用。そのため認証処理に応じた証明書の発行失効の自動化処理が必要。
認証、認可はスコア制で行動内容によって常に評価される>それによりシステムの状況、変化にも動的に柔軟に対応できる。
動的な認証、認可のためのポリシー設定のエージェントとして構成管理を利用することもできる。
認証、認可のポリシー設定項目、スコア評価方法は、各ネットワークシステムの規模、用途に応じて内容は読者に委ねられている。
-------
従来のネットワーク防御モデルを覆す斬新なセキュリティアーキテクチャモデルとして興味深く読むことができた。
導入においても、高価なハードウェアやソフトウェアパッケージなどの導入が殆ど不要な点も興味深い。ゼロトラストネットワークモデルの構築をパブリッククラウドで展開する上での考慮点、不都合の緩和方法も記載されている。
セキュリティ関連に従事する技術者の知見を広げる目的として価値が出てくる著作だと感じた。
へポスト
