Docker - API Autenticada

Publicado por Mundo Docker em 15/03/2016

[ Hits: 3.322 ]

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 Capabilities

Sysdig para Ops

Docker Exec

Docker: Persistindo dados -BTSync

Docker API com Python

Leitura recomendada

Metasploit no Debian 8 Jessie

Tutorial Proxy/Squid com autenticação (iniciantes)

Faça como a gigante do Software, use Linux

Digital Attack Map - Mapa Iterativo de Ataques DDoS pelo Mundo

Bloqueando e liberando o Facebook com iptables em espaços de tempo

  

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