caasa
v1.1.6
演示 | 码头工人中心 |
---|
将一些容器的管理外包给您的同事。
CaaSa 提供了一个简单的 Web 界面来处理基本的容器管理任务:
限制每个容器和用户的权限
version : ' 2.4 '
services :
caasa :
image : knrdl/caasa
restart : always
environment :
ROLES_caasa_admin_basic : info, state, logs, procs, files, files-read
ROLES_caasa_admin_full : info, info-annotations, state, logs, term, procs, files, files-read, files-write
AUTH_API_URL : https://identity.mycompany.com/login
AUTH_API_FIELD_USERNAME : username
AUTH_API_FIELD_PASSWORD : password
ports :
- " 8080:8080 "
volumes :
- /var/run/docker.sock:/var/run/docker.sock
mem_limit : 150m
cpu_count : 1
️ 对于生产环境,强烈建议在 CaaSa 之前使用带有 TLS 终止的反向代理
角色是通过环境变量定义的,并且可能包含以下权限:
有3种方法可用:
为了执行登录,CaaSa 向环境变量AUTH_API_URL
中定义的 URL 发送 http-post 请求。请求包含带有用户名和密码的 json 正文。 json 字段名称是通过环境变量AUTH_API_FIELD_USERNAME
(默认值: username )和AUTH_API_FIELD_PASSWORD
(默认值: password )定义的。 2XX 响应代码(例如200 OK )表示登录成功。
设置环境变量AUTH_API_URL=https://example.org
。现在您可以使用任何用户名和密码组合登录。
️ 仅对测试和演示有用。不适合生产用途。
CaaSa 可以从 http 请求标头中读取用户名。此标头必须由 CaaSa 前面的反向代理提供。它可以通过环境变量WEBPROXY_AUTH_HEADER
指定。典型的标头名称是Remote-User 。
️ 标头必须由反向代理提供。恶意客户端提供的值必须被覆盖。
如果容器在 CaaSa 中可见,则必须使用上面定义为ROLES_<labelname>
的标签进行注释,并列出所有允许的用户名(或用户 ID)。用户名被视为不区分大小写。
docker run -it --rm --name caasa_demo --label caasa.admin.full=user1,user2 nginx:alpine
在此示例中,用户user1
和user2
通过 CaaSa Web 界面被授予容器caasa_demo
的caasa.admin.full
角色的权限。