TL

Cloud Service

Zero Trust Packet Routing

リソースに付けたセキュリティ属性ラベルだけで通信可否を意図ベースで宣言し、ネットワーク構成の誤設定があっても許可しない通信を遮断する。VCN 内の機密データ保護を簡素化する OCI のサービス。

中級セキュリティ運用上の優秀性
最終更新: 2026-06-28公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.リソースに付けたセキュリティ属性(ラベル)どうしの通信可否を、人間が読めるポリシー言語で宣言する。
  • 2.セキュリティリストや NSG とは独立に強制され、ルート/サブネット構成を変えても意図したアクセスだけを許可する。
  • 3.デフォルトは全拒否で、ZPR ポリシーで明示的に許可した属性間の通信のみが成立する。

解決する課題

  • セキュリティリストや NSG の CIDR/ポート規則が複雑化し、誰がどの通信を許可したのか追えなくなる
  • サブネット分割やルート変更などの ネットワーク構成変更・誤設定で、意図しない経路が開いてしまう
  • 機密データを持つリソースへの通信を、IP アドレスや経路ではなく「役割(意図)」で表現したい
  • 「DB には App だけが届く」といった ゼロトラストの原則をネットワーク層で強制したい
  • 監査時に「なぜこの通信が許可されているか」を、読みやすいポリシー文で説明したい

主要概念と用語

  • Zero Trust Packet Routing(ZPR): リソースに付けた属性どうしの通信可否を意図ベースのポリシーで宣言し、ネットワーク層で強制する OCI のサービス。経路設定とは独立に効く
  • セキュリティ属性(Security Attribute): リソースに付与するラベル(キーと値)。「役割」を表し、ZPR ポリシーが許可判定に使う最小単位
  • セキュリティ属性ネームスペース(Security Attribute Namespace): 複数のセキュリティ属性をまとめる入れ物。属性の管理境界と命名の単位になる
  • ZPR ポリシー(ZPR Policy): 「どの属性を持つリソースが、どの属性を持つリソースへ、どのプロトコル/ポートで通信できるか」を宣言する規則。許可を積み上げる方式
  • 意図ベース(Intent-based): IP/CIDR ではなく属性(役割)で通信を表現する考え方。アドレスやサブネットが変わってもポリシーは壊れない
  • 強制点(Enforcement): ZPR はアクセス要求のたびに属性とポリシーを照合して許可/拒否する。セキュリティリストや NSG とは別レイヤーで作用する
  • デフォルト拒否: ZPR を適用したリソース間では、ポリシーで明示的に許可された通信のみが成立する(タグなしや非許可は通らない)

仕様・制限・クォータ

  • ZPR は VCN 内のリソース間通信を対象にした制御で、対応リソースにセキュリティ属性を付与して使う
  • セキュリティ属性は ネームスペース配下のキー/値として定義し、リソースへ付与する。属性はタグと似た付与モデルだが、ZPR 専用に判定へ使われる
  • ZPR ポリシーは セキュリティリスト/NSG とは独立して評価される。両方が通信を許可して初めて通る(どちらかが拒否すればブロック)
  • 適用範囲・対応リソース種別・属性数やポリシー数の 上限は変動するため、最新のサービス制限とリージョン提供状況はドキュメントとサービス制限ページで確認する
  • ポリシー言語は 人間が読める宣言文で記述し、属性とプロトコル/ポートを指定する
  • 具体的な対応サービスやクォータ値は拡張されていくため、断定せず最新情報を参照する

内部の仕組み

ZPR は 属性(ラベル)とポリシーという2つの要素で成り立ちます。まず保護したいリソース(例: データベースやアプリケーション層のリソース)に セキュリティ属性を付与します。属性は「db」「app」のような役割を表すラベルで、セキュリティ属性ネームスペースの下にキー/値として定義します。次に ZPR ポリシーで「app 属性を持つリソースは、db 属性を持つリソースへ指定ポート/プロトコルで通信できる」といった許可を宣言します。

通信が発生するたびに、ZPR は 送信元と宛先の属性を見てポリシーと照合し、許可されていれば通し、なければ拒否します。重要なのは、この判定が ルートテーブルやサブネット構成とは独立している点です。誰かがサブネットを足したり経路を変えたりしても、属性とポリシーが変わらない限り許可される通信は変わりません。これにより、ネットワーク構成の誤設定が「意図しない開通」につながりにくくなります。

ZPR は セキュリティリスト/NSG を置き換えるものではなく、上に重ねるレイヤーです。最終的に通信が成立するには、ZPR ポリシーとセキュリティリスト/NSG の 両方が許可している必要があります。どちらか一方でも拒否すれば通信はブロックされます。

アドレスではなく役割で書く

ZPR の本質は、IP/CIDR ではなく役割(属性)で通信を宣言することです。サーバーの IP やサブネットが変わってもポリシーは壊れません。まず「誰が誰に話せるべきか」を属性で整理してからポリシーを書くと、構成変更に強い設計になります。

設計パターン / ベストプラクティス

  • まず 役割の棚卸しを行い、機密データを持つリソース(DB など)と、それにアクセスする層(App など)を属性で明確に分ける
  • 属性の 命名規約とネームスペース設計を先に決め、チーム/環境ごとに一貫させて運用負荷を下げる
  • 通信は 最小限の許可を積み上げる方針にし、広すぎる許可(全許可)を避ける
  • ZPR とセキュリティリスト/NSG の 役割分担を決める。ZPR は意図(役割間)を、セキュリティリスト/NSG は基本の到達制御を担うと整理しやすい
  • 本番投入前に 検証環境でポリシーを検証し、想定どおりの通信だけが通ることを確認してから広げる
  • 機密リソースは デフォルト拒否を前提に、明示許可された通信以外を通さない設計にする

運用・監視

  • ポリシーと属性の変更は OCI Audit に記録されるため、いつ誰が許可範囲を変えたかを追跡する
  • 通信不達のトラブル時は、ZPR ポリシー・セキュリティリスト/NSG・ルートテーブルの3層を順に切り分ける(両レイヤーの許可が必要な点に注意)
  • 属性の付与漏れがあると意図した通信が通らないため、リソース作成時に属性付与を組み込む(IaC/タグ運用に組み込む)
  • ポリシー変更は 段階的に適用し、まず狭い範囲で挙動を確認してから本番へ展開する
  • 機密データ経路は 定期的にポリシーをレビューし、不要になった許可を削除して許可範囲を最小に保つ

コスト

項目課金の考え方コスト最適化のヒント
ZPR の利用属性とポリシーによるアクセス制御機能保護対象を機密リソースに絞り過剰なポリシーを避ける
関連サービスAudit/Logging など連携先の保管・転送費用保持期間と出力対象を用途に合わせて調整する
設計の単純化が最大の節約

ZPR の価値は、複雑化したネットワーク規則を役割ベースで単純化し、誤設定による事故と運用工数を減らすことにあります。属性とポリシーを過剰に増やすと管理コストが上がるため、まず機密データ経路に絞って導入し、効果を見ながら広げてください。具体的な料金体系は変動するため公式の料金情報を確認します。

セキュリティ

  • 機密リソースへの通信を 意図(役割)ベースで明示許可し、許可されない通信はデフォルト拒否にする
  • ネットワーク構成の誤設定(サブネット追加・ルート変更)があっても、属性とポリシーが変わらなければ意図しない開通を防げる
  • セキュリティリスト/NSG と 多層防御を構成し、両レイヤーの許可がそろって初めて通信を許す
  • 属性とポリシーの管理権限は IAM の最小権限で運用者に限定し、許可範囲の不用意な拡大を防ぐ
  • すべての管理操作は OCI Audit に記録し、許可範囲の変更を追跡可能にする
  • ゼロトラスト原則(暗黙の信頼を置かない)を ネットワーク層で強制できる

関連サービス・比較

観点Zero Trust Packet Routingセキュリティリスト/NSG
制御の単位セキュリティ属性(役割ラベル)CIDR/ポート/プロトコル
表現の仕方意図ベース(誰が誰に話せるか)アドレスと経路ベース
構成変更への強さ経路/サブネット変更と独立で壊れにくい規則がアドレス前提で影響を受けやすい
既定の挙動明示許可のみ通すデフォルト拒否規則しだい(許可規則を記述)
位置づけ上位に重ねる意図レイヤー基本の到達制御レイヤー
併用NSG と両方の許可が必要ZPR と組み合わせて多層防御
アンチパターン

ZPR をセキュリティリスト/NSG の完全な置き換えだと誤解するのは危険です。通信は両レイヤーの許可がそろって初めて通ります。また、属性付与を忘れたまま広すぎる許可ポリシーを書くと、意図ベースの利点が失われます。役割を整理し、最小許可を積み上げてください。

ハンズオン / CLI例

# 1. セキュリティ属性ネームスペースを作成(属性の入れ物)
oci zpr security-attribute-namespace create \
  --compartment-id <compartment-ocid> \
  --display-name app-tier \
  --description "ZPR security attributes for app and db tiers"

# 2. ネームスペース配下にセキュリティ属性(役割ラベル)を定義
oci zpr security-attribute create \
  --security-attribute-namespace-id <namespace-ocid> \
  --name role \
  --description "Resource role used by ZPR policies"

# 3. ZPR ポリシーを作成(属性間の許可を宣言)
#    実際のポリシー文は属性とプロトコル/ポートを指定して記述する
oci zpr zpr-policy create \
  --compartment-id <compartment-ocid> \
  --name app-to-db \
  --statements '["in VCN allow app-tier.role=app to connect to app-tier.role=db with protocol=tcp port=1521"]'

# 4. 作成済みの ZPR ポリシーを一覧で確認
oci zpr zpr-policy list \
  --compartment-id <compartment-ocid>

OCI Service

Zero Trust Packet Routingを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

セキュリティ・ID

比較で見る軸

クラウド: OCI / カテゴリ: セキュリティ・ID / 難易度: intermediate

導入後に効く点

セキュリティリストや NSG とは独立に強制され、ルート/サブネット構成を変えても意図したアクセスだけを許可する。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
OCI
カテゴリ
セキュリティ・ID
難易度
intermediate
関連資格
設計柱
security / operational

判断チェックリスト

  • 自社の用途が「セキュリティ・ID / security」に近いか確認する。
  • 強みである「リソースに付けたセキュリティ属性(ラベル)どうしの通信可否を、人間が読めるポリシー言語で宣言する。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

セキュリティ・IDsecurityoperational