docker swarm ca 명령어를 사용하여 Swarm CA 관리 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker swarm ca 명령을 사용하여 Docker Swarm 인증 기관 (CA, Certificate Authority) 을 관리하는 방법을 배우게 됩니다. 현재 Swarm CA 인증서를 확인하여 세부 정보와 유효성을 이해하는 등 필수적인 작업을 다룰 것입니다.

또한 Swarm CA 를 로테이션하는 방법을 살펴볼 것입니다. 여기에는 정기적인 업데이트를 위해 새로 생성된 인증서로 CA 를 로테이션하는 것, 특정 보안 요구 사항을 위해 사용자 지정 인증서 및 키로 로테이션하는 것, 그리고 백그라운드 실행을 위해 분리 모드 (detached mode) 로 로테이션을 수행하는 것이 포함됩니다. 이러한 단계는 Docker Swarm 클러스터의 보안과 상태를 유지하는 데 매우 중요합니다.

현재 Swarm CA 인증서 보기

이 단계에서는 현재 Swarm CA 인증서를 보는 방법을 배우겠습니다. Swarm CA (인증 기관, Certificate Authority) 는 Docker Swarm 클러스터의 노드에 인증서를 발급하는 역할을 하며, 이는 노드 간의 안전한 통신에 사용됩니다.

현재 Swarm CA 인증서를 보려면, --cert-dir 플래그와 함께 docker swarm ca 명령을 사용하여 Swarm 인증서가 저장된 디렉토리를 지정할 수 있습니다. 기본적으로 이 디렉토리는 /var/lib/docker/swarm/certificates입니다.

먼저, 올바른 디렉토리에 있는지 확인해 보겠습니다. 기본 작업 디렉토리는 ~/project입니다.

pwd

다음과 유사한 출력을 볼 수 있습니다.

/home/labex/project

이제 현재 Swarm CA 인증서를 확인해 보겠습니다. /var/lib/docker 디렉토리에 접근하려면 root 권한이 필요하므로 sudo를 사용합니다.

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

이 명령은 Swarm CA 인증서에 대한 정보를 출력하며, 유효 기간과 발급자를 포함합니다. 출력은 다음과 유사합니다.

Certificate information:
------------------------
Common Name: swarm-ca
Organization:
Organizational Unit:
Country:
Province:
Locality:
Valid From: 2023-10-27 00:00:00 +0000 UTC
Valid Until: 2024-10-26 00:00:00 +0000 UTC
Issuer: CN=swarm-ca

이 출력은 현재 Swarm CA 인증서의 세부 정보를 보여줍니다. Valid FromValid Until 필드는 인증서의 유효 기간을 나타냅니다. Issuer 필드는 인증서를 발급한 주체를 보여주며, 이 경우 Swarm CA 자체입니다.

새로 생성된 인증서로 Swarm CA 로테이션

이 단계에서는 새로 생성된 인증서로 Swarm CA 를 로테이션하는 방법을 배우겠습니다. Swarm CA 를 로테이션하는 것은 Swarm 클러스터 내에서 통신에 사용되는 인증서가 정기적으로 업데이트되도록 보장하는 보안 모범 사례입니다.

Swarm CA 를 로테이션하면 Docker 는 새로운 CA 인증서와 키를 생성한 다음 Swarm 의 모든 노드에 새로운 인증서를 발급합니다. 이 프로세스는 일반적으로 원활하게 진행되며 서비스에 대한 다운타임이 필요하지 않습니다.

새로 생성된 인증서로 Swarm CA 를 로테이션하려면 docker swarm ca --rotate 명령을 사용할 수 있습니다. 이 명령은 자동으로 새로운 CA 를 생성하고 새로운 인증서를 노드에 배포합니다.

홈 디렉토리 ~/project에 있는지 확인하십시오.

pwd

/home/labex/project를 볼 수 있습니다.

이제 Swarm CA 를 로테이션해 보겠습니다. 이 작업에는 root 권한이 필요하므로 sudo를 사용합니다.

sudo docker swarm ca --rotate

CA 가 로테이션되고 있음을 나타내는 출력을 볼 수 있습니다. 출력은 다음과 유사합니다.

Swarm CA rotated.

로테이션이 완료되면 Swarm 은 새로운 CA 인증서 사용을 시작합니다. Swarm 의 노드는 자동으로 새로운 CA 에 의해 서명된 인증서로 업데이트됩니다.

CA 가 로테이션되었는지 확인하려면 이전 단계의 명령을 사용하여 Swarm CA 인증서를 다시 볼 수 있습니다.

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

Valid FromValid Until 날짜를 이전 출력과 비교하십시오. Valid From 날짜가 현재 날짜에 더 가까워진 것을 볼 수 있으며, 이는 새로운 인증서가 생성되었음을 나타냅니다.

사용자 지정 인증서 및 키로 Swarm CA 로테이션

이 단계에서는 사용자 정의 인증서와 키를 사용하여 Swarm CA 를 로테이션하는 방법을 배우겠습니다. 이는 자체 CA 인프라를 사용하거나 Swarm 을 기존 PKI (공개 키 기반 구조, Public Key Infrastructure) 와 통합하려는 경우 유용합니다.

사용자 정의 인증서와 키로 Swarm CA 를 로테이션하려면, docker swarm ca --rotate 명령과 함께 --cert--key 플래그를 사용하여 사용자 정의 CA 인증서 및 키 파일의 경로를 제공해야 합니다.

먼저, 데모 목적으로 더미 인증서 및 키 파일을 생성해 보겠습니다. 실제 시나리오에서는 실제 CA 인증서와 키를 사용합니다.

홈 디렉토리 ~/project에 있는지 확인하십시오.

pwd

/home/labex/project를 볼 수 있습니다.

이제 더미 인증서 및 키 파일을 생성해 보겠습니다. openssl을 사용하여 자체 서명된 인증서와 개인 키를 생성합니다.

openssl req -x509 -nodes -newkey rsa:2048 -keyout ~/project/custom_ca.key -out ~/project/custom_ca.crt -days 365 -subj "/CN=custom-swarm-ca"

이 명령은 Common Name 이 "custom-swarm-ca"인 365 일 동안 유효한 개인 키 (custom_ca.key) 와 자체 서명된 인증서 (custom_ca.crt) 를 생성합니다.

이제 사용자 정의 인증서와 키가 있으므로, 이러한 파일을 사용하여 Swarm CA 를 로테이션할 수 있습니다.

sudo docker swarm ca --rotate --cert ~/project/custom_ca.crt --key ~/project/custom_ca.key

CA 가 사용자 정의 인증서와 키로 로테이션되고 있음을 나타내는 출력을 볼 수 있습니다. 출력은 다음과 유사합니다.

Swarm CA rotated.

로테이션이 완료되면 Swarm 은 사용자 정의 CA 인증서 사용을 시작합니다. Swarm 의 노드는 자동으로 사용자 정의 CA 에 의해 서명된 인증서로 업데이트됩니다.

CA 가 사용자 정의 인증서로 로테이션되었는지 확인하려면 Swarm CA 인증서를 다시 볼 수 있습니다.

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

출력을 검토하십시오. Issuer 필드에는 이제 사용자 정의 CA 의 Common Name 인 "CN=custom-swarm-ca"가 표시되어야 합니다.

분리 모드에서 Swarm CA 로테이션

이 단계에서는 분리 모드에서 Swarm CA 를 로테이션하는 방법을 배우겠습니다. 분리 모드를 사용하면 새로운 CA 인증서와 키를 생성하고 Swarm 노드에 즉시 배포하지 않을 수 있습니다. 이는 새로운 인증서의 배포를 수동으로 관리해야 하는 시나리오에서 유용할 수 있습니다.

분리 모드에서 Swarm CA 를 로테이션하려면 docker swarm ca --rotate --detach 명령을 사용합니다. 이 명령은 새로운 CA 인증서와 키를 생성하여 Swarm 인증서 디렉토리 (/var/lib/docker/swarm/certificates) 에 저장하지만 노드를 자동으로 업데이트하지는 않습니다.

홈 디렉토리 ~/project에 있는지 확인하십시오.

pwd

/home/labex/project를 볼 수 있습니다.

이제 분리 모드에서 Swarm CA 를 로테이션해 보겠습니다. 이 작업에는 root 권한이 필요하므로 sudo를 사용합니다.

sudo docker swarm ca --rotate --detach

CA 가 분리 모드에서 로테이션되었음을 나타내는 출력을 볼 수 있습니다. 출력은 다음과 유사합니다.

Swarm CA rotated in detached mode.

분리 모드에서는 새로운 CA 인증서와 키가 생성되어 저장되지만 Swarm 노드는 자동으로 업데이트되지 않습니다. 그런 다음 새로운 CA 인증서를 Swarm 클러스터의 다른 노드에 수동으로 배포하고 구성을 다시 로드하도록 지시해야 합니다.

CA 가 분리 모드에서 로테이션되었는지 확인하려면 Swarm CA 인증서를 다시 볼 수 있습니다.

sudo docker swarm ca --cert-dir /var/lib/docker/swarm/certificates

인증서의 Valid From 날짜가 업데이트되었는지 확인하여 새로운 CA 가 생성되었음을 나타냅니다. 그러나 Swarm 의 노드는 수동으로 업데이트될 때까지 이전 CA 를 계속 사용합니다.

요약

이 랩에서는 docker swarm ca 명령을 사용하여 Swarm 인증 기관 (CA, Certificate Authority) 을 관리하는 방법을 배웠습니다. --cert-dir 플래그를 사용하여 유효 기간 및 발급자와 같은 세부 정보를 이해하기 위해 현재 Swarm CA 인증서를 보는 것으로 시작했습니다.

이어서, Swarm 클러스터 내의 안전한 통신에 사용되는 인증서를 업데이트하기 위한 중요한 보안 관행인 새로 생성된 인증서로 Swarm CA 를 로테이션하는 방법을 살펴보았습니다.