概要
Oracle Cloud Infrastructure(OCI)の プライベート・サービス・アクセス(Private Service Access / PSA) を活用し、インターネットを経由しないセキュアな接続環境を構築する手法を解説します。
PSAを導入することで、以下のルートをすべてプライベートネットワーク内で完結させることが可能です。
- Virtual Cloud Network(VCN)内から OCIサービスへのアクセス
- オンプレミス環境からOCIサービスへのアクセス(閉域網経由)
PSAを利用するメリットとしては以下が考えられます
- セキュリティ要件により、インターネット経由でのOCIサービス利用が制限されている場合に要件を満たせる
- オンプレミス環境から、閉域網(クローズドネットワーク)経由でOCIサービスに接続したい
構成
既存のOCI VCN構成およびオンプレミス環境に以下を追加します
- PSA Endpoint
今回はObject StorageとContainer Registryを対象とします - VCNに接続したオンプレミス環境がある場合はサービス名(FQDN)を解決できるようキャッシュDNSからOCI DNSへフォワード
設定手順
PSA Endpointの作成
- 対象となるサービスごとにPSAエンドポイントを作成します。詳細はこちらの作成手順(公式)もあわせてご参照ください
- PSA名:任意
- コンパートメント:任意
- サービス:Object Storage Service API、Container Registry
- サブネット:PSAエンドポイントを設定するサブネット
- プライベートIPv4アドレスの割当て:手動を選択してアドレスを入力
- セキュリティ:必要に応じてネットワーク・セキュリティ・グループ(NSG)を設定
- 作成後にコンソールからネットワーキング>>プライベート・ビュー>>対象VCNを選択してプライベート・ゾーンを選択すると、設定したサービスがドメインとして登録され、PSAエンドポイントがAレコードに登録されていることが確認できます
(オンプレ環境がある場合)キャッシュDNSのフォワーダー設定
-
コンソールからネットワーキング>>仮想クラウド・ネットワークで対象VCNを選択>>DNSリゾルバを選択
-
エンドポイントを選択して[エンドポイントの作成]を押下
-
以下を入力して[エンドポイントの作成]を押下
- 名前:任意
- コンパートメント:任意
- リスニング/転送:リスニング(クエリを受け取る側)を選択してアドレスを入力
- 必要に応じてネットワーク・セキュリティ・グループ(NSG)を設定
-
オンプレミスのキャッシュDNSに該当ドメインのForwarderとして先ほど設定したリスニングIPアドレスを設定
例えば、BINDの場合は以下のように設定します- zone
指定したサービスドメインを管理対象として定義 - type forward;
このゾーンの情報を自身で持つのではなく、他のサーバーに転送する - forward only;
転送先のサーバーから応答がない場合に、自身でルートヒントなどを使って再帰的な問い合わせを行わない(転送先のみを信頼する)設定 - forwarders { 10.105.2.250; };
ドメインの解決依頼を送る先のリスニングアドレスを指定
- zone
zone "objectstorage.ap-sydney-1.oraclecloud.com" IN {
type forward;
forward only;
forwarders { 10.105.2.250; };
};
zone "syd.ocir.io" IN {
type forward;
forward only;
forwarders { 10.105.2.250; };
};
検証結果
PSA endpoint設定前
グローバルIP経由に通信を行っています
VCN内VM
■ Object Storage疎通確認
[user@linux]$ host objectstorage.ap-sydney-1.oraclecloud.com
objectstorage.ap-sydney-1.oraclecloud.com is an alias for objectstorage.ap-sydney-1.oci.oraclecloud.com.
objectstorage.ap-sydney-1.oci.oraclecloud.com has address 134.70.92.3
[user@linux]$ oci os object list --bucket-name <bucket名> --namespace <namespace名>
{
"data": [
<オブジェクト内容>
],
"prefixes": []
}
[user@linux]$
■ Container Registry疎通確認
[user@linux]$ host syd.ocir.io
syd.ocir.io has address 129.148.157.4
[user@linux]$ docker pull syd.ocir.io/<namespace名>/<image名>:0.1
0.1: Pulling from <namespace名>/<image名>
:
Status: Downloaded newer image for syd.ocir.io/<namespace名>/<image名>:0.1
syd.ocir.io/<namespace名>/<image名>:0.1
[user@linux]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
syd.ocir.io/<namespace名>/<image名> 0.1 d8db8b8***** 2 years ago 117MB
[user@linux]$
オンプレミスサーバー
■ Object Storage疎通確認
[user@linux]$ host objectstorage.ap-sydney-1.oraclecloud.com
objectstorage.ap-sydney-1.oraclecloud.com is an alias for objectstorage.ap-sydney-1.oci.oraclecloud.com.
objectstorage.ap-sydney-1.oci.oraclecloud.com has address 134.70.92.3
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Mon Jan 19 00:13:59 2026 from 10.105.1.96
[user@linux]$ oci os object list --bucket-name <bucket名> --namespace <namespace名>
{
"data": [
<オブジェクト内容>
],
"prefixes": []
}
■ Container Registry疎通確認
[user@linux]$ host syd.ocir.io
syd.ocir.io has address 129.148.157.4
[user@linux]$
[user@linux]$ podman pull syd.ocir.io/<namespace名>/<image名>:0.1
Trying to pull syd.ocir.io/<namespace名>/<image名>:0.1...
:
[user@linux]$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
syd.ocir.io/<namespace名>/<image名> 0.1 d8db8b8***** 2 years ago 121 MB
[user@linux]$
PSA endpoint設定後
PSA endpointを経由するようになり、プライベートネットワーク内で完結しています
VCN内VM
■ Object Storage疎通確認
[user@linux]$ host objectstorage.ap-sydney-1.oraclecloud.com
objectstorage.ap-sydney-1.oraclecloud.com has address 10.105.2.231
objectstorage.ap-sydney-1.oraclecloud.com is an alias for objectstorage.ap-sydney-1.oci.oraclecloud.com.
objectstorage.ap-sydney-1.oraclecloud.com is an alias for objectstorage.ap-sydney-1.oci.oraclecloud.com.
[user@linux]$ oci os object list --bucket-name <bucket名> --namespace <namespace名>
{
"data": [
<オブジェクト内容>
"prefixes": []
}
■ Container Registry疎通確認
[user@linux]$ host syd.ocir.io
syd.ocir.io has address 10.105.2.232
[user@linux]$ docker pull syd.ocir.io/<namespace名>/<image名>:0.1
0.1: Pulling from <namespace名>/<image名>
:
Status: Downloaded newer image for syd.ocir.io/<namespace名>/<image名>:0.1
syd.ocir.io/<namespace名>/<image名>:0.1
[user@linux]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
syd.ocir.io/<namespace名>/<image名> 0.1 d8db8b8***** 2 years ago 117MB
[user@linux]$
オンプレミスサーバー
■ Object Storage疎通確認
[user@linux]$ host objectstorage.ap-sydney-1.oraclecloud.com
objectstorage.ap-sydney-1.oraclecloud.com has address 10.105.2.231
objectstorage.ap-sydney-1.oraclecloud.com is an alias for objectstorage.ap-sydney-1.oci.oraclecloud.com.
objectstorage.ap-sydney-1.oraclecloud.com is an alias for objectstorage.ap-sydney-1.oci.oraclecloud.com.
[user@linux]$ oci os object list --bucket-name <bucket名> --namespace <namespace名>
{
"data": [
<オブジェクト内容>
"prefixes": []
}
■ Container Registry疎通確認
[user@linux]$ host syd.ocir.io
syd.ocir.io has address 10.105.2.232
[user@linux]$ podman pull syd.ocir.io/<namespace名>/<image名>:0.1
Trying to pull syd.ocir.io/<namespace名>/<image名>:0.1...
:
[user@linux]$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
syd.ocir.io/<namespace名>/<image名> 0.1 d8db8b8***** 2 years ago 121 MB
[user@linux]$
まとめ
OCI PSAを利用することで、オンプレミスからクラウドサービスへのアクセスを完全に「閉じられたネットワーク」で実現できます。特にデータ転送量が多いObject Storageや、機密性の高いイメージを扱うContainer Registryを閉域で利用したい場合に非常に有効な手段となります。
