安全注意事项#

最小 JupyterHub 处于测试阶段,不应在安全关键情况下使用。我们会尽力保持安全,但有时会为了方便而牺牲安全。本页包含有关最小 JupyterHub 安全模型的信息。

系统用户帐户#

每个 JupyterHub 用户在首次启动服务器时都会获得自己的 Unix 用户帐户。这可以保护用户免受彼此的影响,为他们在已知位置提供主目录,并允许基于文件系统权限进行共享。

  1. 为名为 <username> 的 JupyterHub 用户创建的 Unix 用户帐户是 jupyter-<username>。此前缀有助于防止与已存在用户发生冲突 - 否则,名为 root 的用户可以轻松获得对服务器的完全 root 访问权限。如果用户名(包括 jupyter- 前缀)超过 26 个字符,则会在 26 个字符处截断,并附加一个 5 个字符的哈希值。这将用户名保持在 Linux 用户名限制的 32 个字符以内,同时还减少了冲突的可能性。

  2. 用户的主目录在 /home/jupyter-<username> 下创建。

  3. 主目录的默认权限使用 o-rwx 进行更改(删除非组成员在主目录中读取、写入或列出文件和文件夹的能力)。

  4. 默认情况下,不会为该 Unix 系统用户设置密码。用于登录 JupyterHub 的密码(如果使用需要密码的身份验证器)与 Unix 用户的密码无关。

  5. 由最小 JupyterHub 创建的所有用户都将添加到用户组 jupyterhub-users 中。

sudo 管理员访问权限#

JupyterHub 管理员用户将添加到用户组 jupyterhub-admins 中,该组被授予使用终端上的 sudo 命令对整个服务器的完全 root 访问权限。无需密码。

这是一种 **非常** 大的权限,他们几乎可以对服务器做任何事情 - 查看其他人的工作、修改它、以酷炫的方式破坏服务器等等。这也意味着 **如果管理员的凭据被泄露(容易猜到的密码、密码重复使用等),整个 JupyterHub 就会被泄露。**

安全地注销用户#

从 JupyterHub 管理控制台中删除用户时,他们的 Unix 用户帐户 **不会** 被删除。这意味着即使您将他们从 JupyterHub 中删除,他们也可能继续访问服务器。管理员应手动从服务器中删除用户,并在需要时存档其主目录。例如,以下命令会删除与 JupyterHub 用户 yuvipanda 关联的 Unix 用户。

sudo userdel jupyter-yuvipanda

如果从服务器中删除的用户是管理员,则必须格外小心,因为他们可能之前修改过系统以继续访问。

每个用户 /tmp#

/tmp 在大多数计算系统中由所有用户共享,这始终是安全问题的根源。最小 JupyterHub 使用 systemd 的 PrivateTmp 功能为每个用户提供他们自己的短暂 /tmp

HTTPS#

任何面向互联网的 JupyterHub 应该使用 HTTPS 来保护其流量。有关如何在 JupyterHub 中使用 HTTPS 的信息,请参见 启用 HTTPS