Como evitar anexar ou executar em um contêiner docker

4

Como impedir que um usuário do meu contêiner do Docker pré-compilado acesse um shell em uma instância em execução desse contêiner? Eu pesquisei e li todas as postagens relacionadas a esse cenário e acabei sem uma solução de trabalho. Eu estou tentando impedir o acesso a um determinado recurso no contêiner, por causa desta consulta, digamos que é um número de série em um arquivo de configuração. Eu estou construindo sobre a imagem java: 7 que é baseada em uma imagem ubuntu .

Para testar sua solução, faça o seguinte:

  1. Crie e execute seu contêiner do Docker

  2. Exportar seu contêiner

    exportação do docker [nome do contêiner] | gzip -c > mycontainer.tar.gz

  3. Importe seu contêiner em um sistema externo

    gzip -dc mycontainer.tar.gz | importação do docker - [nome do contêiner]

  4. Executar o contêiner

  5. Conecte-se ao contêiner em execução usando qualquer um dos métodos a seguir:

    docker exec -it [nome do contêiner] bash

    anexar janela de encaixe [nome do contêiner]

    docker run -ti --entrypoint = / bin / bash [nome do contêiner]

[nome do contêiner] é o nome do seu contêiner

bash, dash e sh são todos shells válidos

    
por Paul Gregoire 24.09.2015 / 15:50

3 respostas

4

Para o comando bash especificamente, adicionei no arquivo .bashrc o comando exit no final do arquivo, para que o usuário efetue login e finalmente efetue o kickout, mas os usuários ainda podem usar o comando sh .

    
por 11.08.2017 / 08:59
1

Para adicionar a resposta de José, outra solução é ...

docker exec :id -it /bin/rm -R /bin/*

Isso elimina sh e qualquer comando útil do bin no linux. Não tenho certeza do que você faria para entrar no contêiner naquele momento. Embora eu saiba que você pode ser capaz de usar um depurador de memória para obter variáveis de ambiente do contêiner em execução, mas isso torna muito mais chato ... Eu me pergunto se há uma maneira de bloquear essa memória no anel 0 e tirar acesso ssh completamente ao host.

Se alguém souber como quebrar isso, eu estaria interessado em saber como.

EDITAR

Você deseja usar os segredos do docker se estiver protegendo informações confidenciais. Confira:

link

    
por 23.12.2017 / 05:46
0

Se as informações que você deseja proteger forem um número de série, criptografar essas informações é a única maneira segura de protegê-las. Você pode escolher várias maneiras de criptografar dados secretos, verifique se está usando uma chave strong. Você também pode fazer com que seu aplicativo envie dados secretos para seu servidor para identificar sua validade e, com base nas respostas de seu servidor, os aplicativos podem continuar trabalhando ou parar e mostrar mensagens.

Em um curto espaço de tempo, sempre presuma que seu aplicativo pode ser completamente dissecado e completo. Sempre criptografe todos os dados importantes e secretos usando uma chave strong para que a chave demore muito tempo (suponha que o algoritmo de criptografia esteja disponível publicamente ou seja bem conhecido).

Evitar o acesso sozinho, mesmo se você encontrar uma maneira de fazê-lo, apenas dará uma falsa sensação de segurança.

    
por 11.03.2016 / 03:35

Tags