Dev (Back & Front)ARTIGO

Docker – API autenticada

E hoje abordaremos a Docker API com Basic Authentication.

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 hoje abordaremos uma delas: Docker API com Basic Authentication.

Passo 01:

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 02:

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 deixá-lo 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 você 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).

Por hoje era isso gente. Gostaram?!

Abraços!

Entusiasta Open Source, trabalha atualmente como Container Specialist na Umbler, seu principal foco é ir atrás de ideias novas e torná-las realidade por meio de soluções simples e eficientes.​ É autor também no site Mundo Docker (www.mundodocker.com.br)

Ver perfil