文件访问控制

Nextcloud 的 File Access Control(文件访问控制)应用让管理员建立并管理一组规则组。每个规则组包含一条或多条规则;只有组内所有规则都成立,才算该组匹配请求,随后拒绝访问。规则条件可以涉及 IP 地址、用户组、协作标签及下文列出的其他项目。

访问被拒绝后

用户被拒绝访问某个文件时,不能:

  • 创建或上传该文件;
  • 修改文件;
  • 删除文件;
  • 下载文件;
  • 通过 Nextcloud 桌面、移动等客户端同步文件。

示例

按照应用管理的说明安装 File Access Control 应用后,进入配置页面,找到 Flow 应用的设置。

基于用户组、时间与IP地址阻止访问的官方示例
官方示例:组内各条件共同决定是否拒绝访问。

第一个规则组 Support only 9-5 拒绝 Support 用户组成员在下午5点至次日上午9点之间访问任何文件。第二个规则组 Internal testing 阻止 Internal testers 用户组成员从本地网络以外访问文件。

拒绝访问文件夹

阻止访问文件夹最简单的方法是使用协作标签。如“可用规则”一节所述,文件本身或其上级文件夹之一带有指定标签即可。给文件夹或文件分配标签,再以规则组阻止该标签。

检查结果不依赖用户对标签的权限。因此建议使用受限或不可见标签,否则用户可以移除标签后重新分配。

下面的示例阻止访问带有 Confidential 标签的文件夹。

官方协作标签拒绝访问规则
官方示例:Confidential 标签。

阻止特定文件上传

可以阻止某些文件上传到 Nextcloud。定义基于 MIME 类型的规则后,访问控制引擎会阻止上传尝试。定义这类规则时,原文推荐使用正则表达式,以覆盖目标文件类型的各种已知媒体类型。

下面的正则表达式用于阻止 ZIP 文件上传:

/^application\/(zip|x-zip-compressed)$/i
官方MIME类型阻止上传规则
官方示例:按 MIME 类型阻止上传。

常见配置错误

阻止用户组

拒绝某个用户组访问时,要确认共享机制没有让用户绕回去。如果用户能创建公开链接,就能退出登录,再通过自己创建的公开链接访问文件。此时访问者没有登录身份,也就不属于被阻止的用户组,因而可能读取或修改文件。

原文建议的变通方案是建立一个包含实例所有用户的用户组,再复制同一规则,将条件设为 not member of(不是该组成员),拒绝所有不属于该组的访问者。

外部存储

虽然不能经由 Nextcloud 访问被阻止的外部存储文件,但有直接访问外部存储权限的用户,仍然可以在那里直接修改文件。若要完全阻止用户,原文建议关闭 Allow users to mount external storage(允许用户挂载外部存储)选项。

可用规则

所有规则都可以通过操作符选项反转,例如从 is 改成 is not。

  • 文件协作标签:文件本身或文件所有者的任何上级文件夹带有指定标签即可。访问控制中的标签应当受限,否则用户可以移除标签以重新获得访问权;推荐配合文件自动标记使用。
  • 文件 MIME 类型:例如文本文件的 text/plain、文件夹的 httpd/unix-directory。完整列表见 mimetypealiases.dist.json。
  • 文件名:文件的名称;is 与 is not 比较不区分大小写。
  • 文件大小:只在上传时可用。
  • 请求远端地址:访问者的 IPv4 或 IPv6 地址范围。
  • 请求时间:请求发生的时间段与时区。
  • 请求 URL:请求文件的 URL,指文件实际提供服务的地址,而非用户正在浏览的页面地址。
  • 请求 User-Agent:浏览器或客户端的 User-Agent;已有 Nextcloud 桌面、Android 和 iOS 客户端预配置选项。
  • 用户组成员身份:用户是否属于指定用户组。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容