HeatWave MySQL Database Service(MDS)はセキュリテリストでしか接続を許可できない

はじめに

こんにちは、技術部の内藤です。

OCIのHeatWave MySQL Database Service(以下、MDS)は、なぜかNSGをアタッチできません。これは、おそらく多くの人が疑問に思っていると予想します。

が、できないものはできず、セキュリティリストでの設定が必要になりますので、かんたんに説明します。

公式でもセキュリティリストの説明がされている

以下の公式ドキュメントや、公式チュートリアルでは、NSGの説明はなくセキュリティリストについてのみ記載があります。

セキュリティリストでのアクセス制御

NSGが使えない以上、MDSへのアクセス制御はセキュリティリストで設定する必要があります。以下のいずれかで設定をしましょう。

  • サブネットのCIDRで許可する
    • 接続元が複数のインスタンスの場合
    • 動的にIPアドレスが変わる場合
  • プライベートIPで許可する
    • 接続元が特定のインスタンスの場合
    • 静的IPアドレスを設定している場合

静的IPにするには、インスタンス作成時の「プライベートIPv4アドレスの手動割当て」を選択すればできます。

プライベートIPv4アドレスの手動割当て

また、以下のドキュメントなどを読むに、セカンダリIPを付与することでも実現できるはずです。

セキュリティリストの設定例

MDSに接続するインスタンスが属するサブネットのCIDRが 172.22.0.0/21 とした場合の設定です。

  • ステートレス: いいえ
  • ソース: 172.22.0.0/21
  • IPプロトコル: TCP
  • 宛先ポート範囲: 3306

セキュリティリストの設定例

静的なプライベートIPを許可する際には、ソースのCIDRを 接続元のプライベートIP/32 にしてください。

意識したほうがよいこと

サブネットのCIDRを許可する場合は、当たり前ですが、そのサブネットにあるインスタンスなりがすべてMDSに接続できます。そのため、MDSに接続するインスタンス用のサブネットを作成して、MDSに接続しないインスタンスや他のリソースは別のサブネットに配置すると、セキュリティ的によいでしょう。

おわりに

おわりです。

OCIのOKEでFSSの転送中暗号化を有効にする

はじめに

こんにちは、技術部の内藤です。

OCIのOKEでプロビジョニングしたFSSではNSGを使えないという記事で、OKEでFSSをプロビジョニングする場合のNSGやセキュリティルールについて書きました。

今回は、FSSで転送中暗号化を有効にする場合の設定方法について説明します。転送中暗号化を使用することで、クライアントとFSSマウントターゲット間の通信をより安全に行うことができます。

転送中暗号化とは

転送中暗号化は、NFSクライアントとFSSマウントターゲット間の通信をTLSで暗号化する機能です。これにより、ネットワーク上でデータが盗聴されるリスクを軽減できます。

転送中暗号化を使用する場合、通常のNFSポートではなく、専用のポート(2051)を使用します。

ノードプールの設定

ノードに必要なパッケージのインストール

ノードのイメージがOracle Linux 8の場合で説明します。

転送中暗号化を使用するには、ノードに oci-fss-utils パッケージが必要です。OKEのノードプールでは、Cloud-Initスクリプトを使用してこのパッケージをインストールできます。
※正直、Cloud-Initスクリプトを使う方法がベストかは不明ですが、私はこの方法で実現できました

ノードプールに、以下のCloud-Initスクリプトを設定します。

まず、ノードプールの作成・編集画面で「カスタム・クラウド初期化スクリプト・テンプレートのダウンロード」から、テンプレートをダウンロードしてください。

Cloud-Initスクリプト

そして、必要なパッケージをインストールするために、コードを以下のようにして、コンソールに貼り付けます。

#!/bin/bash
# 変更NG https://docs.oracle.com/ja-jp/iaas/Content/ContEng/Tasks/contengusingcustomcloudinitscripts.htm
curl --fail -H "Authorization: Bearer Oracle" -L0 http://169.254.169.254/opc/v2/instance/metadata/oke_init_script | base64 --decode >/var/run/oke-init.sh
bash /var/run/oke-init.sh

# FSSで転送中暗号化を利用するために oci-fss-utils をインストール
# https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/intransitencryption.htm#upgrade
sudo yum-config-manager --enable ol8_developer
sudo dnf install -y oci-fss-utils
sudo dnf upgrade -y oci-fss-utils

注意点

カスタムのCloud-init初期化スクリプトを使用した管理対象ノードの設定に、以下の記載があります。

Kubernetes Engineは、cloud-initを使用して、管理対象ノードをホストするコンピュート・インスタンスを設定します。Kubernetes Engineは、管理対象ノードをホストする各インスタンスにデフォルトの起動スクリプトをインストールします。インスタンスが初めて起動すると、cloud-initによってデフォルトの起動スクリプトが実行されます。

デフォルトの起動スクリプトをカスタマイズする場合は、Kubernetes Engineによって提供されるロジックを変更しないでください。

私はこれを読まずに、デフォルトのコードを消して、ノードがAPIエンドポイントから認識されず、しばらくハマりました、、、

ブート・ボリュームの転送中暗号化の有効化

ノードプールの作成・編集画面で「転送中暗号化の使用」にチェックを入れます。

ブートボリュームの転送中暗号化

ノードプール作成後に上記変更をした場合

既存のノードを削除して、新しいノードを(自動で)立ち上げてください。ノードプールの変更を反映するには、変更後にノードを立ち上げる必要があります。

セキュリティリストの設定

転送中暗号化を使用する場合、マウントターゲットのサブネットに設定するセキュリティリストでポート2051の通信を許可する必要があります。

「ファイル・ストレージに対するVCNセキュリティ・ルールの構成」のシナリオC: マウント・ターゲットおよびインスタンスでTLS転送中暗号化を使用に従い、ノードが存在するサブネットのCIDRからの2051ポートのインバウンドをステートフルで許可します。

  • TCP
  • 宛先ポート: 2051
  • ソースCIDR: ノードがあるサブネット

ノードのサブネットが 172.22.1.0/24 の場合は、以下のようになります。

セキュリティ

参考

おわりに

OKEでFSSの転送中暗号化を使用する場合は、パッケージのインストールとセキュリティリストの設定が重要です。初めてだと地味にハマると思うので、本記事を参考に設定してみてください!

OCIのOKEでプロビジョニングしたFSSではNSGを使えない

はじめに

こんにちは、技術部の内藤です。

OKE(Oracle Kubernetes Engine)でPersistent Volume Claim(PVC)を使用してFile Storage Service(FSS)を動的にプロビジョニングする際、ネットワークセキュリティの設定で注意すべき点があります。

通常、OCIではセキュリティリストよりNetwork Security Group(NSG)を使用して管理することが推奨されていますが、2025年6月時点では、FSSの動的プロビジョニングでは、NSGの設定がおそらくできません。

以下の公式ドキュメントに、それらしい記述は見当たりません。

ファイル・ストレージ・サービスでのPVCのプロビジョニング

そのため、FSSのマウントターゲットが作成されるサブネットに対して、セキュリティリストを使用してアクセス制御を設定する必要があります。今回は、この設定方法を説明します。

FSSでのセキュリティ・ルールについて

インスタンスなりPodなりがFSSにアクセスするには、接続元からFSSのマウントターゲットへの通信を許可する必要があります。

前述の通り、OKEではFSSのNSGの設定ができないため、マウントターゲットが作成されるサブネットに適切なセキュリティリストを設定する必要があります。

許可が必要なポートとプロトコル

FSSを使用するために、以下のポートとプロトコルの通信を許可する必要があります。

以下の例は、異なるサブネットかつ転送中の暗号化をしない場合です。

接続元とFSSで同一サブネットかどうかや転送中暗号化を有効にしているかなどで設定は変わるので、詳細は以下のドキュメントをご覧ください。

ファイル・ストレージに対するVCNセキュリティ・ルールの構成

マウントターゲットのサブネットに設定するセキュリティリスト

以下のルールをすべてIngressのステートフルで許可します。

  • 1つ目
    • TCP
    • 宛先ポート: 111,2048-2050
    • ソースCIDR: ノードがあるサブネット
  • 2つ目
    • UDP
    • 宛先ポート: 111,2048
    • ソースCIDR: ノードがあるサブネット

ノードのサブネットが 172.22.1.0/24 だとしたら、以下の画像のようになります。

セキュリティリストの設定

おわりに

いずれはKubernetesのマニフェストでNSGが設定できるようになることを期待しつつ、FSSを利用する際はしばらくはセキュリティリストで対応しましょう。