在降权并作为非特权用户运行之前,以root身份运行钩子
项目描述
jupyterhub-roothooks
在启动用户服务器之前以root身份运行钩子。
为什么?
当在Kubernetes上运行JupyterHub时,您希望用户Pod以非root用户身份运行。这是一种好的安全实践,并且在发生妥协的情况下可以大大减少影响范围。例如,如果您使用privileged: True
运行容器,用户服务器被妥协后可能会控制您的整个Kubernetes集群,甚至可能是您的云账户!没有人希望这样。
然而,人们确实希望在用户服务器启动之前以root身份运行一些命令。通常,这是为了进行一些挂载操作,尽管还有其他用例。
所以目标是
- 在用户服务器启动之前以root身份运行一些命令
- 如果这些命令失败,不应导致服务器无法启动。这通常只会向用户显示一个无用的“服务器启动失败”错误。在大多数情况下,启动服务器并记录一些日志,以便用户可以调查出错原因会更好。
jupyterhub-roothooks
就是为了解决这个具体问题而设计的。
如何?
准备镜像:使用repo2docker
repo2docker是用于与JupyterHub一起构建镜像的常用方法,因此jupyterhub-roothooks
指定了一些默认设置,使得与repo2docker集成变得容易。
-
将
jupyterhub-roothooks
安装到您的容器中,通过将其添加到您的requirements.txt
文件或environment.yml
文件中的pip:
部分。 -
在您的repo中添加一个
roothooks.d
目录。 -
在
roothooks.d
目录内添加您希望以root身份执行的脚本。这些脚本将按顺序执行,因此您可以通过在它们前面添加数字(如01-first-script.sh
,02-second-script.sh
)来明确指定它们的顺序。 -
确保这些脚本被标记为可执行(使用
chmod +x <脚本名称>
),并具有适当的shebang。 -
添加一个类似下面的
start
脚本#!/bin/bash -l exec jupyterhub-roothooks --uid 1000 --gid 1000 -- "$@"
这将启动
jupyterhub-roothooks
,它将在roothooks.d
中执行找到的任何可执行脚本,然后运行适当的命令,以非root用户ID 1000和组ID 1000启动用户服务器(通过$@
传递)。
z2jh配置
现在镜像已经准备就绪,您可以通过z2jh配置为用户pod授予提升的root权限。请注意,虽然容器将具有这些权限,但用户服务器本身将不会。在启动用户服务器之前,jupyterhub-roothooks
将丢弃这些权限。
hub:
config:
KubeSpawner:
container_security_context:
# Run the container *truly* as privileged. This can be very dangerous,
# but is required for doing most filesystem mounts
privileged: true
runAsUser: 0
allowPrivilegeEscalation: true
capabilities:
add:
- SYS_ADMIN
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
jupyterhub-roothooks-0.2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4db8894ca5f4867ff31e5fbc27f12a5cb824b3d86e5524465a6707e1744d8e38 |
|
MD5 | 8e08d7b1b009e7096fb751842437308f |
|
BLAKE2b-256 | 4c4aa65afdad1f78c38bef36fc0e496a98bc4c79b55d548dbf1479ad9ee16749 |
jupyterhub_roothooks-0.2.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3744dcccd01bc0bb6560517dd82034259dcbd7ca98e23ca13690cb98a25653fd |
|
MD5 | 65d902b9683bb6a774a1504a5100b33a |
|
BLAKE2b-256 | 66c4088d7fe454494ed75ace147f37541395c160209277aa8c569b818d327167 |