docker trust revoke 명령을 사용하여 이미지 서명 제거 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 Docker Content Trust 를 사용하여 이미지 서명을 관리하는 방법을 살펴보고, 특히 docker trust revoke 명령에 중점을 둡니다. 먼저 서명된 이미지를 검사하여 서명이 어떻게 표시되고 검증되는지 이해하는 것으로 시작합니다.

검사 후, 이미지의 특정 서명된 태그에서 서명을 해지하는 방법을 배웁니다. 그런 다음 이미지를 다시 검사하여 해지가 성공했는지 확인합니다. 마지막으로, 저장소 내의 모든 태그에서 서명을 해지하는 방법을 시연하고 모든 서명이 제거되었는지 확인합니다. 이 랩은 Docker 이미지와 관련된 신뢰를 관리하는 실질적인 경험을 제공합니다.

서명된 이미지 검사하여 서명 확인

이 단계에서는 서명된 Docker 이미지를 검사하여 해당 서명을 확인하는 방법을 배웁니다. Docker Content Trust 를 사용하면 이미지의 무결성 및 게시자를 확인할 수 있습니다. 이미지가 서명되었다는 것은 게시자가 이미지를 암호화 방식으로 서명했음을 의미하며, 이 서명을 검증하여 이미지가 변조되지 않았는지 확인할 수 있습니다.

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

export DOCKER_CONTENT_TRUST=1

이제 서명된 이미지를 가져와 보겠습니다. Docker Content Trust 테스트를 위해 특별히 설계된 docker/trusttest 이미지를 사용합니다.

docker pull docker/trusttest:latest

Docker Content Trust 가 활성화된 상태에서 서명된 이미지를 가져오면 Docker 가 서명을 검증합니다. 서명이 유효하면 가져오기가 성공합니다. 서명이 유효하지 않거나 없으면 가져오기가 실패합니다.

서명된 이미지의 서명을 검사하려면 이미지 이름 뒤에 docker trust inspect 명령을 사용합니다.

docker trust inspect docker/trusttest:latest

이 명령은 서명자 및 해당 키를 포함하여 이미지의 서명에 대한 정보를 출력합니다. docker/trusttest 이미지의 latest 태그와 관련된 서명에 대한 세부 정보를 확인해야 합니다. 이 출력은 이미지가 서명되었음을 확인하고 누가 서명했는지 보여줍니다.

특정 서명된 태그에서 서명 해지

이 단계에서는 서명된 Docker 이미지의 특정 태그에서 서명을 해지하는 방법을 배웁니다. 서명 해지는 특정 이미지 태그에 대한 기존 서명을 무효화하는 것을 의미합니다. 이는 키가 손상되었거나 특정 버전의 이미지를 신뢰할 수 없도록 제거해야 하는 경우에 유용합니다.

특정 태그에서 서명을 해지하려면 docker trust revoke 명령을 사용하고 그 뒤에 이미지 이름과 태그를 입력합니다. docker/trusttest 이미지의 latest 태그에 대한 서명을 해지합니다.

docker trust revoke docker/trusttest:latest

이 명령을 실행하면 해지를 확인하라는 메시지가 표시됩니다. y를 입력하고 Enter 키를 눌러 진행합니다.

Are you sure you want to revoke signature for docker/trusttest:latest? (y/n) y

확인 후 Docker 는 지정된 태그에 대한 서명을 해지합니다. 이 작업은 레지스트리에서 이미지에 대한 신뢰 데이터를 업데이트합니다.

이미지 재검사하여 해지 확인

이 단계에서는 latest 태그에 대한 서명이 성공적으로 해지되었는지 확인하기 위해 이미지를 다시 검사합니다. 이전 단계에서 서명을 해지한 후, 이 특정 태그에 대한 신뢰 데이터는 제거되거나 유효하지 않음으로 표시되어야 합니다.

이전과 동일한 docker trust inspect 명령을 사용하여 docker/trusttest:latest 이미지의 서명을 확인합니다.

docker trust inspect docker/trusttest:latest

이번에는 출력에서 latest 태그에 대한 서명이 없음을 나타내야 합니다. 다른 태그가 존재하고 서명된 경우 해당 태그에 대한 정보가 표시될 수 있지만, latest 섹션에는 유효한 서명이 표시되지 않아야 합니다. 이는 해지가 성공했음을 확인합니다.

서명을 해지한 후 DOCKER_CONTENT_TRUST=1이 활성화된 상태에서 docker/trusttest:latest 이미지를 가져오려고 하면 해당 특정 태그에 대해 이미지가 더 이상 신뢰되지 않으므로 가져오기가 실패해야 합니다.

레포지토리 내 모든 태그에서 서명 해지

이 단계에서는 특정 Docker 이미지 레지스트리 내의 모든 태그에서 서명을 해지하는 방법을 배웁니다. 이는 보안 사고 또는 해당 소스에서 더 이상 이미지를 사용하지 않기로 결정한 경우와 같이 전체 레지스트리에 대한 신뢰를 완전히 제거해야 할 때 유용합니다.

레지스트리의 모든 태그에서 서명을 해지하려면 docker trust revoke 명령을 사용하고 태그를 지정하지 않고 레지스트리 이름을 입력합니다. docker/trusttest 레지스트리에 대한 모든 서명을 해지합니다.

docker trust revoke docker/trusttest

이 명령을 실행하면 레지스트리의 모든 태그에 대한 서명을 해지할 것인지 확인하라는 메시지가 표시됩니다. y를 입력하고 Enter 키를 눌러 진행합니다.

Are you sure you want to revoke all signatures for docker/trusttest? (y/n) y

확인 후 Docker 는 docker/trusttest 레지스트리와 관련된 모든 태그에 대한 서명을 해지합니다. 이 작업은 레지스트리에서 전체 레지스트리에 대한 신뢰 데이터를 효과적으로 제거합니다.

레포지토리 검사하여 모든 서명 제거 확인

이 마지막 단계에서는 docker/trusttest 레지스트리를 다시 검사하여 모든 서명이 모든 태그에서 성공적으로 제거되었는지 확인합니다. 이전 단계에서 모든 서명을 해지한 후, 전체 레지스트리에 대한 신뢰 데이터가 사라져야 합니다.

docker trust inspect 명령을 사용하며, 이번에는 태그 없이 레지스트리 이름만 지정합니다.

docker trust inspect docker/trusttest

이 명령의 출력은 이제 docker/trusttest 레지스트리에 대해 서명이 발견되지 않음을 나타내야 합니다. 이는 모든 서명의 해지가 성공했음을 확인합니다.

이것으로 Docker Content Trust 를 사용하여 Docker 이미지 서명을 해지하는 실습을 마칩니다. 특정 태그 및 전체 레지스트리에 대한 서명을 해지하는 방법을 배웠습니다.

요약

이 실습에서는 Docker Content Trust 를 사용하여 이미지 서명을 관리하는 방법을 배웠습니다. Docker Content Trust 를 활성화하고 서명된 이미지 (docker/trusttest:latest) 를 풀링하여 Docker 가 풀링 과정에서 서명을 확인하는 방식을 이해하는 것으로 시작했습니다. 그런 다음 docker trust inspect 명령을 사용하여 이미지와 관련된 서명을 확인하고, 서명 상태를 확인하고 서명자를 식별했습니다.

이어서 서명을 해지하는 방법을 살펴보았습니다. docker trust revoke 명령을 사용하여 특정 이미지 태그 (docker/trusttest:latest) 에서 서명을 제거하는 방법을 배우고, 이미지를 다시 검사하여 해지를 확인했습니다. 마지막으로, 이 지식을 확장하여 레지스트리 내의 모든 태그에서 서명을 해지하고 검사를 통해 서명의 완전한 제거를 확인했습니다. 이 실습은 컨테이너 이미지의 무결성과 신뢰성을 유지하는 데 필수적인 기술인 Docker 이미지 서명을 검사하고 해지하는 실질적인 경험을 제공했습니다.