NFSエクスポート・オプションの作業

このトピックでは、NFSエクスポート・オプションの基本機能と、ファイル・システムへのクライアント・アクセスの制御方法について説明します。

概要

NFSエクスポート・オプションを使用すると、セキュリティ・リスト・ルールのみを使用してVCNアクセスを制限する場合よりも詳細なアクセス制御を作成できます。NFSエクスポート・オプションを使用すると、マウント・ターゲットのエクスポートを介してファイル・システムに接続するIPアドレスまたはCIDRブロックのアクセス・レベルを指定できます。各クライアントのファイル・システムへのアクセスを不可にし、他のユーザーに表示されなくなるようにアクセスを制限できます。これにより、マルチテナント環境でより適切なセキュリティ制御が実現します。

NFSエクスポート・オプションのアクセス制御を使用すると、クライアントがファイル・システムに接続してデータを表示したり、書き込む機能を制限できます。たとえば、ファイル・システム内で、クライアントによるリソースの消費を許可するが、リソースの更新を許可しない場合は、「読取り専用」のアクセス権を設定します。また、ファイル・システムへのクライアント・ルート・アクセスを削減したり、指定したユーザーID (UID)およびグループID (GID)を、選択した匿名UID/GIDにマップすることもできます。NFSエクスポート・オプションが他のセキュリティ・レイヤーと連携する仕組みの詳細は、セキュリティについてを参照してください。

ヒント

ファイル・ストレージでのNFSエクスポート・オプションの作業に関するビデオを視聴してください。

必要なIAMポリシー

Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限がない、または認可されていないというメッセージが表示された場合は、自分がどのタイプのアクセス権を持っているか、およびどのコンパートメントで作業するかを管理者に確認してください。

管理者の場合: ユーザーによるファイル・システムの作成、管理および削除のポリシーにより、ユーザーはNFSエクスポート・オプションを管理できます。

ポリシーを初めて使用する場合は、ポリシーの開始共通ポリシーを参照してください。

エクスポート

NFSクライアントがマウント・ターゲットに接続するときにファイル・システムにアクセスする方法は、エクスポートによって制御されます。ファイル・システムは、マウント・ターゲットを介してエクスポートされます(使用可能になります)。各マウント・ターゲットには、1つ以上のエクスポートを含むエクスポート・セットが保持されます。ファイル・システムは、1つ以上のマウント・ターゲットを通じてエクスポートできます。インスタンスがファイル・システムをマウントするために、ファイル・システムには1つのマウント・ターゲットに1つ以上のエクスポートが必要です。エクスポートで使用される情報には、ファイル・システムOCID、マウント・ターゲットOCID、エクスポート・セットOCID、エクスポート・パスおよびクライアント・エクスポート・オプションがあります。通常、エクスポートはファイル・システムの作成時にマウント・ターゲットに作成されます。それ以降は、ファイル・システムと同じ可用性ドメインにあるマウント・ターゲットに、ファイル・システム用の追加エクスポートを作成できます。

詳細は、ファイル・システムのエクスポートを作成するにはを参照してください。

NFSエクスポート・オプション

NFSエクスポート・オプションとは、NFSクライアントがマウント・ターゲットに接続するときに付与されるアクセス権のレベルを指定する、エクスポート内の一連のパラメータです。エクスポート内のNFSエクスポート・オプション・エントリでは、単一のIPアドレスまたはCIDRブロック範囲に対するアクセス権を定義します。 エクスポートごとに最大100のオプションを設定できます。

アクセスを定義する必要がある個別のクライアントIPアドレスまたはCIDRブロックごとに、エクスポートに個別のエクスポート・オプションを入力する必要があります。たとえば、NFSクライアントのIPアドレス10.0.0.6、10.0.08および10.0.0.10にオプションを設定する場合、各IPアドレスに1つずつ、3つの個別のエントリを作成する必要があります。

ファイル・ストレージ・サービスでは、エクスポートの各エクスポート・オプション・エントリのリストされた順序が考慮されます。クライアントによるNFSリクエスト時に、ファイル・ストレージ・サービスでは、クライアント・ソースIPアドレスに一致する最初のセットのオプションを適用します。最初のセットのみが適用され、残りは無視されます。

たとえば、次の2つのエクスポート・オプションのエントリで、エクスポートのアクセスを指定する場合を考えます:

エントリ1: ソース: 10.0.0.0/16、アクセス: 読取り専用

エントリ2: ソース: 10.0.0.8、アクセス: 読取り/書込み

この場合、IPアドレス10.0.0.8からエクスポートに接続するクライアントは読取り専用アクセス権を持ちます。リクエスト・ソースIPアドレスは最初のエントリで指定されたCIDRブロックに含まれ、ファイル・ストレージ・サービスは最初に一致するオプションを適用します。

重要

1つ以上のマウント・ターゲットに含まれる1つ以上のエクスポートにファイル・システムを関連付けることができます。クライアントのソースIPアドレスが単一エクスポートのリストのエントリと一致しない場合、そのエクスポートはクライアントに表示されません。ただし、ファイル・システムには、同じまたはその他のマウント・ターゲット上の他のエクスポートを介してアクセスできます。ファイル・システムへのクライアント・アクセスを完全に拒否するには、ファイル・システムに関連付けられたマウント・ターゲットのエクスポートに、クライアント・ソースIPアドレスまたはCIDRブロックが含まれないようにします。

次のオプションを設定すると、エクスポート・アクセスを制御できます:

  • ソース: 接続しているNFSクライアントのIPアドレスまたはCIDRブロック。
  • 特権ソース・ポートが必要(true/false): この設定は、ソースで指定されたNFSクライアントが特権ソース・ポートから接続するために必要かどうかを決定します。特権ポートは、1-1023を含む任意のポートです。UNIX型システムでは、ルート・ユーザーのみが特権ポートを開くことができます。この値をtrueに設定すると、非特権ポートからのリクエストは許可されません。この設定のデフォルトは、エクスポートの作成方法によって異なります。明示的なClientOption配列のないエクスポートを作成すると、クライアント・オプションのrequirePrivilegedSourcePort属性がfalseに設定されます。ClientOption配列を明示的に作成した場合、requirePrivilegedSourcePorttrueにデフォルト設定されます。

    たとえば、デフォルトの選択を使用してコンソールでエクスポートを作成すると、requirePrivilegedSourcePortfalseに設定されます。APIでClientOption配列を使用したエクスポートを作成すると、requirePrivilegedSourcePorttrueに設定されます。

重要

「特権ソース・ポートが必要」trueに設定されている場合は、次の追加構成ステップに従う必要もあります:

  1. Unixのようなシステムからファイルシステムをマウントする場合は、マウント時にマウントコマンドに resvportオプションを含めます。例: 

    sudo mount -o resvport 10.x.x.x:/fs-export-path /mnt/yourmountpoint

    詳細は、UNIX形式のインスタンスからのファイル・システムのマウントを参照してください。

  2. Windowsシステムからファイル・システムをマウントする場合は、UseReserverdPortのレジストリ・キー値が1に設定されていることを確認してください。

    詳細は、Windowsインスタンスからのファイル・システムのマウントを参照してください。

  • アクセス(Read_Only、Read_Write): この設定はソースNFSクライアント・アクセスを指定します。指定しない場合は、Read_Writeにデフォルト設定されます。
  • Squashの識別: (すべて、ルート、なし): この設定は、ファイル・システムにアクセスするソース・クライアントのユーザーID (UID)とグループID (GID)がanonymousUidおよびanonymousGidに再マップされているかどうかを判断します。「すべて」を選択すると、すべてのユーザーとグループが再マップされます。「ルート」の場合、ルート・ユーザーのUID/GIDの組合せ0/0のみが再マップされます。「なし」の場合、ユーザーは再マップされません。指定しない場合は、「なし」にデフォルト設定されます。
  • anonymousUid: この設定は、「Squashの識別」オプションとともに使用します。ユーザーを再マップするときに、この設定を使用すると、選択したユーザーIDにデフォルトのanonymousUidの65534を変更できます。
  • anonymousGid: この設定は、「Squashの識別」オプションとともに使用します。グループを再マップするときに、この設定を使用すると、選択したグループIDにデフォルトのanonymousGidの65534を変更できます。

標準的なアクセス制御のシナリオ

ファイル・システムとエクスポートを作成すると、そのファイル・システムのNFSエクスポート・オプションが次のデフォルトに設定され、すべてのNFSクライアント・ソース接続でフル・アクセスが可能になります。アクセスを制限する場合、これらのデフォルトを変更する必要があります:

  • ソース: 0.0.0.0/0 (すべて)
  • 特権ソース・ポートが必要: False
  • アクセス: Read_Write
  • Squashの識別: なし

シナリオA: ホスト・ベースのアクセスの制御

2つのクライアントの管理対象ホスト環境を提供します。クライアントはマウント・ターゲットを共有しますが、それぞれ独自のファイル・システムを持ち、互いのデータにアクセスすることはできません。例:

  • CIDRブロック10.0.0.0/24に割り当てられているクライアントAでは、ファイル・システムAに対して読取り/書込みアクセス権が必要ですが、ファイル・システムBには必要ありません。
  • CIDRブロック10.1.1.0/24に割り当てられているクライアントBでは、ファイル・システムBに対して読取り/書込みアクセス権が必要ですが、ファイル・システムAには必要ありません。
  • CIDRブロック10.2.2.0/24に割り当てられているクライアントCは、ファイル・システムAまたはファイル・システムBにアクセスできません。
  • ファイル・システムAとBの両方は、単一のマウント・ターゲット、MT1に関連付けられます。各ファイル・システムには、MT1のエクスポート・セットに含まれるエクスポートが存在します。

クライアントAとクライアントBは異なるCIDRブロックからマウント・ターゲットにアクセスするため、両方のファイル・システムのエクスポートにクライアント・オプションを設定することで、1つのCIDRブロックへのアクセスのみを許可できます。どちらかのファイル・システムのエクスポートのNFSエクスポート・オプションにIPアドレスまたはCIDRブロックを含めないと、クライアントCはアクセスを拒否されます。

コンソールの例

CIDRブロック10.0.0.0/24に割り当てられているクライアントAに対してのみ読取り/書込みアクセスを許可するように、ファイル・システムAのエクスポート・オプションを設定します。クライアントBおよびクライアントCはこのCIDRブロックに含まれないため、ファイル・システムにアクセスできません。

このイメージは、ファイル・システムAのエクスポート・オプション構成を示しています。

CIDRブロック10.1.1.0/24に割り当てられているクライアントBに対してのみ読取り/書込みアクセスを許可するように、ファイル・システムBのエクスポート・オプションを設定します。クライアントAおよびクライアントCはこのCIDRブロックに含まれないため、ファイル・システムにアクセスできません。

このイメージは、ファイル・システムBのエクスポート・オプション構成を示しています。

CLIの例

CIDRブロック10.0.0.0/24に割り当てられているクライアントAに対してのみRead_Writeアクセスを許可するように、ファイル・システムAのエクスポート・オプションを設定します。クライアントBおよびクライアントCはこのCIDRブロックに含まれないため、ファイル・システムにアクセスできません。

oci fs export update --export-id <File_system_A_export_ID> --export-options '[{"source":"10.0.0.0/24","require-privileged-source-port":"true","access":"READ_WRITE","identity-squash":"NONE","anonymous-uid":"65534","anonymous-gid":"65534"}]'

CIDRブロック10.1.1.0/24に割り当てられているクライアントBに対してのみRead_Writeアクセスを許可するように、ファイル・システムBのエクスポート・オプションを設定します。クライアントAおよびクライアントCはこのCIDRブロックに含まれないため、ファイル・システムにアクセスできません。

oci fs export update --export-id <File_system_B_export_ID> --export-options '[{"source":"10.1.1.0/24 ","require-privileged-source-port":"true","access":"READ_WRITE","identity-squash":"NONE","anonymous-uid":"65534","anonymous-gid":"65534"}]'
APIの例

CIDRブロック10.0.0.0/24に割り当てられているクライアントAに対してのみREAD_WRITEアクセスを許可するように、ファイル・システムAのエクスポート・オプションを設定します。クライアントBおよびクライアントCはこのCIDRブロックに含まれないため、ファイル・システムにアクセスできません。

PUT/<Current_API_Version>/exports/<File_System_A_export_OCID>
Host: filestorage.us-phoenix-1.oraclecloud.com
<authorization and other headers>
{
    "exportOptions": [
        {
          "source": "10.0.0.0/24",
          "requirePrivilegedSourcePort": true,
          "access": "READ_WRITE",
          "identitySquash": "NONE",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}

CIDRブロック10.1.1.0/24に割り当てられているクライアントBに対してのみREAD_WRITEアクセスを許可するように、ファイル・システムBのエクスポート・オプションを設定します。クライアントAおよびクライアントCはこのCIDRブロックに含まれないため、ファイル・システムにアクセスできません。

PUT/<Current_API_Version>/exports/<File_System_B_export_OCID>
Host: filestorage.us-phoenix-1.oraclecloud.com
<authorization and other headers>
{
    "exportOptions": [
        {
          "source": "10.1.1.0/24",
          "requirePrivilegedSourcePort": true,
          "access": "READ_WRITE",
          "identitySquash": "NONE",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}

シナリオB: データ書込み機能の制限

消費する顧客にデータを提供しますが、データの更新は許可しません。

たとえば、アプリケーションが消費するためにリソースのセットをファイル・システムAで公開しても、変更しない場合があります。アプリケーションがIPアドレス10.0.0.8.から接続します。

コンソールの例

ファイル・システムAのエクスポートでソースIPアドレス10.0.0.8を「読取り専用」に設定します:

このイメージは、ファイル・システムAのエクスポート・オプション構成を示しています。

CLIの例

ファイル・システムAのエクスポートでソースIPアドレス10.0.0.8をREAD_ONLYに設定します:

oci fs export update --export-id <File_System_A_export_OCID> --export-options '[{"source":"10.0.0.8","require-privileged-source-port":"true","access":"READ_ONLY","identitysquash":"NONE","anonymousuid":"65534","anonymousgid":"65534"}]'
APIの例

ファイル・システムAのエクスポートでソースIPアドレス10.0.0.8をREAD_ONLYに設定します:

PUT/<Current_API_Version>/exports/<File_System_A_export_OCID>
Host: filestorage.us-phoenix-1.oraclecloud.com
<authorization and other headers>
{
    "exportOptions": [
        {
          "source": "10.0.0.8",
          "requirePrivilegedSourcePort": true,
          "access": "READ_ONLY",
          "identitySquash": "NONE",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}

シナリオC: ファイル・システム・セキュリティの向上

セキュリティを向上させるために、ファイル・システムAへの接続時にルート・ユーザーの権限を制限する場合があります。「Squashの識別」を使用してルート・ユーザーをUID/GID 65534に再マップします。UNIX型システムでは、このUID/GIDの組合せは、システム権限のないユーザーである「nobody」用に予約されています。

CLIの例
oci fs export update --export-id <File_System_A_export_OCID> --export-options '[{"source":"0.0.0.0/0","require-privileged-source-port":"true","access":"READ_WRITE","identitysquash":"ROOT","anonymousuid":"65534","anonymousgid":"65534"}]' 
APIの例
PUT/<Current_API_Version>/exports/<File_System_A_export_OCID>
Host: filestorage.us-phoenix-1.oraclecloud.com
<authorization and other headers>
{
    "exportOptions": [
        {
          "source": "0.0.0.0/0",
          "requirePrivilegedSourcePort": true,
          "access": "READ_WRITE",
          "identitySquash": "ROOT",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}
ヒント

ファイル・システムをクライアントから参照できないようにするには、exportOptions配列のすべてのプロパティを空の値に設定します。たとえば、

{
   "exportOptions": [
     {
      "source":"",
      "requirePrivilegedSourcePort":"",
      "access": "",
      "identitySquash":""}        
] 

コンソールの使用

ファイル・システムのエクスポート・オプションを設定するには
  1. ナビゲーション・メニューを開き、「ストレージ」をクリックします。「ファイル・ストレージ」で、「ファイル・システム」をクリックします。
  2. 「リスト・スコープ」セクションで、コンパートメントを選択します。選択したコンパートメント内のファイル・システムがすべて表示されます。
  3. エクスポート・オプションを設定するファイル・システムを検索し、「アクション」メニューをクリックして、「詳細の表示」をクリックします。
  4. 「エクスポート」リストでエクスポート・オプションを設定するエクスポートを検索し、アクション・メニューをクリックして、「詳細の表示」をクリックします。ファイル・システムにリストされるエクスポートがない場合、これを作成できます。詳細は、ファイル・システムのエクスポートを作成するにはを参照してください。

    ヒント

    正しいエクスポートを選択したことを確認するには、次を確認します:

  5. 「NFSエクスポート・オプションの編集」をクリックします。

  6. 次の変更を1つ以上行います:

    • リストのエクスポート・オプションのエントリを変更します。
    • 「+別のオプション」をクリックして、新しいエクスポート・オプション・エントリを作成します。
    • エントリの「アクション」メニューをクリックして、リスト内で上または下に移動します。
    • エントリの「アクション」メニューをクリックし、「削除」をクリックします。
  7. 終了したら、「更新」をクリックします。

CLIの使用

CLIの使用の詳細は、コマンド・ライン・インタフェース(CLI)を参照してください。

エクスポートを作成するには

コマンド・プロンプトを開き、oci fs export createを実行して、指定したエクスポート・セット内に指定したファイル・システムのエクスポートを作成します。この例では、NFSエクスポート・オプションとともにエクスポートを作成します。

例:

oci fs export create --export-set-id <export_set_OCID> --file-system-id <file_system_OCID> --path "</pathname>" --export-options '[{"source":"10.0.0.0/16","requireprivilegedsourceport":"true","access":"READWRITE","identitysquash":"NONE","anonymousuid":"0","anonymousgid":"0"}]' 

重要

エクスポート・パス名

このパスの先頭にはスラッシュ(/)を付ける必要があり、その後に0個以上のスラッシュ区切り要素を続けます。同じエクスポート・セットに関連付けられた2つのエクスポート・リソースの場合、最初のエクスポート・リソースのパス順序に2番目のエクスポート順序の完全パス要素の順序を含めることはできません。パスはスラッシュで終了できません。パス要素には、ピリオド(.)または連続した2つのピリオド(..)を指定できません。最後に、パスは255バイトを超えることはできません。

例:

許容:

/exampleおよび/path

/example1および/example2

許容不可:

/exampleおよび/example/path

/および/example

/example/

/example/path/../example1

エクスポート・オプションを更新するには

コマンド・プロンプトを開き、oci fs export updateを実行します。指定したファイル・システムのエクスポート・オプションを更新するには、--export-optionsを使用します。

例:


oci fs export update --export-id <export_OCID> --export-options '[{"source":"<0.0.0.0/0>","require-privileged-source-port":"true","access":"READ_ONLY","identity-squash":"ROOT","anonymous-uid":"65534","anonymous-gid":"65534"}]'

WARNING: Updates to export-options will replace any existing values. Are you sure you want to continue? [y/N]: y
ヒント

ファイル・システムをクライアントから参照できないようにするには、クライアント・オプションのすべてのプロパティを空の値に設定します。たとえば、

oci fs export update --export-id <export_OCID> --export-options '[{"source":"","require-privileged-source-port":"true","access":"READ_ONLY","identity-squash":"ROOT","anonymous-uid":"65534","anonymous-gid":"65534"}]'
エクスポートをリストするには

コマンド・プロンプトを開き、oci fs export listを実行して、指定したコンパートメント内のすべてのエクスポートをリストします。

例:

oci fs export list --compartment-id <target_compartment_id>
エクスポートを削除するには

コマンド・プロンプトを開き、oci fs export deleteを実行してエクスポートを削除します。

例:

oci fs export delete --export-id <export_OCID>
注意エクスポートを削除

すると、削除されたエクスポートで指定されたファイル・パスを使用してファイル・システムをマウントできなくなります。