이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/Docker

11. Docker Notary : Docker Content Trust ( DCT )

이쿠우우 2020. 11. 8. 11:43
반응형

 

 

 

 

 

Docker Notary : Docker Content Trust ( DCT )

 


[Container image 인증 관련 글 목록]

Notary Service 란?

Docker Notary : Docker Content Trust (DCT)

DCT를 사용해서 Dcoker Hub에 서명된 Trust Image Push 하기

Notary와 DCT를 사용해서 Private Registry에 서명된 Trust Image Push하기

개인 인증서를 사용해서 Notary Service 구동

kubernetes image인증 - Portieris


 

 

 

 

 

 

 

 

Docker Contents Trust 란?

Notary Service 를 기반으로 만들어진 Docker Content Trust (DCT)가 있음.

DCT는 Docker Registry(이미지 저장소)에 송수신되는 데이터에 대한 디지털 서명 기능을 제공함.

Docker에서 사용되는 Image를 서명/검증해주어 Image에 대한 신뢰를 제공하는 기술.

DCT를 통해서 Image를 Push 하는 사람은 Image를 서명할 수 있고 

Pull 받은 사용자는 Image가 서명되어 있음을 보장할 수 있음.

또한 Image의 tag를 통해 Image의 무결성을 검증할 수 있음.

 

[기존의 Docker image Pull 과정]

 

 

[DCT가 활성화 된 상태에서 Docker image Pull 과정 ]

 

 

 

DCT를 직접 구축해보겠음.

 

[주의]

Docker Content Trust 및 Notary를 사용해서 

신뢰할 수 있는 Contents의 Images에 서명하려면

Docker Version 18.03-ce 이상이 설치되어 있어야함

 

[version 1.13.? 형식과 19.0? 차이]

기존 1.13.1 과 같은 version 표기법에서 

(19.03)YY.MM 버전 관리 체계로 변경함

참고 :  https://docs.docker.com/engine/release-notes/18.03/

 

 

[Test환경]

 OS : CentOS 7

 리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64

 docker version : 19.03.12

 api verison : 1.40

 

 

Docker 가 설치되어있는 환경에서 DCT 활성화

 

Docker 에서 DCT는 Default 설정으로 Disable 되어있지만

DOCKER_CONTENT_TRUST 환경변수가 설정되면

DCT가 해당 환경변수를 읽어서 On/Off가 됨.

 

[DCT Enable 설정]

export DOCKER_CONTENT_TRUST=1

 

[DCT Disable 설정]

export DOCKER_CONTENT_TRUST=0

 

 

일반적으로 docker pull 명령으로 image를 받아오면

아래의 그림과 같이 정상적으로 받아오지만

 

 

DCT를 Enable 시킨 후 서명되어있지 않은 상위와 동일한 image를 Pull 하게 되면

remote trust data does not exist 오류가 발생하면서

해당 파일에는 서명이 안되어있다고 하면서 Pull이 안됨.

 

[ 절차 ]

기존에 다운받은 peksoon/iksoon_mysql:1.0.1 이미지를 삭제

DCT 를 Enable 시킴

다시 image pull 시도.

 

 

DCT를 Enable 하게되면 

서명 설정이 되어있는 Trusted 된 Image 파일만 pull, run, build 할 수 있고

서명되지 않은 Image 파일은 자동으로 차단 됨.

또한 Image Registry에서도 

서명 설정이 되어있는 Trusted image 만 보이게 되고 

서명되지 않은 Untrusted image는 보이지 않음.

 

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

 

 

 

 

 

참고

[DCT]

https://docs.docker.com/notary/

https://docs.docker.com/engine/security/trust/content_trust/

https://docs.docker.com/notary/running_a_service/

https://pjh3749.tistory.com/253

https://gruuuuu.github.io/cloud/docker-notary2/#

https://cloud.ibm.com/docs/Registry?topic=Registry-registry_trustedcontent&locale=ko

https://docs.docker.com/engine/reference/commandline/trust_inspect/

https://help.sonatype.com/repomanager3/formats/docker-registry/docker-content-trust

 

 

 

 

 

반응형