【テクニカル・上級編】 CASB(Cloud Access Security Broker)の4つの基本柱(Visibility, Compliance, Data Security, Threat Protection) – ゼロトラスト&エンタープライズセキュリティ実践ガイド

境界の消滅とパケットの監視:CASBの4つの柱をプロトコルとカーネルの深部から再定義する

ネットワークエンジニアとして長年、企業の要塞ネットワークを守ってきた私にとって、「境界防御の崩壊」という現実を受け入れるのは容易ではなかった。かつては、堅牢なファイアウォールとIDS/IPSが鎮座するデータセンターの周辺(Perimeter)こそが正義であり、すべてのトラフィックはゲートウェイを通る運命にあった。

しかし、SaaSの爆発的な普及とリモートワークの常態化は、その前提を完全に粉砕した。社員の端末は自宅のWi-Fiから直接Microsoft 365やSalesforceへ、TLSの暗号化トンネルを築いてダイレクトに接続する。もはや「社内」と「社外」の境界線など存在せず、トラフィックは企業の視界から消え去った。

この混沌としたクラウドシフトの時代において、エンタープライズの安全性を担保するキーストーンこそが CASB(Cloud Access Security Broker) である。世間の入門書では「可視化、コンプライアンス、データ保護、脅威防御の4つが重要」と綺麗事に満ちたスローガンで語られるが、インフラアーキテクトやテックリードである我々が直面するのは、そんな抽象論ではない。

「数万台のクライアントから発せられる膨大なTLSセッションを、いかにミリ秒単位の遅延(RTT)で復号・検査し、カーネルのパケットドロップを回避するか」という、極めてハードコアなエンジニアリングの課題なのだ。

本稿では、CASBが担う4つの基本柱(Visibility, Compliance, Data Security, Threat Protection)を、パケットレベルの挙動、TLSハンドシェイクの最適化、Linuxカーネルのチューニング、そしてリアルなネットワーク脆弱性の回避策という実務の文脈から徹底的に解剖していく。

—

1. 徹底的な可視化(Visibility):暗号化されたダークマターの解剖

CASBの最初の、そして最も基礎的な柱である「可視化(Visibility)」は、単に「どのSaaSが使われているかをダッシュボードで一覧表示する」といった生易しいものではない。現代のWebトラフィックの9割以上がTLS 1.3によって暗号化されており、パケットのペイロードは完全なダークマターと化している。これを可視化するためには、ネットワーク経路上でのフォワードプロキシ(Explicit Proxy)またはトランスペアレント・インライン(Inline Proxy)としての巧妙な介入が必要となる。

TLSインスペクションとハンドシェイクの最適化

CASBがパケットを検査するためには、いわゆる「Man-in-the-Middle(中間者攻撃)」の正当な仕組みである TLSトランスペアレント・リインタセプション を行う必要がある。クライアントがSaaSのドメイン宛に送信した Client Hello をCASBの次世代エッジノードがインターセプトし、エッジ側で動的に生成した偽のサーバー証明書(自社CAのルート証明書で署名)をクライアントに返す。

ここで問題になるのが、ハンドシェイクによるレイテンシの増大だ。ラウンドトリップタイム(RTT)が増えると、TCPのスループットは著しく低下する。これを極限まで削減するためのカーネルおよびTLSスタックの設定例を見てみよう。

# /etc/sysctl.conf
# 高速なネットワーク環境下でTCPウィンドウサイズを動的に調整し、バッファ枯渇を防ぐ
net.ipv4.tcp_window_scaling = 1

# TIME_WAITソケットの迅速な再利用を許可し、プロキシエッジのポート枯渇を回避
net.ipv4.tcp_tw_reuse = 1

# SYNパケットに対するキューの長さを拡張し、数千の同時TLSハンドシェイクをドロップさせずに処理
net.ipv4.tcp_max_syn_backlog = 65535

# TLSインスペクションを行うプロキシプロセス(例: EnvoyやSquid)が利用するファイルディスクリプタの上限を拡大
fs.file-max = 2097152

プロキシノード側では、Session Resumption(セッション再開)や TLS 1.3の0-RTT (Zero Round Trip Time) の実装を適切にチューニングし、ハンドシェイクのオーバーヘッドを理論値の限界まで削る必要がある。これを行わないCASB導入は、全社的なネットワークの遅延という致命的な副作用をもたらす。

—

2. コンプライアンスの遵守(Compliance):シャドーITの動的ガバナンス

2つ目の柱である「コンプライアンス(Compliance)」は、従業員が勝手に導入する「シャドーIT」の検知と制御、および認可されたSaaS内での不適切なテナント利用の防止を指す。

例えば、ある従業員が個人のGoogleアカウントと会社のGoogle Workspaceアカウントを同じブラウザセッションで使い分けているとする。このとき、データが個人のGoogleドライブに流出することを防ぐには、HTTPヘッダーインジェクションの技術が使われる。

HTTPヘッダーインジェクションによるテナント制御

インライン型CASBは、通過するHTTPリクエストのヘッダーをリアルタイムに書き換え、特定のエンタープライズID以外のアクセスを強制的に遮断する。以下の疑似コードやプロキシ設定(Nginx/Envoyの概念)は、その挙動を示している。

# プロキシサーバー側でのリクエストヘッダー書き換えの概念設定
http {
    server {
        listen 443 ssl;
        server_name *.google.com;

        # 企業の許可されたテナントIDのみをGoogle側のAPIに強制送信する
        # これにより、個人の私用アカウントへのアップロードやアクセスをリクエスト段階でブロック
        location / {
            proxy_pass https://google_upstream;
            proxy_set_header Sec-Google-Apps-Allowed-Domains "enterprise-domain.com";
            
            # 不正なアカウントからのアクセスを弾くためのカスタムヘッダー付与
            proxy_set_header X-Enterprise-CASB-Enforced "active";
        }
    }
}

このパケット操作により、アプリケーション層(Layer 7)の文脈を理解した制御が可能となる。単なるIPアドレスやポート番号のフィルタリングではなく、「誰が、どのテナントの、どの機能にアクセスしているか」を完全に掌握するのがCASBのコンプライアンス機能の本質なのだ。

—

3. 高度なデータセキュリティ(Data Security):DLPとトークン化の深層

3つ目の柱である「データセキュリティ(Data Security)」は、CASBが持つ最もクリティカルな機能、すなわちDLP(Data Loss Prevention)と暗号化・トークン化の実装である。

企業秘密や個人情報(PII)を含むファイルが、SaaSへアップロードされる瞬間を想像してほしい。ファイルはチャンクに分割され、TLSストリームに乗せて送信される。CASBはTCPセグメントを再構築し、HTTPマルチパートボディからファイルを抽出、正規表現パターンマッチングや機械学習ベースの機密情報検知エンジンに通す必要がある。

リアルタイムDLPと非同期スキャンのトレードオフ

インラインプロキシで巨大なファイル(例えば2GBのCADデータや動画)のアップロードを全検査しようとすると、プロキシのメモリ(RAM)とCPUは瞬く間に枯渇し、パケットドロップや接続タイムアウトを引き起こす。そのため、実務では以下のようなハイブリッドなアプローチが採用される。

1. メタデータおよびストリームの高速スキャン: 最初の数キロバイト(Magic Numberやヘッダー部分)を検査し、既知の機密パターンやファイル形式の偽装(拡張子偽装)を検出。
2. 非同期APIスキャン(API-based CASB): インラインでの遅延を避けるため、ファイル自体は一旦SaaSへ透過的に通しつつ、CASBのAPI連携機能(Microsoft Graph APIやGoogle Workspace API等)を用いてバックグラウンドでストレージ全体をスキャンし、検知後に即座にアクセス権限を剥奪または隔離する。

ここで、Pythonを用いてSaaS上の機密ファイルを検知し、API経由で隔離するスクリプトの断片を提示しよう。実務での自動化の基本形となる。

import requests
import json

def quarantine_saas_file(api_endpoint, file_id, access_token):
    """
    CASBのAPIバックエンドまたはSaaSのネイティブAPIを叩き、
    DLPポリシーに違反したファイルを強制的に隔離(アクセス権限の剥奪)する。
    """
    headers = {
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json"
    }
    
    # 共有設定を無効化し、特定の隔離用セキュリティグループへ移動させるペイロード
    payload = {
        "shared": False,
        "permissions": "restricted",
        "quarantine_status": "isolated_by_casb"
    }
    
    response = requests.patch(
        f"{api_endpoint}/files/{file_id}",
        headers=headers,
        data=json.dumps(payload),
        timeout=10
    )
    
    if response.status_code == 200:
        print(f"[SUCCESS] ファイルID: {file_id} は正常に隔離されました。")
    else:
        print(f"[ERROR] 隔離に失敗しました: {response.status_code} - {response.text}")

# 使用例のモック
# quarantine_saas_file("https://api.enterprise-saas.com/v1", "file_xyz_98765", "secret_token_abc")

—

4. 脅威防御(Threat Protection):ゼロデイとクラウドネイティブマルウェアの迎撃

最後の柱である「脅威防御(Threat Protection)」は、SaaSを介して侵入するマルウェアや、侵害されたアカウント(Compromised Account)による異常な振る舞いの検知である。

クラウド上のストレージやコラボレーションツール(Slack、Teams、SharePointなど)は、いまやマルウェアの温床であり、また攻撃者にとっての「安全なC2(Command and Control)通信のチャネル」としても悪用される。

行動分析(UEBA)とネットワーク異常検知

CASBの脅威防御は、単なるシグネチャベースのアンチウイルススキャンに留まらない。UEBA(User and Entity Behavior Analytics)エンジンが、以下のような多次元のメトリクスを常に監視している。

  • 地理的異常(Impossible Travel): 東京のオフィスからアクセスしていたユーザーが、わずか15分後にナイジェリアのIPアドレスからログインを試みた場合。
  • データ抽出の異常: 通常は1日に数メガバイトしかファイルを閲覧しないユーザーが、深夜帯に数テラバイトのデータを一括ダウンロード(Exfiltration)し始めた場合。

こうした異常を検知した瞬間、CASBは即座にIdP(Identity Provider: Azure AD/Oktaなど)と連携し、該当ユーザーのセッションを強制的に無効化(Revoke)する。APIシグナルはネットワーク層のファイアウォールとも連動し、攻撃者のIPからの後続パケットを自動的にドロップするようエッジのACLを動的に書き換える。

—

結び:CASBは単なるツールではなく、クラウド時代の「新しいカーネル」である

ここまで、CASBの4つの基本柱(Visibility, Compliance, Data Security, Threat Protection)を、プロトコル、ハンドシェイクの最適化、カーネルパラメータ、そしてAPI連携のコードに至るまで深く掘り下げてきた。

CASBを単なる「セキュリティ製品の導入」と捉えている組織は、必ずパフォーマンスの低下や現場からの反発という壁にぶち当たる。インフラアーキテクトやテックリードである我々は、CASBを「クラウドネイティブ時代における、ネットワークとデータの新しいカーネル空間」として捉えなければならない。

パケットの1つひとつがどこを通り、どのように暗号化され、どのポリシーエンジンによって検証されているか。そのすべてをデザインし、制御し続けることこそが、真のゼロトラストアーキテクチャを完成させる唯一の道なのだ。

コメント

タイトルとURLをコピーしました