安全注意事项#
The Littlest JupyterHub 处于测试阶段,不应在安全关键型情况下使用。我们将尽力确保安全,但有时为了大幅提高便利性会牺牲安全性。本页面包含有关 The Littlest JupyterHub 安全模型的信息。
系统用户账户#
每个 JupyterHub 用户在首次启动其服务器时都会获得一个自己的 Unix 用户账户。这可以保护用户之间的数据安全,为他们提供一个位于已知位置的主目录,并允许基于文件系统权限进行共享。
为名为
<username>
的 JupyterHub 用户创建的 Unix 用户账户是jupyter-<username>
。此前缀有助于防止与已存在的用户发生冲突——否则,名为root
的用户可以轻易获得服务器的完整 root 访问权限。如果用户名(包括jupyter-
前缀)超过 26 个字符,它将被截断为 26 个字符,并附加一个 5 个字符的哈希值。这使得用户名在 Linux 用户名 32 个字符的限制之内,同时也减少了冲突的可能性。将在
/home/jupyter-<username>
下为用户创建一个主目录。主目录的默认权限将更改为
o-rwx
(删除非组成员在主目录中读取、写入或列出文件和文件夹的权限)。默认情况下,未为此 Unix 系统用户设置密码。用于登录 JupyterHub 的密码(如果使用需要密码的身份验证器)与 Unix 用户的密码没有任何关系。
所有由 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。