こんにちは。g.saitoです。
先日、ファイル共有のためオブジェクト・ストレージで事前承認済みリクエストを作成したところ、現在のURLは非推奨で将来的にサポートされなくなる旨のメッセージが出てきました。
リンクからドキュメントへ飛んでみると、オブジェクト・ストレージの専用エンドポイントが提供されるというアップデートがありましたので、今回はその内容についてご紹介していきます。
目次
専用エンドポイントの概要
現行、オブジェクト・ストレージでは、テナンシが違えどリージョンが同じであれば以下のように共通のエンドポイントへアクセスしています。
- https://objectstorage.$region.oraclecloud.com
※$regionはリージョン識別子。リージョン識別子についての詳細はこちら。
しかし専用エンドポイントでは
- https://$namespace.objectstorage.$region.oci.customeroci.com
といったように、テナント固有のネームスペース($namespace)がプレフィックスとして付き、ドメインがoci.customeroci.comへ変更になります。
これにより、オブジェクト・ストレージへのアクセスはテナント毎に完全に分離されます。
考慮事項
- 現行のエンドポイントもしばらくの間は使用可能(廃止の少なくとも1年以上前に通知されるとのこと)
- サービスゲートウェイを使用せず、かつプロキシサーバやファイアウォールによってインターネットへのアクセスを制限している場合、*.oci.customeroci.comをホワイトリストに追加する必要有
- ネームスペースに英数字以外の特殊文字が含まれるテナンシでは、OCI SDK/CLIでの専用エンドポイントの使用は非推奨
専用エンドポイントの利点
専用エンドポイントを使用し、オブジェクト・ストレージへのアクセスをテナント毎に分離することで、次のような利点があります。
- オブジェクト・ストレージへのアクセスがテナント毎に分離されることで、組織のセキュリティ及びコンプライアンス要件を満たすのに役立つ
- セキュリティ・ソフトウェアによるオブジェクト・ストレージ・エンドポイントのDNSベース・ブロッキングの影響を最小限に抑える
- テナントレベルでサイバー攻撃(DDoS、XSS等)保護が提供される
APIでのURL変化
APIで専用エンドポイントを使用しオブジェクト・ストレージへアクセスする場合、URL構造は具体的にどう変わるのか新旧対応表で見ていきましょう。
※変更になる部分は太字で表示しています。
APIタイプ | 現在のURL | 新規URL |
ネイティブ | objectstorage.$region.oraclecloud.com | objectstorage.$region.oci.customer-oci.com (ネームスペースが不明な場合にのみ使用されます。例: GetNamespace / WorkRequestsなど) $namespace.objectstorage.$region.oci.customer-oci.com |
S3互換 | $namespace.compat.objectstorage.$region.oraclecloud.com | $namespace.compat.objectstorage.$region.oci.customer-oci.com |
Swift | swiftobjectstorage.$region.oraclecloud.com | swiftobjectstorage.$region.oci.customer-oci.com $namespace.swiftobjectstorage.$region.oci.customer-oci.com |
PAR | objectstorage.$region.oraclecloud.com/p/<>/n/<>/b/<>/o/ | $namespace.objectstorage.$region.oci.customer-oci.com/p/<>/n/<>/b/<>/o/ |
GetNamespaceなどいくつかの例外的な操作を除いた全てのURLにネームスペースが付き、ドメインもcustomer-oci.comへ変わっていることがわかります。
接続確認
今回は以下の方法で専用エンドポイントを使用しオブジェクト・ストレージへ接続してみます。
- 事前承認済みリクエスト(PAR)
- S3互換API
- WinSCP
- Rclone
- OCI CLI
事前承認済みリクエスト(PAR)
まず事前認証済みリクエストで接続確認してみましょう。
冒頭でもお話しましたが現在は事前承認済みリクエストを作成すると、新旧両方のURLが発行されます。
専用エンドポイントを使用している下のURLで、無事にオブジェクトへ接続できました。
S3互換API
次にS3互換APIでも接続確認をしてみましょう。
今回はWinSCPとRcloneを例にとって確認してみます。
WinSCP
WinSCPのインストールや現行のエンドポイントを使用した接続方法については以前の記事を参照してください。
WinSCPで専用エンドポイントを使用して接続するには、ログイン時に指定する[ホスト名]を上述の新URLに変更します。
設定変更後、シークレットキーを入力してログインし、バケットの中身がリストできればOKです。
Rclone
Rcloneのインストールやセットアップ・現行のエンドポイントを使用した接続方法については以前の記事を参照してください。
Rcloneで専用エンドポイントを使用して接続するには、configファイル内のエンドポイントの指定を、上述の新URLに変更します。
[root@rclone ~]# cat .config/rclone/rclone.conf
[oldURL_objectstorage]
type = s3
provider = Other
access_key_id = 163649ed6069554e75f52a2236657ff3d62eae6a
secret_access_key = ********************************************
region = ap-tokyo-1
endpoint = https://*****.compat.objectstorage.ap-tokyo-1.oraclecloud.com #現在のURL
acl = private
[newURL_objectstorage]
type = s3
provider = Other
access_key_id = 163649ed6069554e75f52a2236657ff3d62eae6a
secret_access_key = ********************************************
region = ap-tokyo-1
endpoint = https://*****.compat.objectstorage.ap-tokyo-1.oci.customer-oci.com #新URL
acl = private
[root@rclone ~]#
[root@rclone ~]#
以下のコマンドでバケットの中身がリストできればOKです。
rclone ls 接続名:バケット名
[root@rclone ~]# rclone ls newURL_objectstorage:testtokyo
428582526 phantom.mp4
39316 test.png
[root@rclone ~]#
[root@rclone ~]#
OCI CLI
最後に、OCI CLIでも接続確認してみましょう。
ブログ執筆(2024年6月)時点では、OCI CLIによる専用エンドポイントを使用したオブジェクト・ストレージへの接続は以下のフラグオプションとなっています。
※こちらも、専用エンドポイントがデフォルトになる場合は十分事前にアナウンスがあるとのこと
--realm-specific-endpoint
今回は接続確認のため、以下の通りネームスペース取得コマンドに専用エンドポイントのフラグオプションを付けて、デバックモードで実行してみます。
oci os ns get --realm-specific-endpoint -d
エンドポイントが上述の新URLになっており、かつ、ネームスペースが取得できていればOKです。
[root@rclone ~]# oci os ns get --realm-specific-endpoint -d
DEBUG:oci_cli.cli_metrics: 2024-06-24 13:09:18.730385: Metrics is not enabled
Linux-5.15.0-206.153.7.el8uek.x86_64-x86_64-with-oracle-8.9
System name: Linux
System release : 5.15.0-206.153.7.el8uek.x86_64
System version: #2 SMP Thu May 9 15:52:29 PDT 2024
env OCI_PYTHON_SDK_NO_SERVICE_IMPORTS is set
DEBUG:oci_cli.cli_util:Config File: dict_keys(['log_requests', 'additional_user_agent', 'pass_phrase', 'user', 'fingerprint', 'tenancy', 'region', 'key_file'])
DEBUG:oci_cli.cli_util:region: Environment Variable or Parameter
DEBUG:oci.base_client.139804325808168:Endpoint: https://{namespaceName+Dot}objectstorage.ap-tokyo-1.oci.customer-oci.com
INFO:oci.base_client.139804325808168: 2024-06-24 13:09:18.773435: Request: GET https://objectstorage.ap-tokyo-1.oci.customer-oci.com/n
Not using Expect header...
〜〜〜
省略
〜〜〜
DEBUG:oci_cli.cli_util: 2024-06-24 13:09:18.804580: time elapsed calling to_dict from render: 3.335997462272644e-06
DEBUG:oci_cli.cli_util: 2024-06-24 13:09:18.805608: total memory usage before printing: 349.7KiB (358072)
{
"data": "**********" #ここにネームスペースが表示されればOK
}
DEBUG:oci_cli.cli_util: 2024-06-24 13:09:18.805747: Time elapsed printing response data: <1ms
DEBUG:oci_cli.cli_util: 2024-06-24 13:09:18.805812: total memory usage after printing: 349.7KiB (358072)
[root@rclone ~]#
[root@rclone ~]#
まとめ
今回は、オブジェクト・ストレージの専用エンドポイントについてご紹介しましたが、いかがでしたでしょうか。
専用エンドポイントの提供はもう開始しており、現行のエンドポイントも近い将来サポートされなくなるようです。
設定変更の手間をほぼかけずにセキュリティ向上のメリットを享受できるため、これを機に専用エンドポイントへの移行を検討してみてはいかがでしょうか。
以上、最後までご覧いただきありがとうございました。