NFSエクスポートおよびエクスポート・オプションの処理
NFSエクスポートおよびエクスポート・オプションの基本機能、およびファイル・ストレージ・ファイル・システムへのセキュリティの向上およびクライアント・アクセスの制御方法について学習します。
概要
NFSエクスポート・オプションを使用すると、セキュリティ・リスト・ルールのみを使用してVCNアクセスを制限する場合よりも詳細なアクセス制御を作成できます。NFSエクスポート・オプションを使用すると、マウント・ターゲットのエクスポートを介してファイル・システムに接続するIPアドレスまたはCIDRブロックのアクセス・レベルを指定できます。各クライアントのファイル・システムへのアクセスを不可にし、他のユーザーに表示されなくなるようにアクセスを制限できます。これにより、マルチテナント環境でより適切なセキュリティ制御が実現します。
NFSエクスポート・オプションのアクセス制御を使用すると、クライアントがファイル・システムに接続してデータを表示したり、書き込む機能を制限できます。たとえば、ファイル・システム内で、クライアントによるリソースの消費を許可するが、リソースの更新を許可しない場合は、「読取り専用」のアクセス権を設定します。また、ファイル・システムへのクライアント・ルート・アクセスを削減したり、指定したユーザーID (UID)およびグループID (GID)を、選択した匿名UID/GIDにマップすることもできます。NFSエクスポート・オプションが他のセキュリティ・レイヤーと連携する方法の詳細は、ファイル・ストレージ・セキュリティについてを参照してください。
エクスポート
NFSクライアントがマウント・ターゲットに接続するときにファイル・システムにアクセスする方法は、エクスポートによって制御されます。ファイル・システムは、マウント・ターゲットを介してエクスポートされます(使用可能になります)。各マウント・ターゲットには、1つ以上のエクスポートを含むエクスポート・セットが保持されます。ファイル・システムは、1つ以上のマウント・ターゲットを通じてエクスポートできます。インスタンスがファイル・システムをマウントするために、ファイル・システムには1つのマウント・ターゲットに1つ以上のエクスポートが必要です。エクスポートで使用される情報には、ファイル・システムOCID、マウント・ターゲットOCID、エクスポート・セットOCID、エクスポート・パスおよびクライアント・エクスポート・オプションがあります。通常、エクスポートはファイル・システムの作成時にマウント・ターゲットに作成されます。それ以降は、ファイル・システムと同じ可用性ドメインにあるマウント・ターゲットに、ファイル・システム用の追加エクスポートを作成できます。
次のエクスポート管理タスクを実行できます:
NFSエクスポート・オプション
アクセスを定義する必要がある個別のクライアント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ブロック。
-
ポート: この設定は、ソースで指定されたNFSクライアントが特権ソース・ポートから接続するために必要かどうかを決定します。特権ポートは、1-1023を含む任意のポートです。UNIX系のシステムでは、rootユーザーのみが特権ポートを開くことができます。この値を「特権」に設定すると、非特権ポートからのリクエストは許可されません。この設定のデフォルトは、エクスポートの作成方法によって異なります。
デフォルトの選択を使用してコンソールでエクスポートを作成すると、「セキュア・エクスポート・オプションの使用」を選択しないかぎり、「ポート」が「任意」に設定されます。
明示的な
ClientOption
配列のないAPIまたはCLIを使用してエクスポートを作成すると、クライアント・オプションのrequirePrivilegedSourcePort
属性がfalse
に設定されます。ClientOption
配列を明示的に作成した場合、requirePrivilegedSourcePort
のデフォルトはtrue
です。
「ポート」が「特権」に設定されている場合、次の追加の構成ステップも実行する必要があります。
-
UNIX系のシステムからファイル・システムをマウントする場合は、マウント時にマウント・コマンドに
resvport
オプションを含めます。例:sudo mount -o resvport 10.x.x.x:/fs-export-path /mnt/yourmountpoint
詳細は、UNIXスタイル・インスタンスからのファイル・システムのマウントを参照してください。
-
Windowsシステムからファイル・システムをマウントする場合は、UseReserverdPortのレジストリ・キー値が1に設定されていることを確認してください。
詳細は、Windowsインスタンスからのファイル・システムのマウントを参照してください。
- アクセス: この設定はソースNFSクライアント・アクセスを指定します。
- 「読取り/書込み」がデフォルトです。
- 読取り専用
- 匿名アクセス: この設定は、マウント・ターゲットがLDAPサーバーでユーザーを見つけられない場合に、Kerberos認証の匿名アクセスを有効にするかどうかを指定します。「Anonymous Access」が「Not Allowed」で、ユーザーがLDAPディレクトリ内に見つからない場合、または検索がLDAPエラーを返すと、操作は失敗します。「匿名アクセス」が「許可」で、ユーザーがLDAPディレクトリに見つからない場合、操作ではエクスポートの「Squash UID」および「Squash GID」の値が使用されます。詳細は、Kerberos認証の使用を参照してください。ノート
エクスポートでKerberos認証を使用しない場合は、「許可しない」を選択します。 - 許可される認証オプション: この設定は、NFSクライアントで許可される認証方法を指定します。
- SYS: NFS v3 UNIX認証。エクスポート・オプションの作成時に許可される認証値を指定しない場合は、SYSのデフォルト値が使用されます。
- KRB5: NFS v3 Kerberos認証。
- KRB5I: NFS v3 Kerberos認証およびデータ整合性。
- KRB5P: NFS v3 Kerberos認証、データ整合性およびデータ・プライバシ(転送中暗号化)。
複数の認証方法を選択できます。たとえば、「許可される認証オプション」をKRB5およびKRB5Iに設定すると、データ整合性を持つ基本的なKerberosおよびKerberosが許可されますが、SYS認証およびKRB5Pは許可されません。
注意
空の「許可された認証オプション」を選択すると、すべての認証タイプが削除され、アクセスが失われる可能性があります。SYS認証を必要とするクライアントは、SYSオプションが存在しない場合、アクセス権を失います。重要
ファイル・システムのマウントに使用するマウント・コマンドは、エクスポート・オプションで許可される認証方法によって異なります。NFSクライアントがKerberos対応マウント・ターゲットを介して接続する場合、mountコマンドに
sec
オプションを含める必要があります。例:sudo mount -o sec=krb5 10.x.x.x:/fs-export-path /mnt/yourmountpoint
sudo mount -o sec=krb5i 10.x.x.x:/fs-export-path /mnt/yourmountpoint
sudo mount -o sec=krb5p 10.x.x.x:/fs-export-path /mnt/yourmountpoint
同じエクスポートでAUTH_SYSを使用して接続するNFSクライアントの場合、mountコマンドには
sec=sys
が含まれます。例:sudo mount -o sec=sys 10.x.x.x:/fs-export-path /mnt/yourmountpoint
エクスポートでAUTH_SYSのみを使用している場合、
sec
オプションはオプションです。コンソールで提供されるマウント・コマンド・サンプルは、選択したエクスポート・オプションに基づいています。ノート
NFSクライアントが複数の認証タイプを持つエクスポートを使用し、ファイル・システムがsec=<auth_type>
を指定せずにマウントされている場合、クライアントはエクスポートでサポートされている最も強い認証タイプを自動的に選択する必要があります。 - Squash: この設定は、ファイル・システムにアクセスするソース・クライアントがユーザーID (UID)とグループID (GID)をSquash UIDおよびSquash GIDに再マップするかどうかを決定します。
- なし: ユーザーは再マップされません。これはデフォルト値です。
- ルート: ルート・ユーザーのUID/GIDの組合せ0/0のみが再マップされます。
- すべて: すべてのユーザーとグループが再マップされます。
- Squash UID: この設定は、「Squash」および「Anonymous Access」オプションとともに使用されます。ユーザーを再マップするときに、この設定を使用すると、デフォルト値を65534から他のユーザーIDに変更できます。
- Squash GID: この設定は、「Squash」および「Anonymous Access」オプションとともに使用されます。グループを再マップするときに、この設定を使用すると、デフォルト値を65534から他のグループIDに変更できます。
標準的なアクセス制御のシナリオ
ファイル・システムとエクスポートを作成すると、そのファイル・システムのNFSエクスポート・オプションが次のデフォルトに設定され、すべてのNFSクライアント・ソース接続でフル・アクセスが可能になります。アクセスを制限する場合、これらのデフォルトを変更する必要があります:
- ソース: 0.0.0.0/0 (すべて)
- 特権ソース・ポートが必要: 任意の
- 許可されている認証オプション: SYS
- アクセス:: 読取り/書込み
- Squash: なし
ホスト・ベースのアクセスの制御
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のエクスポート・オプション:
- ソース: 10.0.0.0/24
- ポート: 特権
- アクセス:: 読取り/書込み
- Squash: なし
CIDRブロック10.1.1.0/24に割り当てられているクライアントBに対してのみ読取り/書込みアクセスを許可するように、ファイル・システムBのエクスポート・オプションを設定します。クライアントAおよびクライアントCはこのCIDRブロックに含まれないため、ファイル・システムにアクセスできません。
ファイル・システムBのエクスポート・オプション:
- ソース: 10.1.1.0/24
- ポート: 特権
- アクセス:: 読取り/書込み
- Squash: なし
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"}]'
CLIコマンドのフラグおよび変数オプションの詳細は、『コマンドライン・リファレンス』を参照してください。
CIDRブロック10.0.0.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 } ] }
データ書込み機能の制限
消費する顧客にデータを提供しますが、データの更新は許可しません。
たとえば、アプリケーションが消費するためにリソースのセットをファイル・システムAで公開しても、変更しない場合があります。アプリケーションがIPアドレス10.0.0.8.から接続します。
ファイル・システムAのエクスポートでソースIPアドレス10.0.0.8を「読取り専用」に設定します。ファイル・システムAのエクスポート・オプション:
- ソース: 10.0.0.8
- ポート: 特権
- アクセス: 読取り専用
- Squash: なし
ファイル・システム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"}]'
ファイル・システム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 } ] }
ファイル・システムのセキュリティの向上
セキュリティを向上させるために、ファイル・システムAへの接続時にルート・ユーザーの権限を制限する場合があります。「Squashの識別」を使用してルート・ユーザーをUID/GID 65534に再マップします。UNIX型システムでは、このUID/GIDの組合せは、システム権限のないユーザーである「nobody」用に予約されています。
ファイル・システムAのエクスポート・オプション:
- ソース: 0.0.0.0
- ポート: 特権
- アクセス:: 読取り/書込み
- Squash: ルート
- UID: 65534
- GID: 65534
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"}]'
CLIコマンドのフラグおよび変数オプションの完全なリストは、コマンドライン・リファレンスを参照してください。
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":""} ]
認証にKerberosを使用
セキュリティを強化するために、CIDRブロック10.0.0.0/24からファイル・システムAに接続するときに、データ整合性とデータ・プライバシ(転送中暗号化)を使用したKerberos認証が必要になります。「匿名アクセス」を使用して、LDAPルックアップで見つからないユーザーをスカッシュし、指定したUIDおよびGIDに進み、セカンダリ・グループなしで処理します。
ファイル・システムAに対してKerberos認証を有効にすると、エクスポート・オプションを設定します。
ファイル・システムAのエクスポート・オプション:
- ソース: 10.0.0.0/24
- ポート: 任意
- アクセス:: 読取り/書込み
- Squash: なし
- 匿名アクセス: True
- 許可されている認証オプション: KRB5P
- Squash UID: 65534
- Squash GID: 65534
エクスポートでは、「グループ・リストにLDAPを使用」も有効にする必要があります。
oci fs export update --export-id <File_System_A_export_OCID> --export-options '[{"source":"10.0.0.0/24","require-privileged-source-port":"false","access":"READ_WRITE","allowedAuth":"KRB5P","isAnonymousAccessAllowed":"true","identitysquash":"NONE","anonymousuid":"65534","anonymousgid":"65534"}]'
エクスポートでは、
--is-idmap-groups-for-sys-auth
もtrue
に設定する必要があります。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": false,
"access": "READ_WRITE",
"allowedAuth": "KRB5P",
"isAnonymousAccessAllowed": true,
"identitySquash": "NONE",
"anonymousUid": 65534,
"anonymousGid": 65534
}
]
}
エクスポートでは、
isIdmapGroupsForSysAuth
もtrue
に設定する必要があります。必要なIAMポリシー
Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限を持っていない、または認可されていないというメッセージが表示された場合は、持っているアクセス権のタイプと作業しているコンパートメントを管理者に確認してください。
管理者の場合: ユーザーによるファイル・システムの作成、管理および削除のポリシーにより、ユーザーはNFSエクスポート・オプションを管理できます。