Demonstração | DockerHub |
---|
Terceirize a administração de alguns contêineres para seus colegas de trabalho.
CaaSa fornece uma interface web simples para lidar com tarefas básicas de administração de contêineres:
Restringir permissões por contêiner e usuário
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
️ Para produção é um proxy reverso com terminação TLS na frente do CaaSa altamente recomendado
As funções são definidas por meio de variáveis de ambiente e podem conter estas permissões:
Existem 3 métodos disponíveis:
Para realizar logins, o CaaSa envia solicitações http-post para a URL definida na variável de ambiente AUTH_API_URL
. As solicitações contêm um corpo json com nome de usuário e senha. Os nomes dos campos json são definidos por meio das variáveis de ambiente AUTH_API_FIELD_USERNAME
(padrão: nome de usuário ) e AUTH_API_FIELD_PASSWORD
(padrão: senha ). Um código de resposta 2XX (por exemplo, 200 OK ) representa um login bem-sucedido.
Defina a variável de ambiente AUTH_API_URL=https://example.org
. Agora você pode fazer login com qualquer combinação de nome de usuário e senha.
️ Útil apenas para testes e demonstrações. Não é adequado para uso produtivo.
CaaSa pode ler o nome de usuário de um cabeçalho de solicitação http. Este cabeçalho deve ser fornecido por um proxy reverso na frente do CaaSa. Pode ser especificado através da variável de ambiente WEBPROXY_AUTH_HEADER
. Um nome de cabeçalho típico é Remote-User .
️ O cabeçalho deve ser fornecido pelo proxy reverso. Um valor fornecido por um cliente malicioso deve ser substituído.
Se um contêiner estiver visível no CaaSa, ele deverá ser anotado com um rótulo definido acima como ROLES_<labelname>
e listar todos os nomes de usuário permitidos (ou IDs de usuário). Os nomes de usuário não diferenciam maiúsculas de minúsculas.
docker run -it --rm --name caasa_demo --label caasa.admin.full=user1,user2 nginx:alpine
Neste exemplo, os usuários user1
e user2
recebem os direitos da função caasa.admin.full
para o contêiner caasa_demo
por meio da interface da web CaaSa.