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