Apsara File Storage NAS は、NFSv4 アクセス制御リスト (ACL) およびポータブルオペレーティングシステムインターフェイス (POSIX) ACL をサポートしています。 本ドキュメントでは、POSIX ACL と NFSv4 ACL について説明します。 また、これらの ACL を使用する際の注意事項も提供します。

アクセス制御とユーザー管理は、共有ファイルシステムを使用して異なるユーザーやグループ間でファイルを共有するエンタープライズレベルのユーザーにとって重要です。 ユーザーとグループに、さまざまなファイルやディレクトリへの異なるアクセス権を付与できます。 NAS は、特定の要件を満たすためにネットワークファイルシステム (NFS) ACL を提供しています。 ACL は、ファイルまたはディレクトリにアクセスするための一つ以上のアクセス権を、ユーザーまたはグループにそれぞれ付与する一つ以上のアクセス制御エントリ (ACE) で構成されています。

NFSv3 プロトコルには、POSIX ACL の拡張サポートが含まれています。 POSIX ACL は、ファイルモード作成マスクに対するアクセス制御のサポートを拡張しています。 所有者、グループ、および他のクラスのユーザーに加えて、特定のユーザーおよびグループに権限を付与することができます。 権限は、親オブジェクトから継承することもできます。 詳細については、『acl - Linux man page』をご参照ください 。

NFSv4 プロトコルには、POSIX ACL よりもきめ細かいアクセス制御を提供する NFSv4 ACL の拡張サポートが含まれています。 詳細については、 『nfs4_acl - Linux man page』をご参照ください。

NFSv3 プロトコルを使用して、NFSv4 ACL が適用されたファイルシステムをマウントすることがきます。 これらの NFSv4 ACL は、POSIX ACL に変換されます。 NFSv4 プロトコルを使用して、POSIX ACL が適用されたファイルシステムをマウントすることもできます。 これらの POSIX ACL は、NFSv4 ACL に変換されます。 ほとんどの場合、NFS ACL を使用する場合は、ファイルモード作成マスクおよび POSIX ACL ではなく、NFSv4 を使用してファイルシステムをマウントし、NFSv4 ACL を使用してアクセスを制御することを推奨します。 推奨事項は、下記の点に基づいています。 NFSv4 ACL と POSIX ACL が完全に互換性がない。 ACL とファイルモード作成マスク間の相互運用性が理想的な状態ではない。 NFSv3 を使用してマウントされたファイルシステムが、ロックをサポートしていない。 NFS ACL の機能の詳細については、「機能」をご参照ください。

POSIX ACL を使用する際の注意事項

  • サブディレクトリまたはファイルが、親ディレクトリから同じ ACL を継承できるデフォルトの継承方法を使用することを推奨します。 これにより、親ディレクトリ内に新しいファイルまたはサブディレクトリを作成する際に、別の ACL を設定することを回避できます。
  • ファイルシステムは、権限の検証を実行するたびに、すべての ACE をスキャンする必要があるため、最小数の ACE を保持することを推奨します。 ACL の不正使用は、ファイルシステムのパフォーマンスを低下させる可能性があります。
  • 再帰メソッド (setfacl -R) を使用して ACL を設定する場合はご注意ください。 大量のファイルとサブディレクトリを含むディレクトリに対し再帰メソッドを実行すると、大量のメタデータが生成されます。 これにより、ビジネスに影響を与える可能性があります。
  • ACL を設定する前に、グループと関連する権限を管理することを推奨します。 たとえば、ユーザーを一つ以上のグループに追加することができます。 ユーザーの権限を追加、削除、または変更する場合は、必要な権限を持つ別のグループにユーザーを移動するだけです。 グループの構造が変更されない限り、グループの ACL を変更する必要はありません。 単一のユーザーではなくグループに ACL を設定することを推奨します。 これにより、アクセスを制御し、権限をより適切に整理するための、シンプルかつ効果的で時間の節約に繋がる方法が提供されます。
  • 異なるクライアントにある複数のオブジェクトに対して POSIX ACL を適用できます。 このような場合、各オブジェクトに適用する ACL が同じであることを確認する必要があります。 Apsara File Storage NAS は、UID と GIDをバックエンドに保存します。 ユーザー名またはグループ名と UID または GID の間のマッピングが同じであることを確認する必要があります。
  • すべてのユーザーが他のクラスに付与されている権限を持つようになるため、他のクラスに最小限の権限を付与することを推奨します。 他のクラスが ACE よりも多くの権限を持っている場合、潜在的なセキュリティの脆弱性にさらされる可能性があります。
  • 他のクラスには最小限の権限を設定することを推奨します。 ファイルまたはディレクトリを作成する前に、umask 777 コマンドを使用してファイルモード作成マスクを設定することができます。 このコマンドは、新しいファイルまたはディレクトリを作成するためのパラメーターとしてマスクが使用される場合、ファイルモード作成マスクを 000 に設定します。 これにより、新しく作成されたファイルまたはディレクトリの権限が最小限となることを保証します。 詳細については、『umask and the default file mode creation mask』をご参照ください。
  • POSIX ACL を有効にすると、POSIX ACL の他のクラスのセマンティクスは、EVERYONE@principal のセマンティクスと等しくなります。 ファイルモード作成マスクの他のクラスのセマンティクスも、EVERYONE@princepal のセマンティクスと同じです。 システムが権限の検証を実行する際に、システムは他のクラスを EVERYONE@principal と同様に扱います。

NFSv4 ACL を使用する際の注意事項

  • UID 1001 などの UID または GID を使用して、ACL を設定してください。
  • NFSv4 ACL を設定した後には、ファイルモード作成マスクを設定しないことを推奨します。
  • nfs4_setfacl コマンドは、-a、-x、-m、およびその他のオプションを提供します。 これらのオプションを使用して、ACE を追加、削除、または変更することができます。 ただし、対話モードで ACLを編集する nfs4_setfacl -e <file> コマンドを使用することを推奨します。
  • NFSv4 ACL は ACE を拒否するのではなく許可することのみをサポートしているため、EVERYONE@principal には最小限の権限を設定することを推奨します。 EVERYONE@principal が他の ACE よりも多くの権限を持っている場合、潜在的なセキュリティの脆弱性にさらされる可能性があります。
  • NFSv4 ACL にはきめ細かい権限があります。 ほとんどの場合、このようなきめ細かいレベルで権限を細分化する必要はありません。 たとえば、ファイルへの書き込みアクセス権 (w) を付与し、ファイルの追加専用 (a) 属性を設定しなかった場合、 ファイルにデータを書き込む際にエラーが発生することがあります。 ディレクトリについても同じ問題が発生します。 予期しない権限エラーを回避するために、ACL を設定する nfs4_setfacl コマンドを使用する際には、大文字の (W) をパラメーターとして指定することを推奨します。 nfs4_setfacl コマンドは、W を完全な書き込みアクセス権に変換します。 ファイルの場合、W は wadT に展開されます。 ディレクトリの場合、W は wadTD に展開されます。
  • サブディレクトリまたはファイルが親ディレクトリから同じ ACL を継承できるデフォルトの継承方法を使用することを推奨します。 これにより、親ディレクトリ内に新しいファイルまたはサブディレクトリを作成するときに、別の ACL を設定することを回避できます。
  • ファイルシステムは、権限の検証を実行するたびに、すべての ACE をスキャンする必要があるため、最小数の ACE を保持することを推奨します。 ACL の不正使用は、ファイルシステムのパフォーマンスを低下させる可能性があります。
  • 再帰メソッド (nfs4_setfacl -R) を使用して ACL を設定する際にはご注意ください。 大量のファイルとサブディレクトリを含むディレクトリに対し再帰メソッドを実行すると、大量のメタデータが作成されます。 これにより、ビジネスに影響を与える可能性があります。
  • ACL を設定する前に、グループと関連する権限を管理することを推奨します。 たとえば、ユーザーを一つ以上のグループに追加することができます。 ユーザーの権限を追加、削除、または変更する場合は、必要な権限を持つ別のグループにユーザーを移動するだけです。 グループの構造が変更されない限り、グループの ACL を変更する必要はありません。 単一のユーザーではなくグループに ACL を設定することを推奨します。 これにより、アクセスを制御し、権限をより適切に整理するための、シンプルかつ効果的で時間の節約に繋がる方法が提供されます。