도커 컨테이너에서 연결 또는 실행을 방지하는 방법


9

사전 빌드 된 도커 컨테이너 사용자가 해당 컨테이너의 실행중인 인스턴스 내에서 쉘에 액세스 할 수 없도록하려면 어떻게해야합니까? 나는이 시나리오와 관련된 모든 게시물을 봤으며 읽고 해결책을 찾지 못했습니다. 컨테이너의 주어진 리소스에 대한 액세스를 막으려 고합니다.이 질문을 위해 구성 파일에 일련 번호를 말하겠습니다. 나는에 건물입니다 자바 : 7 를 기반으로 이미지 우분투 이미지를.

솔루션을 테스트하려면 다음을 수행하십시오.

  1. 도커 컨테이너 만들기 및 실행

  2. 컨테이너 수출

    도커 내보내기 [컨테이너 이름] | gzip -c> mycontainer.tar.gz

  3. 외부 시스템에서 컨테이너 가져 오기

    gzip -dc mycontainer.tar.gz | 도커 가져 오기-[컨테이너 이름]

  4. 컨테이너를 실행

  5. 다음 방법 중 하나를 사용하여 실행중인 컨테이너에 셸합니다.

    docker exec -it [컨테이너 이름] bash

    도커 첨부 [컨테이너 이름]

    docker run -ti --entrypoint = / bin / bash [컨테이너 이름]

[컨테이너 이름]은 컨테이너의 이름입니다

bash, dash 및 sh는 모두 유효한 쉘입니다.


1
컨테이너 내부의 정보를 보호하려는 경우 docker는 원하는 기술이 아닙니다. 쉘 액세스를 제한 할 수 있었다하더라도 컨테이너 내부의 파일 시스템에 액세스 할 수있는 다른 사소한 수단이 있습니다.
EEAA

불행히도이 경우 도커를 사용해야합니다. 이 경우에는 이상적이지 않다는 것을 잘 알고 있습니다.
Paul Gregoire

@EEAA 님, 저에게 "사소한 수단"의 목록을 알려 주시겠습니까? docker 대신에 무엇을 제안 하시겠습니까?
nils petersohn

답변:


5

을 위해 bash특별히 명령, 나는의 .bashrc 파일에 명령을 추가 exit, 사용자가 로그인 결국 쫓겨하지만, 사용자가 여전히 사용할 수 있도록 파일의 끝에 sh명령을 사용합니다.


3

Jose의 답변에 덧붙여서, 또 다른 해결책은 ...

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

그것은 리눅스에서 sh와 bin 유용한 명령을 제거합니다. 그 시점에서 컨테이너에 들어가기 위해 무엇을 할 것인지 잘 모르겠습니다. 메모리 디버거를 사용하여 실행중인 컨테이너의 환경 변수를 얻을 수 있다는 것을 알고 있지만 훨씬 성가 시게합니다. 링 0에서 해당 메모리를 잠그고 제거 할 수있는 방법이 있는지 궁금합니다. 호스트에 대한 ssh 액세스.

누군가가 그것을 깨는 방법을 알고 있다면, 나는 방법을 알고 싶어합니다.

편집하다

민감한 정보를 보호하는 경우 도커 비밀을 사용하려고합니다. 체크 아웃 :

https://docs.docker.com/engine/swarm/secrets/


이것은 내 목적을 위해 완벽하게 작동합니다, 감사합니다! 비록 올바른 명령은 다음과 같습니다.docker exec -it 'container-id' /bin/rm -R /bin/*
ty01

이것은 나를 위해 작동하지 않습니다 Docker version 18.09.6, build 481bc77156 . 에 의한 접근 방식은@ty01 이 오류 메시지가 제공 /bin/rm: cannot remove '/bin/<filename>': No such file or directory모두 filename에서들 /bin. 의해 답변을@Dr. Knowitall 반환합니다 Error: No such container: :id. 내가 대체해도 id에 의해 CONTAINER_ID에서 docker ps, 그것은 여전히 같은 오류 메시지를 제공합니다.
edesz

0

보호하려는 정보가 일련 번호 인 경우 해당 정보를 암호화하는 것이 정보를 보호하는 유일한 방법입니다. 비밀 데이터를 암호화하는 다양한 방법을 선택할 수 있으며 강력한 키를 사용하고 있는지 확인하십시오. 또한 응용 프로그램에서 서버로 비밀 데이터를 보내서 유효성을 확인하고 서버의 응답을 기반으로 앱이 계속 작동하거나 메시지를 중지 및 표시 할 수 있습니다.

짧게 말하면 항상 응용 프로그램을 완전하고 철저하게 해부 할 수 있다고 가정하십시오. 항상 강력한 키를 사용하여 모든 비밀 및 중요한 데이터를 암호화하므로 키를 해독하는 데 시간이 오래 걸립니다 (암호화 알고리즘이 공개적으로 사용 가능하거나 잘 알려져 있다고 가정).

액세스 방법을 찾더라도 액세스 자체를 방지하는 것은 잘못된 보안 감각을 제공합니다.


... 보호 할 비밀은 암호화 키가되며 암호화 키로 보호해야합니다. 그리고 키가 키를 보호하고 보호 하는 키와 ...와 키
마크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.