NFSエクスポートおよびエクスポート・オプションの使用
NFSエクスポートおよびエクスポート・オプションの基本機能、およびファイル・ストレージ・ファイル・システムへのセキュリティの向上およびクライアント・アクセスの制御方法について学習します。
概要
NFSエクスポート・オプションを使用すると、セキュリティ・リスト・ルールのみを使用してVCNアクセスを制限する場合よりも詳細なアクセス制御を作成できます。NFSエクスポート・オプションを使用すると、マウント・ターゲットのエクスポートを介してファイル・システムに接続するIPアドレスまたはCIDRブロックのアクセス・レベルを指定できます。各クライアントのファイル・システムへのアクセスを不可にし、他のユーザーに表示されなくなるようにアクセスを制限できます。これにより、マルチテナント環境でより適切なセキュリティ制御が実現します。
NFSエクスポート・オプションのアクセス制御を使用すると、クライアントがファイル・システムに接続してデータを表示したり、書き込む機能を制限できます。たとえば、ファイル・システム内で、クライアントによるリソースの消費を許可するが、リソースの更新を許可しない場合は、「読取り専用」のアクセス権を設定します。また、ファイル・システムへのクライアント・ルート・アクセスを削減したり、指定したユーザーID (UID)およびグループID (GID)を、選択した匿名UID/GIDにマップすることもできます。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ブロック。
-
ポート: この設定は、ソースで指定されたNFSクライアントが特権ソース・ポートから接続するために必要かどうかを決定します。特権ポートは、1-1023を含む任意のポートです。UNIX系システムでは、rootユーザーのみが特権ポートを開くことができます。この値を「Privileged」に設定すると、非特権ポートからのリクエストは許可されません。この設定のデフォルトは、エクスポートの作成方法によって異なります。
デフォルトの選択を使用してコンソールでエクスポートを作成すると、「セキュア・エクスポート・オプションの使用」を選択しないかぎり、「ポート」が「任意」に設定されます。
明示的な
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クライアント・アクセスを指定します。
- 「読取り/書込み」がデフォルトです。
- Read Only.
- 匿名アクセス: この設定は、マウント・ターゲットがLDAPサーバーでユーザーを見つけられない場合に、Kerberos認証の匿名アクセスを有効にするかどうかを指定します。「匿名アクセス」が「許可されていません」で、ユーザーがLDAPディレクトリに見つからない場合、またはルックアップ試行でLDAPエラーが返された場合、操作は失敗します。「匿名アクセス」が「許可」で、ユーザーがLDAPディレクトリに見つからない場合、この操作ではエクスポートの「スカッシュUID」および「スカッシュ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対応のマウント・ターゲットを介して接続する場合、マウント・コマンドに
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: この設定は、ファイル・システムにアクセスするソース・クライアントに、Squash UIDおよびSquash GIDに再マップされたユーザーID (UID)およびグループID (GID)があるかどうかを判断します。
- なし: ユーザーは再マップされません。これはデフォルト値です。
- ルート: ルート・ユーザーのUID/GID組合せ0/0のみが再マップされます。
- すべて: すべてのユーザーとグループが再マップされます。
- Squash UID: この設定は、「Squash」および「匿名アクセス」オプションとともに使用されます。ユーザーを再マップするときに、この設定を使用すると、デフォルト値を65534から他のユーザーIDに変更できます。
- Squash GID: この設定は、「Squash」および「匿名アクセス」オプションとともに使用されます。グループを再マップするときに、この設定を使用すると、デフォルト値を65534から他のグループIDに変更できます。
標準的なアクセス制御のシナリオ
ファイル・システムとエクスポートを作成すると、そのファイル・システムのNFSエクスポート・オプションが次のデフォルトに設定され、すべてのNFSクライアント・ソース接続でフル・アクセスが可能になります。アクセスを制限する場合、これらのデフォルトを変更する必要があります:
- ソース: 0.0.0.0/0 (すべて)
- 特権ソース・ポートが必要: 任意の
- 許可されている認証オプション: SYS
- アクセス:: Read/Write
- 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"}]'
ファイル・システムBのエクスポート・オプションを設定して、CIDRブロック10.1.1.0/24に割り当てられているクライアントBに対してのみRead_Writeアクセスを許可します。クライアント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コマンドのパラメータおよび値の完全なリストは、CLIコマンド・リファレンスを参照してください。
ファイル・システムAのエクスポート・オプションを設定して、CIDRブロック10.0.0.0/24に割り当てられているクライアントAに対してのみREAD_WRITEアクセスを許可します。クライアント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 } ] }
ファイル・システムBのエクスポート・オプションを設定して、CIDRブロック10.1.1.0/24に割り当てられているクライアントBに対してのみREAD_WRITEアクセスを許可します。クライアント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コマンドのパラメータおよび値の完全なリストは、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
- スカッシュ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エクスポート・オプションを管理できます。
ポリシーを初めて使用する場合は、アイデンティティ・ドメインの管理および共通ポリシーを参照してください。