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
Nenhum comentário foi encontrado.