Pular para o conteúdo

Docker Capabilities

Dica publicada em Linux / Introdução
Mundo Docker mundodocker
Hits: 3.991 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Docker Capabilities

Olá!

Hoje vamos ver algumas features de segurança que pertencem não apenas ao Docker, mas sim ao LXC (uma das tecnologias utilizadas pelo Docker), são as capabilities.

Em sistemas Unix like, há basicamente duas categorias de processos: processos privilegiados, que executam com ID 0 (superusuário) e os não-privilegiados, que executam com ID maior que 0.

Basicamente os processos privilegiados ignoram todas as verificações de permissões de kernel, enquanto os processos não-privilegiados estão sujeitos a algumas checagens para sua correta execução, normalmente: UID efetivo (usuário dono do arquivo/binário, etc), GID efetivos (grupo dono do arquivo/binário, etc) ou lista de grupo suplementar (mais conhecidas como ACL's - Access Control List).

Do kernel 2.2 em diante o Linux dividiu as formas tradicionais de privilégios associados ao superusuários em unidades diferentes, conhecidas como capacidades, que podem ser habilitadas e desabilitadas independentemente umas das outras. Essas capacidades são atribuídas por thread, ou seja, threads do mesmo processos podem ter suas capacidades de execução modificadas.

No Docker é possível modificar essas capacidades, habilitando ou desabilitando conforma sua necessidade, vale lembrar que todo container executa de forma não privilegiada, ou seja, ele tem sua execução restrita, quando é adicionada uma capacidade a execução de um container, é dado o privilegio para que o mesmo possa executar alguma ação como root, isso pode ser um problema de segurança, dependendo do seu ambiente.

Vamos ver algumas capacidades que podem ser atribuídas a um container, e que são normalmente utilizadas:
  • CAP_SETPCAP :: Modifica capacidades de um processo
  • CAP_SYS_MODULE :: Insere ou remove módulos do kernel
  • CAP_SYS_RAWIO :: Modifica memória do Kernel
  • CAP_SYS_PACCT :: Configura quota de processo
  • CAP_SYS_NICE :: Modifica prioridade do processo
  • CAP_SYS_RESOURCE :: Sobrescreve os limites de recursos
  • CAP_SYS_TIME :: Modifica a hora de sistema
  • CAP_SYS_TTY_CONFIG :: Configura interface tty
  • CAP_AUDIT_WRITE :: Escreve logs de auditoria
  • CAP_AUDIT_CONTROL :: Configura auditoria dos subsistema
  • CAP_MAC_OVERRIDE :: Ignora politicas de MC do Kernel
  • CAP_MAC_ADMIN :: Configuração de MAC
  • CAP_SYSLOG :: Modifica o comportamento de logs
  • CAP_NET_ADMIN :: Configura funções de rede
  • CAP_SYS_ADMIN :: Possibilita execução totalmente privilegiada.

Agora, para habilitar alguma capacidade (ou CAP) no Docker, pode ser utilizado o parâmetro: --cap-add=NOMEDACAP, algo parecido com isso:

# docker run --cap-add=NOMEDACAP -i -t --rm centos /bin/bash

Para remover alguma CAP basta adicionar o parâmetro --drop-cap, ficaria assim:

# docker run --cap-add=ALL --cap-drop=NET_ADMIN -i -t --rm centos /bin/bash

Seguindo os parâmetros acima, todas as CAPs serão habilitadas para este container, menos a CAP NET_ADMIN, com isso todas as demais operações serão permitidas ao container, menos as operações de rede, como modificação de ip, configurações de rotas etc.

Quer saber mais sobre Docker, veja nosso blog:
Referências:
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Sysdig para Ops

Monitorando o consumo de containers Docker

Docker - API Autenticada

Docker API com Python

Docker Exec

Bradesco NetEmpresa no CentOS 7 64 bit (Firefox 64 bit + Java 64 bit)

Configuração do Ioncube Loader no Centos 64 bit para ambiente CPanel (painel de controle para servidores web hosting)

Script em Python - Verificando se um site está infectado

Criando seu próprio tema splash screen para KDE 4

Instalando e configurando o discador ppoe rp-pppoe-3.8 no Kubuntu Linux

#1 Comentário enviado por removido em 28/08/2015 - 15:27h
Legal encontrar mais conteúdo sobre o Docker, escrito por autores nacionais.

*Bacana o site também.

---------------------------------
Keep it Simple, Stupid

Contribuir com comentário

Entre na sua conta para comentar.