安全注意事项#

The Littlest JupyterHub 处于测试阶段,不应在安全关键型情况下使用。我们将尽力确保安全,但有时为了大幅提高便利性会牺牲安全性。本页面包含有关 The Littlest 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. 所有由 The Littlest JupyterHub 创建的用户都将添加到用户组 jupyterhub-users 中。

管理员的 sudo 访问权限#

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

这是一项巨大的权力,他们几乎可以对服务器做任何他们想做的事情——查看他人的工作、修改它、以酷炫有趣的方式破坏服务器等等。这也意味着如果管理员的凭据被泄露(易猜密码、密码重复使用等),整个 JupyterHub 都会被泄露。

安全地注销用户#

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

sudo userdel jupyter-yuvipanda

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

每个用户的 /tmp#

在大多数计算系统中,/tmp 由所有用户共享,这一直是安全问题的根源。The Littlest JupyterHub 使用 systemd 的 PrivateTmp 功能为每个用户提供自己的临时 /tmp

HTTPS#

任何面向互联网的 JupyterHub 都应使用 HTTPS 来保护其流量。有关如何将 HTTPS 与 JupyterHub 配合使用的信息,请参阅启用 HTTPS