docker trust signer add 명령어를 사용하여 서명자 추가 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 Docker Content Trust 를 사용하여 Docker 레지스트리에 대한 서명자를 관리하는 방법을 배우게 됩니다. 먼저, 이미지를 서명할 권한이 있는 사용자를 이해하기 위해 레지스트리의 현재 서명자를 검사하는 것으로 시작합니다.

검사 후, docker trust signer add 명령을 사용하여 레지스트리에 새로운 서명자를 추가하는 방법을 배우게 됩니다. 마지막으로, 새로운 서명자가 성공적으로 추가되었는지 확인하여 다른 개체가 이제 해당 레지스트리에 대한 이미지를 서명할 수 있는지 확인합니다.

레지스트리의 현재 서명자 검사

이 단계에서는 Docker 레지스트리의 현재 서명자를 검사하는 방법을 배우겠습니다. Docker Content Trust 를 사용하면 사용하는 이미지의 무결성 및 게시자를 확인할 수 있습니다. 서명자는 특정 레지스트리에 대한 이미지를 서명할 권한이 있는 개체입니다.

먼저, Docker Content Trust 를 활성화해 보겠습니다. 이는 DOCKER_CONTENT_TRUST 환경 변수를 1로 설정하여 수행합니다.

export DOCKER_CONTENT_TRUST=1

이제 Content Trust 가 활성화되었으므로 이미지를 pull 하면 Docker 가 해당 서명을 확인합니다. 이미지가 서명되지 않았거나 서명이 유효하지 않은 경우 pull 작업이 실패합니다.

레지스트리의 현재 서명자를 검사하려면 docker trust signer 명령을 사용합니다. 잘 알려진 공식 이미지인 library/ubuntu 레지스트리에 대한 서명자를 검사합니다.

docker trust signer library/ubuntu

이 명령은 library/ubuntu 레지스트리와 관련된 서명자를 나열합니다. 서명자의 이름과 키 ID 를 표시하는 다음과 유사한 출력을 보게 됩니다.

Signers for library/ubuntu

SIGNER              KEYS
DOCKER OFFICIAL     7000000000000000000000000000000000000000000000000000000000000000

출력은 library/ubuntu 레지스트리가 특정 키 ID 를 가진 "DOCKER OFFICIAL"에 의해 서명되었음을 보여줍니다. 이는 이 레지스트리에서 pull 하는 이미지가 Docker 에 의해 공식적으로 서명되었음을 확인합니다.

레지스트리에 새로운 서명자 추가

이 단계에서는 Docker 레지스트리에 새로운 서명자를 추가하는 방법을 배우겠습니다. 이는 다른 당사자 또는 시스템이 레지스트리에 대한 이미지를 서명하도록 허용하려는 경우 유용합니다.

서명자를 추가하기 전에 서명 키가 있어야 합니다. 키가 없는 경우 docker trust key generate 명령을 사용하여 새로운 키 쌍을 생성할 수 있습니다. 이 랩에서는 키 쌍이 있다고 가정합니다.

새로운 서명자를 추가하려면 docker trust signer add 명령을 사용합니다. 이 명령에는 새로운 서명자의 이름, 레지스트리 이름 및 새로운 서명자의 공개 키 경로가 필요합니다.

데모 목적으로 더미 공개 키 파일을 만들어 보겠습니다. 실제 시나리오에서는 새로운 서명자가 제공한 공개 키가 됩니다.

echo "-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0AQICYQADggEPADRUb2tlbiBmb3IgYSB0ZXN0IHNpZ25lcg==
-----END PUBLIC KEY-----" > ~/project/new_signer.pub

이 명령은 ~/project 디렉토리에 new_signer.pub라는 파일을 생성하고 더미 공개 키 내용을 포함합니다.

이제 가상의 레지스트리 your-dockerhub-user/my-imagemy-new-signer라는 새로운 서명자를 추가해 보겠습니다. 실제 레지스트리로 이 작업을 수행하는 경우 your-dockerhub-user를 Docker Hub 사용자 이름으로 바꿉니다. 이 랩에서는 자리 표시자를 사용합니다.

docker trust signer add my-new-signer your-dockerhub-user/my-image --key ~/project/new_signer.pub

레지스트리의 루트 키에 대한 암호를 입력하라는 메시지가 표시됩니다. 이는 권한 있는 사용자만 서명자를 추가할 수 있도록 하는 보안 조치입니다. 이 랩 환경에서는 실제 Docker 레지스트리와 상호 작용하지 않으므로 더미 암호를 입력할 수 있습니다.

암호를 입력하면 명령이 새로운 서명자를 레지스트리의 신뢰 데이터에 추가합니다. 서명자가 추가되었음을 나타내는 출력을 보게 됩니다.

Adding signer "my-new-signer" to your-dockerhub-user/my-image...
Successfully added signer "my-new-signer" to your-dockerhub-user/my-image

이 명령은 Docker 레지스트리에서 지정된 레지스트리에 대한 신뢰 데이터를 업데이트하여 새로운 서명자의 공개 키를 추가합니다.

새로운 서명자 추가 확인

이 단계에서는 이전 단계에서 추가한 새로운 서명자가 레지스트리의 신뢰 데이터에 성공적으로 추가되었는지 확인합니다.

이를 위해, 원래 서명자를 검사하기 위해 첫 번째 단계에서 했던 것처럼 docker trust signer 명령을 다시 사용합니다. 이번에는 새로운 서명자를 추가한 레지스트리에 대한 서명자를 검사합니다.

my-new-signer 서명자를 가상의 레지스트리 your-dockerhub-user/my-image에 추가했음을 기억하십시오. 이 레지스트리에 대한 서명자를 검사해 보겠습니다. 이전 단계에서 사용한 자리 표시자로 your-dockerhub-user를 바꾸는 것을 잊지 마십시오.

docker trust signer your-dockerhub-user/my-image

이 명령은 your-dockerhub-user/my-image 레지스트리와 관련된 신뢰 데이터를 Docker 레지스트리에 쿼리하고 모든 서명자를 나열합니다.

이제 원래 서명자 (있는 경우) 와 이전 단계에서 추가한 새로운 서명자 my-new-signer가 모두 포함된 출력을 보게 됩니다. 출력은 각 서명자의 이름과 해당 키 ID 를 표시합니다.

Signers for your-dockerhub-user/my-image

SIGNER              KEYS
my-new-signer       <key ID of the new signer>

출력에 my-new-signer가 있으면 서명자가 레지스트리의 신뢰 데이터에 성공적으로 추가되었음을 확인합니다. 즉, Docker Content Trust 가 활성화된 경우 my-new-signer와 관련된 공개 키로 서명된 이미지가 이제 이 레지스트리에 대해 신뢰할 수 있는 것으로 간주됩니다.

요약

이 랩에서는 Docker Content Trust 를 사용하여 Docker 레지스트리에 대한 서명자를 관리하는 방법을 배웠습니다. 이미지 무결성 및 게시자 확인을 보장하기 위해 Docker Content Trust 를 활성화하는 것으로 시작했습니다. 그런 다음 docker trust signer 명령을 사용하여 레지스트리, 특히 library/ubuntu 이미지의 현재 서명자를 검사하는 연습을 했습니다. 이 명령은 기존 서명자와 해당 키 ID 를 표시했습니다.

검사 후, docker trust signer add 명령을 사용하여 레지스트리에 새로운 서명자를 추가하는 과정으로 넘어갔습니다. 이 단계는 다른 개체가 특정 레지스트리에 대한 이미지를 서명하도록 허용하는 데 중요합니다. 서명자 추가에 대한 전체 세부 정보는 발췌 내용에 제공되지 않았지만, 이 랩의 목표는 이 기능을 시연하는 것입니다. 마지막 단계인 새로운 서명자 추가 확인은 레지스트리의 서명자를 다시 검사하여 새로 추가된 서명자가 나열되어 있는지 확인하는 것으로, 프로세스의 성공적인 완료를 보장합니다.