Docker - API Autenticada

Publicado por Mundo Docker em 15/03/2016

[ Hits: 3.220 ]

Blog: http://www.mundodocker.com.br

 


Docker - API Autenticada



Oi pessoal,

Uma das grandes vantagens em se utilizar o Docker em vez de LXC puro é a facilidade de se trabalhar utilizando uma API de integração. Isso facilita e agiliza a vida, tanto de programadores quanto do pessoal de operações.

Alguns cuidados devem ser tomados é claro, entre eles em não expor a API de seu host Docker, pois nativamente não há um método de limitar o acesso.

Existem soluções para isso? É claro, e trago hoje uma delas: Docker API com Basic Authentication.

Passo 1:

Primeiramente você deve expor a API do Docker apenas localhost, para isso você deverá editar o arquivo de configuração, no nosso exemplo (CentOS 7) é no /etc/sysconfig/docker, e deixe-o assim:

OPTIONS='-H tcp://127.0.0.1:2376 -H unix:///var/run/docker.sock'

Em seguida reinicie o serviço do Docker:

# systemctl restart docker.service

Passo 2:

Agora precisamos instalar e configurar um proxy http (Nginx, Apache, etc), no nosso exemplo vamos utilizar o Nginx, para isso:

# yum install nginx -y

Agora precisamos definir as credenciais de acesso, é simples, basta criar .htpasswd e fazer com que o proxy exija usuário e senha em uma determinada url, vamos lá:

# htpasswd -c /etc/nginx/.htpasswd USUARIO

Ele solicitará a senha, digite-a duas vezes e está pronto seu arquivo de autenticação.

Agora vamos a configuração do proxy, para isso precisamos editar o arquivo /etc/nginx/conf.d/default.conf e deixe-o da seguinte forma:

server {
   listen 2375 default_server;
   server_name localhost;
   location / {
      proxy_pass http://127.0.0.1:2376;
      auth_basic_user_file /etc/nginx/.htpasswd;
      auth_basic "Acesso restrito a API do Docker";
   }
}

O que falta? Reiniciar o serviço do Nginx:

# systemctl restart nginx.service

Testes:

Depois de tudo configurado (se não encontrar nenhum erro no caminho também), basta você testar de uma forma bem simples:

http://ipdoservidor:2375/info

ele solicitará os dados informados anteriormente via htpasswd e retornará algumas informações do Docker e dos containers que está em execução neste host.

Você pode optar por outro método, que é o certificado SSL diretamente na API do Docker, isso garante que apenas clientes confiáveis tenham acesso ao host (pois deverão tem o certificado client configurado). E claro, você pode configurar para que o Nginx trabalhe sob SSL, isso garante que, além da autenticação com usuário e senha, você ainda tenha todos os seus dados trafegados de forma criptografada (esse sim é um ótimo método).

Abraços!

Referência: http://www.mundodocker.com.br/docker-api-autenticada

Outras dicas deste autor

Docker: Persistindo dados -BTSync

Docker Exec

Monitorando o consumo de containers Docker

Docker Capabilities

Docker, Git e PHP

Leitura recomendada

Protegendo o servidor SSH de ataque "brute force"

Site para criar regras IPtables

ufw - Como ativar permanentemente o Firewall no Manjaro Linux

Projeto Root - Cifrando Dados com TrueCrypt

Série de webinars e podcasts sobre Análise Forense Computacional e CHFI

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts