소개
이 랩에서는 Docker secrets 를 사용하여 Docker 에서 민감한 데이터를 안전하게 관리하는 방법을 배우게 됩니다. 먼저, 민감한 정보를 저장하기 위해 Docker secret 을 생성하는 것으로 시작합니다.
생성 후에는 기존 secrets 를 나열하여 secret 이 Docker 환경에 성공적으로 추가되었는지 확인합니다. 마지막으로, secret 을 제거하고 다시 secrets 를 나열하여 제거를 확인하는 연습을 합니다. 이 실습을 통해 Docker secrets 를 생성, 나열 및 제거하는 데 필요한 필수 명령어를 익힐 수 있습니다.
Secret 생성
이 단계에서는 Docker 에서 secret 을 생성하는 방법을 배우게 됩니다. Docker secrets 는 컨테이너가 런타임에 필요로 하는 비밀번호, SSH 키 및 기타 자격 증명과 같은 민감한 데이터를 관리하는 데 사용됩니다. secrets 를 사용하는 것은 컨테이너 이미지에 직접 저장하거나 환경 변수로 전달하는 것보다 민감한 정보를 처리하는 더 안전한 방법입니다.
secret 을 생성하기 전에 필요한 Docker 환경이 설정되어 있는지 확인해 보겠습니다. LabEx VM 에는 Docker 가 사전 설치되어 있습니다. 다음 명령을 실행하여 Docker 버전을 확인할 수 있습니다.
docker version
Docker 가 설치되어 실행 중임을 나타내는 다음과 유사한 출력을 볼 수 있습니다.
Client: Docker Engine - Community
Version: 20.10.21
API version: 1.41
Go version: go1.16.15
Git commit: baedd2a
Built: Tue Oct 25 17:58:10 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.16.15
Git commit: 363bd3a
Built: Tue Oct 25 17:56:32 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.8
GitCommit: 9cd335e8e55e68bf582ae4525b3a13ffa8a49392
Built: Tue Oct 25 17:54:39 2022
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
Built: Tue Oct 25 17:54:25 2022
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Built: Tue Oct 25 17:54:16 2022
secret 을 생성하려면 docker secret create 명령을 사용할 수 있습니다. 이 명령은 표준 입력 또는 파일에서 민감한 데이터를 읽고 Docker 에서 secret 을 생성합니다.
s3cr3t 값을 포함하는 my_password라는 간단한 secret 을 생성해 보겠습니다. secret 값을 docker secret create 명령으로 파이프할 것입니다.
echo "s3cr3t" | docker secret create my_password -
명령을 실행하면 Docker 가 secret 을 생성하고 ID 를 출력합니다. 출력은 다음과 유사합니다.
<secret_id>
<secret_id>는 방금 생성한 secret 의 고유 식별자입니다. 향후 작업에 필요할 수 있으므로 이 점을 기억하십시오.
생성 확인을 위해 secrets 나열
이 단계에서는 이전 단계에서 생성한 secret 이 성공적으로 추가되었는지 확인하기 위해 Docker 에서 기존 secrets 를 나열하는 방법을 배우게 됩니다.
Docker 에서 관리하는 모든 secrets 를 나열하려면 docker secret ls 명령을 사용할 수 있습니다. 이 명령은 ID, 이름 및 생성 타임스탬프를 포함하여 secrets 목록을 제공합니다.
secrets 를 확인하기 위해 명령을 실행해 보겠습니다.
docker secret ls
출력에는 이전 단계에서 생성한 my_password secret 이 ID 및 생성 시간과 함께 표시되어야 합니다. 출력은 다음과 유사합니다.
ID NAME CREATED UPDATED
<secret_id> my_password About a minute ago About a minute ago
my_password secret 이 나열되어 성공적으로 생성되었음을 확인할 수 있습니다. <secret_id>는 secret 을 생성했을 때 출력된 ID 와 일치합니다.
이 명령은 secrets 를 관리하고 Docker 환경에서 올바르게 구성되었는지 확인하는 데 유용합니다.
Secret 삭제
이 단계에서는 Docker 에서 secret 을 삭제하는 방법을 배우게 됩니다. secret 을 삭제하는 것은 보안을 위해, 그리고 더 이상 필요하지 않은 secret 을 정리하기 위해 중요합니다.
secret 을 삭제하려면 docker secret rm 명령을 사용하고 그 뒤에 secret 의 이름 또는 ID 를 입력합니다. 이전 단계에서 my_password라는 secret 을 생성했습니다.
my_password secret 을 삭제해 보겠습니다.
docker secret rm my_password
명령을 실행하면 Docker 가 secret 을 삭제하고 삭제된 secret 의 이름 또는 ID 를 출력합니다. 출력은 다음과 유사합니다.
my_password
이는 my_password secret 이 Docker 환경에서 성공적으로 삭제되었음을 확인합니다.
더 이상 사용하지 않는 secret 을 삭제하여 민감한 정보에 대한 무단 접근 위험을 최소화하는 것이 좋습니다.
삭제 확인을 위한 Secret 목록 확인
이 단계에서는 이전 단계에서 삭제한 my_password secret 이 더 이상 존재하지 않는지 확인하기 위해 Docker secrets 를 다시 나열합니다.
모든 secrets 를 나열하려면 docker secret ls 명령을 사용합니다.
docker secret ls
이번에는 출력에 my_password secret 이 포함되지 않아야 합니다. 환경에 다른 secrets 가 없었다면 출력은 다음과 같을 수 있습니다.
ID NAME CREATED UPDATED
다른 secrets 가 있는 경우 해당 secrets 가 나열되지만 my_password는 표시되지 않아야 합니다. 이는 삭제 작업이 성공했음을 확인합니다.
삭제 후 secrets 를 나열하는 것은 민감한 데이터가 더 이상 Docker 환경에 저장되지 않도록 하는 좋은 방법입니다.
요약
이 랩에서는 secrets 를 사용하여 Docker 에서 민감한 데이터를 안전하게 관리하는 방법을 배웠습니다. 먼저 Docker 환경을 확인한 다음, 표준 입력을 통해 secret 값을 파이핑하여 docker secret create 명령을 사용하여 my_password라는 secret 을 생성했습니다.
secret 을 생성한 후, docker secret ls 명령을 사용하여 기존 secrets 를 나열하고 my_password의 성공적인 생성을 확인했습니다. 마지막으로, docker secret rm 명령을 사용하여 secret 을 삭제하는 연습을 하고, secrets 를 다시 나열하여 삭제를 확인하여 Docker secret 의 전체 수명 주기를 시연했습니다.



