LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

Facebook X Instagram
サービス・製品 | 

クラウドネットワークセキュリティの新機軸、OCI Zero Trust Packet Routing

2024年9月10日、Oracle Cloud Infrastructure(以下、OCI)にて新しいネットワークセキュリティサービスであるOCI Zero Trust Packet Routingサービスが発表されました。多くの場面でクラウドを利用することが一般的となった現代、企業のネットワークはより複雑になり、それに伴ってセキュリティリスクもますます大きくなっています。

こうした状況に対し、新たなアプローチとして登場したのがZero Trust Packet Routingです。本記事ではZero Trust Packet Routing(以下、ZPR)の概要およびOCI ZPRサービスの使用方法を紹介します。

Zero Trust Packet Routingとは

最初に、そもそもZPRとは何なのかについて、その概要を説明します。

複雑化するネットワーク

企業のITインフラは急速に変化、拡大しており、特に近年ではクラウドサービスの利用、リモートワークの増加やモバイルデバイスの普及によりそのネットワーク構成は一層複雑化しています。

ファイアウォールによるアクセス制御やルーティングといった従来のネットワークセキュリティ設定はネットワーク構成と密接に結びついており、ネットワークが複雑化するほど誤設定を誘発し、それに加えてセキュリティ設定が適切かどうかを確認することが困難になります。実際、外部に公開しているサービスのアクセス設定ミスによる情報漏洩事案を耳にしたことがある方も多いのではないでしょうか。

ZPR概要:次世代のネットワークセキュリティ

このような背景からApplied Invention社およびその他の企業とOracleが共同で考案した新しいセキュリティモデルがZPRです。

ZPRでは通信(パケット)の送信者、受信者それぞれに役割や所属などの情報が紐づけられます。この紐づけられた情報を属性(attribute)とよび、属性に基づいてポリシーを記述し、ネットワークレベルでセキュリティルールを強制します。

以下にZPRの特徴を紹介します。

ネットワーク構成とセキュリティ設定の分離

従来のネットワークセキュリティでは、IPアドレスやプロトコル、ポート番号をもとにルーティングやアクセス制御を行います。ネットワーク構成とセキュリティが深く結びついているため、ネットワーク構成が複雑化するほどセキュリティの設定も複雑になっていきます。

一方ZPRでは、上述の属性をもとにどの送信者と受信者の間での通信を許可するかを指定するため、セキュリティ設定がネットワークから分離され、ネットワーク構成が変更されても一貫したセキュリティの適用を実現できます。

インテントベースのセキュリティ・ポリシー

インテント(intent)とは日本語で意図、目的といった意味で、ZPRでは自然言語を用いて人間が読むことのできる形でセキュリティ・ポリシーを記述します。これによりセキュリティ管理者の意図に沿った制御が容易になり、管理の効率化や設定ミスの低減を実現するほか、監査等においてセキュリティ・ポリシーがコンプライアンスに準拠しているかどうかを判断しやすくなります。

OCI ZPRサービス

OCIのZero Trust Packet RoutingサービスはZPRをOCI上で実装したサービスです。VCNおよびコンピュートやデータベースといったリソースにセキュリティ属性を設定し、対応する属性値に基づいてポリシーを記述することでアクセス制御を行います。2025年1月時点では以下のようなリソースがZPRに対応しています(詳細は公式ドキュメントをご確認ください)。

Zero Trust Packet Routingの概要

  • コンピュート
  • Oracle Database
  • ネットワーキング(VCN、VNIC、Private Endpoint)
  • ネットワーク・ロード・バランサ

ZPRポリシーは既存の仮想ファイアウォール機能であるセキュリティ・リスト、NSGと共存する形で設定されます。つまり、あるリソースにセキュリティ属性を付加し、ZPRによる保護を有効にした場合、そのリソースにアクセスするためにはセキュリティ・リストまたはNSGとZPRポリシーの両方でアクセスを許可する必要があります。なお、OCI ZPRサービスはほかの多くのセキュリティ機能と同様に無償で利用できます。

OCI ZPRサービスの使い方

ここからはOCI ZPRサービスの設定方法を説明していきます。以下の流れに従ってZPRサービスを有効化し、設定します。

  1. ZPRの有効化
  2. セキュリティ属性ネームスペースの作成
  3. セキュリティ属性の作成
  4. ZPRポリシーの作成
  5. リソースへのセキュリティ属性の適用

ZPRの有効化

初めにOCI ZPRを有効化します。

IAMポリシーの設定

管理者グループに所属していないユーザを使用する場合は、対象のユーザが所属するグループにポリシーを設定する必要があります。ZPRの使用に際して設定が必要なIAMポリシーは以下の通りです。

Allow group <グループ名> to manage zpr-configuration in tenancy
Allow group <グループ名> to manage security-attribute-namespace in tenancy
Allow group <グループ名> to manage zpr-policy in tenancy

特にzpr-configurationとzpr-policyはテナントに対する権限が必要となります。

ZPR有効化

OCIコンソールのナビゲーション・メニューから「アイデンティティとセキュリティ」>「Zero Trust Packet Routing」>「概要」を選択します。概要画面で「ZPRの有効化」をクリックし、その後の画面でさらに「ZPRの有効化」をクリックします。

有効化が完了すると左側のリストに「ポリシー」、「セキュリティ属性ネームスペース」、「保護されたリソース」が表示されます。

Zero Trust Packet Routing Platform画面

セキュリティ属性ネームスペースとセキュリティ属性の作成

続いてセキュリティ属性ネームスペースとセキュリティ属性を作成します。OCI ZPRでは保護対象リソースにセキュリティ属性を適用し、対応する属性値に基づいてアクセス制御を行います。セキュリティ属性ネームスペースは複数のセキュリティ属性をグルーピングする論理的なコンテナです。

前提として今回は以下のような構成のネットワークを対象にZPRの動作を検証します。

リソース 名前 備考
VCN TEST_VCN 2つのパブリック・サブネットを作成
コンピュート App1 Oracle Instant Clientを導入
コンピュート App2 Oracle Instant Clientを導入
コンピュート Bastion
BaseDB ORCL
ネットワーク構成

また、セキュリティ・リストを使用して以下のように各サーバ間での通信を許可しています。

対象サブネット 送信元 プロトコル/ポート 備考
APP_PUB_SUB
(10.0.0.0/24)
自端末グローバルIP TCP/22 自端末からのSSH接続を許可
10.0.0.0/24 TCP/22 サブネット内でのSSH接続を許可
DB_PUB_SUB
(10.0.1.0/24)
自端末グローバルIP TCP/22 自端末からのSSH接続を許可
10.0.0.0/24 TCP/22 APP_PUB_SUBからのSSH接続を許可
10.0.0.0/24 TCP/1521 APP_PUB_SUBからのDBへの接続を許可

セキュリティ属性ネームスペースの作成

ZPRのトップ画面左のリストから「セキュリティ属性ネームスペース」を選択し、「セキュリティ属性ネームスペースの作成」をクリックします。必要事項を入力して、「セキュリティ属性ネームスペースの作成」をクリックすることでセキュリティ属性ネームスペースが作成されます。なお、セキュリティ属性ネームスペース名はテナントで一意である必要があります。

コンパートメント用に作成 セキュリティ属性ネームスペースを作成するコンパートメントを指定
名前 セキュリティ属性ネームスペース名を指定
説明 作成するセキュリティ属性ネームスペースの説明を入力
セキュリティ属性ネームスペース画面

今回は以下の3つのセキュリティ属性ネームスペースを作成しました。

セキュリティ属性ネームスペース名 説明
Networks VCN用ネームスペース
Servers コンピュート用ネームスペース
Database データベース用ネームスペース

セキュリティ属性の作成

次に各ネームスペースにセキュリティ属性を作成します。セキュリティ属性ネームスペースのリストから対象のネームスペース名をクリックして詳細画面を開き、「セキュリティ属性の作成」をクリックします。必要事項を入力して、「作成」をクリックすることでセキュリティ属性が作成されます。

名前 セキュリティ属性名を指定
説明 作成するセキュリティ属性の説明を記入
セキュリティ属性値タイプ
  • 静的:セキュリティ属性適用時に属性値を入力する
  • 値のリスト:設定可能な属性値をあらかじめ指定する
属性値タイプで「値のリスト」を選択した場合、属性値のリストを改行区切りで入力する
セキュリティ属性の作成画面

今回は各セキュリティ属性ネームスペースに以下のセキュリティ属性を作成しました。

セキュリティ属性ネームスペース セキュリティ属性 属性値タイプ 値のリスト
Networks VCN1 静的 -
Servers App 値のリスト App1
App2
Bastion 値のリスト Bastion1
Database Sensitivity 値のリスト High
Low

ZPRポリシーの作成

続いてZPRポリシーを作成します。ポリシーには複数のポリシー・ステートメントを含めることができ、各ポリシー・ステートメントによってアクセス制御を行います。ポリシー・ステートメントはセキュリティ属性に基づいてZero Trust Packet Routing Language(ZPL)を使用して記述しますが、基本的にはどこからどこへのアクセスを許可するかを英語で記述する形になります。

ポリシー構文

ポリシー・ステートメントは以下の構文に従い記述します。

in <VCNの属性> VCN allow <接続元属性> endpoints to connect to <接続先属性> endpoints

このポリシーにより<VCNの属性>が適用されたVCN内で、<接続元属性>が適用されたリソースから、<接続先属性>が適用されたリソースへの通信が許可されます。

より詳細な記述方法は以下の通りです。

  • 各属性は[<セキュリティ属性ネームスペース>].<セキュリティ属性>:<属性値>の形で記述する。なお、属性値はリソースにセキュリティ属性を適用する際に指定する
  • ネームスペースは省略可能で、省略した場合はZPR有効化時にルート・コンパートメントにデフォルトで作成される「oracle-zpr」ネームスペースに設定される
  • VCN外のリソースを指定する場合はIPアドレスをCIDR形式で記述する。この際「endpoints」は記載しない

また、条件を指定しない場合、すべてのプロトコル、ポートに対してアクセスが許可されます。これらの条件を指定する場合はwith句を使用します。詳しくは公式ドキュメントや以下のポリシー作成例をご確認ください。

ポリシー構文|Oracle Cloud Infrastructureドキュメント

ポリシーの作成

実際にポリシーを作成します。今回は以下のようなアクセス制御を実現するポリシーを作成することとします。

  • 「Bastion」インスタンスのみ、自端末からのSSH接続を許可
  • 「Bastion」インスタンスからは他のコンピュート・インスタンスおよびBaseDBへのSSH接続を許可
  • 「App1」インスタンスからのみデータベースへの接続を許可

また、各リソースには以下のようなセキュリティ属性および属性値を設定する想定です。

各リソースに設定するセキュリティ属性および属性値

ナビゲーション・メニューから「アイデンティティとセキュリティ」>「Zero Trust Packet Routing」>「ポリシー」を選択します。「ポリシーの作成」をクリックしてポリシー作成画面を表示します。「名前」と「説明」を入力したら「ポリシー・ステートメントの追加」からポリシー・ステートメントを作成できます。

ポリシーの作成画面

ポリシー・ステートメントは一から自分で記述することもできますが、ステートメントの作成を補助するために「ポリシー・テンプレート・ビルダー」や「簡易ポリシー・ビルダー」が用意されています。「ポリシー・テンプレート・ビルダー」ではSSH接続の許可やDBへの接続など一般的なシナリオに基づいたポリシー・ステートメントのテンプレートが自動入力されるため、テンプレートをもとにステートメントを記述することができます。

ポリシー・ステートメントの追加画面

今回は以下のポリシーを作成しました。

  • ZPR_SSH_POLICY
    各サーバへのSSH接続を許可するポリシー・ステートメントを構成
    in Networks.VCN1:test-nw VCN allow '<自端末グローバルIP>' to connect to Servers.Bastion:Bastion1 endpoints with protocol='tcp/22'
    in Networks.VCN1:test-nw VCN allow Servers.Bastion:Bastion1 endpoints to connect to Servers.App:App1 endpoints with protocol='tcp/22'
    in Networks.VCN1:test-nw VCN allow Servers.Bastion:Bastion1 endpoints to connect to Servers.App:App2 endpoints with protocol='tcp/22'
    in Networks.VCN1:test-nw VCN allow Servers.Bastion:Bastion1 endpoints to connect to Database.Sensitivity:High endpoints with protocol='tcp/22'
    with句を使用してアクセスを許可するプロトコルをSSH(tcp/22)に限定しています。また、自端末からBastionサーバへのSSHを許可するために、接続元を'<グローバルIP>'の形で指定しています。
  • ZPR_DB_POLICY
    App1からDBへの接続と、DBからOracle Service Networkへの接続を許可するポリシー・ステートメントを構成
    in Networks.VCN1:test-nw VCN allow Servers.App:App1 endpoints to connect to Database.Sensitivity:High endpoints with protocol='tcp/1521'
    in Networks.VCN1:test-nw VCN allow Database.Sensitivity:High endpoints to connect to 'osn-services-ip-addresses'
    BaseDBでは利用の前提としてDBシステムがOSNへ接続可能である必要があります。OSNを接続元または接続先として指定する際は'osn-services-ip-addresses'と指定します。
ポリシー・ステートメント画面。
ポリシー・ステートメント画面。OSNを接続元または接続先として指定した場合。

なお、接続はステートフルとして許可されるため、戻りの通信を許可するステートメントを明示的に構成する必要はありません。ステートレスとしてアクセスを許可したい場合はwith句においてconnection-state = 'stateless'を指定します。

リソースへのセキュリティ属性の適用

ポリシーを作成したら保護対象リソースにセキュリティ属性を適用することで、ポリシーによるアクセス制御が実施されるようになります。セキュリティ属性を適用する必要があるリソースは、ZPRによる保護対象が存在するVCNおよび保護対象のリソース自身となります。

ZPRページの「保護されたリソース」や、各リソースの詳細ページからセキュリティ属性を適用することができるため、今回は各リソースの詳細ページから適用しました。

仮想クラウド・ネットワークの詳細画面
インスタンスの詳細画面

セキュリティ属性適用時にはセキュリティ属性ネームスペースとセキュリティ属性(設定画面上の項目名は「キー」となっています)を選択して、さらに属性値を指定する必要があります。セキュリティ属性作成時に属性値タイプを「静的」とした場合は、ここで属性値を直接入力します。

セキュリティ属性の追加画面

属性タイプを「値リスト」とした場合は、あらかじめ指定した値から属性値を選択する形になります。

Add security attributes画面

作成したポリシーに合わせて以下のようにセキュリティ属性を適用しました。

リソース 名前 セキュリティ属性ネームスペース セキュリティ属性 属性値
VCN TEST_VCN Networks VCN1 test-nw
コンピュート App1 Servers App App1
コンピュート App2 Servers App App2
コンピュート Bastion Servers Bastion Bastion1
BaseDB ORCL Database Sensitivity High
リソース 名前 セキュリティ属性
ネームスペース
セキュリティ属性 属性値
VCN TEST_VCN Networks VCN1 test-nw
コンピュート App1 Servers App App1
コンピュート App2 Servers App App2
コンピュート Bastion Servers Bastion Bastion1
BaseDB ORCL Database Sensitivity High

ZPRページの「保護されたリソース」からセキュリティ属性を適用したリソースの一覧を確認できます。

保護されたリソース画面

接続の検証

最後に接続の検証を実施しました。各リソースにセキュリティ属性を適用するまでは、セキュリティ・リストによってのみリソースへのアクセスが制御されるため、セキュリティ・リストで許可した範囲において自端末や各サーバ間で自由に通信が可能でした。

セキュリティ属性適用後は以下のようにアクセスが制御されました。

SSH接続

自端末からは踏み台に見立てたコンピュート(Bastion)にのみSSH接続ができ、その他のサーバにはアクセスできなくなりました。またコンピュート間のSSH接続においても、Bastionからのみ各コンピュートにアクセスできるようになりました。

ネットワーク構成図。自端末からはBastionにのみSSH接続ができ、その他のサーバにはアクセスできない。
#Bastion→DB (SSH)
[opc@bastion ~]$ ssh -i db.key opc@10.0.1.174
Last login: Mon Jan  6 10:48:23 2025 from 10.0.0.79
[opc@orcl ~]$
#App1→DB (SSH)
[opc@bastion ~]$ ssh -i app.key opc@10.0.0.14
Activate the web console with: systemctl enable --now cockpit.socket
 
Last login: Mon Jan  6 01:48:45 2025 from 10.0.0.79
[opc@app1 ~]$
[opc@app1 ~]$ ssh -i db.key opc@10.0.1.174
ssh: connect to host 10.0.1.174 port 22: Connection timed out

DB接続

DBへの接続はApp1からのみ可能でApp2からは接続できなくなりました。

ネットワーク構成図。DBへの接続はApp1からのみ可能でApp2からは接続できなくなった。
#App1
[opc@app1 ~]$ sqlplus system@ORCL
 
SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Thu Jan 9 13:22:09 2025
Version 23.6.0.24.10
 
Copyright (c) 1982, 2024, Oracle.  All rights reserved.
 
Enter password:
Last Successful login time: Mon Jan 06 2025 02:04:00 +00:00
 
Connected to:
Oracle Database 23ai Standard Edition 2 Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.6.0.24.10
 
SQL>
#App2
[opc@app2 ~]$ sqlplus system@ORCL
 
SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Mon Jan 6 02:05:49 2025
Version 23.6.0.24.10
 
Copyright (c) 1982, 2024, Oracle.  All rights reserved.
 
Enter password:
ERROR:
ORA-12170: Cannot connect. TCP connect timeout of 20s for host 10.0.1.174 port

上記の通り、セキュリティ・リストで許可されていてもZPRポリシーで許可されていないアクセスはブロックされることが確認できました。

アクセス制御有効化のタイミングと保護対象について

ZPRによるアクセス制御はリソースにセキュリティ属性を適用するとすぐに有効化されます。そのためセキュリティ属性適用時にポリシーが作成されていない場合、対象リソースへのすべてのアクセスがブロックされるため注意が必要です。

また、セキュリティ属性が適用されたリソースだけがZPRポリシーに基づいて保護されます。つまり、VCNにセキュリティ属性が適用されているかどうかにかかわらず、セキュリティ属性が適用されていないリソースについてはZPRの保護対象とならず、セキュリティ・リストまたはNSGによってのみアクセスが制御されます。逆にセキュリティ属性を適用するとZPRの保護対象となるため、この状態でVCNのセキュリティ属性やZPRポリシーを削除するとそのリソースにはアクセスできなくなります。

保護対象リソースへの
セキュリティ属性の適用
VCNへのセキュリティ属性の適用
およびZPRポリシーの構成
セキュリティ・リスト
またはNSGの設定
リソースへのアクセス
適用する 構成する 設定する 許可
適用する 構成する 設定しない ブロック
適用する 構成しない 設定する ブロック
適用しない 構成する/構成しない 設定する 許可

サービスを使用してみて

OCI ZPRサービスを実際に試してみて、ネットワーク構成を意識せずにセキュリティを設定できるという新しいアプローチを実感することができました。この特徴は、従来のネットワークセキュリティとは一線を画するものであり、非常に興味深い体験でした。

一方で、リリースされて間もないこともあり、現時点では機能が十分とは言えず、セキュリティ・リストやNSGとの大きな差別化はできていない印象です。

今後の機能拡張に期待される点として、例えば、IAMとの連携や対応リソースの拡張(Object Storage、Function、コンテナなど)が挙げられ、これらが実現することで利用シーンが大きく広がると感じました。また、アクセスログの収集や分析といったLoggingサービスとの連携も、セキュリティ監視の観点で重要な機能になるでしょう。

さらに、より高度なポリシー記述が可能になることにも期待しています。Applied InventionによるZPRの概要説明では、以下のような柔軟な制御が可能であるとされています。

  • 場所や人によるアクセス制御
  • 時間帯による制御
  • 1日当たりのデータ量による制御

How ZPR Works - ZPR

これらの機能がOCI ZPRサービスに実装されれば、ネットワークセキュリティの新しい基準としての可能性がさらに広がるでしょう。また現時点では、VCN外のリソースに対しては依然としてIPアドレスを使用したポリシーの記述が必要です。マルチクラウドやハイブリッドクラウドが普及してきている現状において、セキュリティのネットワーク構成からの真の分離を目指すのであればこの点にどう対応していくかも重要だと考えます。

現段階ではまだ発展途上のサービスではありますが、そのポテンシャルは非常に高く、今後のアップデートに大いに期待しています。

おわりに

ZPRは、新しいネットワークセキュリティの形を提案する画期的な取り組みです。一方で、OCI ZPRサービスはまだ発展の途上にあり、これからの機能強化や拡張が期待されます。今後のサービスの進展に伴い、新たな情報があれば引き続きお知らせしていきます。

ラックではOCIだけでなく、AWS、Azure、Google Cloudにも対応しており、お客様のシステム環境の課題に合わせた最適な提案をします。マルチクラウドやハイブリッドクラウドも含めたシステム構成に関するお悩みがございましたら、ぜひラックまでお問い合わせください。

「クラウドインテグレーション」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ

関連記事

LAC WATCH

関連記事をご紹介します

  • Oracle Cloud Infrastructure(OCI)とは?OCIのポイントを押さえよう

  • 無料でセキュアなシステムを構築できる、OCIの要塞(Bastion)サービスとは

  • リソース停止忘れを解消!OCIリソース・スケジューラを使ったリソース管理

page top