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!







