Oracle Cloud Infrastructureドキュメント

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エクスポート・オプションのエントリは、1つのIPアドレスまたはCIDRブロック範囲へのアクセスを定義します。

アクセス権を定義する個別のクライアント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、アクセス : Read/Write

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

重要

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

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

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

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

重要

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

  1. Unixライクなシステムからファイル・システムをマウントするときは、マウント時にmountコマンドにresvport オプションを含めます。 次に例を示します。: 

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

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

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

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

  • アクセス(Read_Only、Read_Write): この設定では、sourceNFSクライアント・アクセスを指定します。 指定されていない場合、デフォルトはRead_Writeになります。
  • アイデンティティ・スクワッシュ: (All, Root, None):この設定により、ファイルシステムにアクセスするsourceクライアントのユーザーID (UID)とグループID (GID)をanonymousUidおよびanonymousGidに再マップするかどうかが決まります。 「すべて」を選択すると、すべてのユーザーとグループが再マップされます。 「ルート」の場合は、ルート・ユーザーのUID/GIDの組み合わせ0/0のみが再マップされます。 「なし」の場合、ユーザーは再マップされません。 指定されていない場合、デフォルトは「なし」になります。
  • anonymousUid: この設定は、アイデンティティ・スクワッシュ・オプションとともに使用されます。 ユーザーを再マッピングするときに、この設定を使用して、デフォルトのanonymousUidを65534から任意のユーザーIDに変更できます。
  • anonymousGid: この設定は、アイデンティティ・スクワッシュ・オプションとともに使用されます。 グループを再マッピングする場合、この設定を使用して、デフォルトのanonymousGidを65534から任意のグループIDに変更できます。

一般的なアクセス制御のシナリオ

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

  • ソース: 0.0.0.0/0 (All)
  • 特権付きソース・ポートが必要:
  • アクセス: Read_Write
  • アイデンティティ・スクワッシュ: なし

シナリオ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ブロックからマウント・ターゲットにアクセスするため、両方のファイル・システム・エクスポートのクライアント・オプションを設定して、単一のCIDRブロックのみにアクセスできるようにすることができます。 クライアントCは、いずれかのファイル・システムのエクスポートに対応するNFSエクスポート・オプションにIPアドレスまたはCIDRブロックを含めないことでアクセスを拒否されます。

コンソールの例
CLIの例
APIの例

シナリオB: データを書き込む能力を制限

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

たとえば、ファイル・システムAのリソース・セットを公開して、アプリケーションが消費することはできますが、変更することはできません。 アプリケーションはIPアドレス10.0.0.8から接続します。

コンソールの例
CLIの例
APIの例

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

セキュリティを強化するために、ファイル・システムAに接続するときに、rootユーザー権限を制限します。 RootユーザーをUID/GID 65534に再マップするには、Identity Squashを使用します。 Unixライクなシステムでは、このUID/GIDの組み合わせは、システム特権を持たないユーザーである'nobody'のために予約されています。

CLIの例
APIの例

 

ヒント

どのクライアントにもファイルシステムを表示しない場合は、exportOptions配列内のすべてのプロパティを空の値に設定できます。 次に例を示します。

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

コンソールの使用

ファイル・システムのエクスポート・オプションを設定するには

CLIの使用

CLIの使用方法については、「コマンド・ライン・インタフェース(CLI)」を参照してください。

エクスポートを作成するには
エクスポート・オプションを更新するには
エクスポートをリストするには
エクスポートを削除するには

APIの使用