docker secret create 명령어를 사용하여 민감 데이터 관리 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker secret create 명령을 사용하여 Docker 환경 내에서 민감한 데이터를 효과적으로 관리하는 방법을 배우게 됩니다. 표준 입력 (STDIN) 및 파일에서 데이터를 읽는 등, 시크릿을 생성하는 다양한 방법을 탐구할 것입니다.

이 랩은 특정 이름과 다양한 소스에서 시크릿을 생성하는 과정을 안내합니다. 또한 더 나은 구성을 위해 시크릿에 레이블을 추가하는 방법과 생성한 시크릿의 세부 정보를 검사하여 내용 및 구성을 확인하는 방법도 배우게 됩니다. 이 실습 경험을 통해 Docker Swarm 으로 애플리케이션을 배포할 때 민감한 정보를 보호하는 데 필요한 기본적인 기술을 습득할 수 있습니다.

STDIN 에서 시크릿 생성

이 단계에서는 표준 입력 (STDIN) 에서 데이터를 읽어 Docker 시크릿을 생성하는 방법을 배우게 됩니다. 이는 호스트 시스템의 파일에 직접 저장하지 않고 컨테이너에 민감한 정보를 제공하는 데 유용합니다.

먼저, 비밀번호를 포함하는 간단한 시크릿을 생성해 보겠습니다. echo 명령을 사용하여 비밀번호를 출력하고 이를 docker secret create 명령으로 파이프할 것입니다.

echo "mysecretpassword" | docker secret create my_password_secret -

이 명령에서:

  • echo "mysecretpassword"는 문자열 "mysecretpassword"를 표준 출력으로 출력합니다.
  • |는 파이프 연산자이며, echo 명령의 출력을 다음 명령의 입력으로 보냅니다.
  • docker secret create는 새로운 Docker 시크릿을 생성하는 명령입니다.
  • my_password_secret는 이 시크릿에 부여하는 이름입니다.
  • -docker secret create에게 STDIN 에서 시크릿 데이터를 읽도록 지시합니다.

새로 생성된 시크릿의 ID 가 출력으로 표시되어야 합니다.

파일에서 시크릿 생성

이 단계에서는 파일의 내용에서 Docker 시크릿을 생성하는 방법을 배우게 됩니다. 이는 API 키, 인증서 또는 구성 파일과 같은 시크릿을 관리하는 일반적인 방법입니다.

먼저, 민감한 데이터를 포함하는 간단한 파일을 생성해 보겠습니다. 홈 디렉토리 (~/project) 에 api_key.txt라는 파일을 생성합니다.

echo "my_super_secret_api_key_12345" > ~/project/api_key.txt

이 명령은 echo를 사용하여 문자열 "my_super_secret_api_key_12345"를 파일 ~/project/api_key.txt에 씁니다.

이제 이 파일의 내용을 사용하여 Docker 시크릿을 생성합니다.

docker secret create my_api_key_secret ~/project/api_key.txt

이 명령에서:

  • docker secret create는 새로운 Docker 시크릿을 생성하는 명령입니다.
  • my_api_key_secret는 이 시크릿에 부여하는 이름입니다.
  • ~/project/api_key.txt는 시크릿 데이터를 포함하는 파일의 경로입니다. Docker 는 이 파일의 내용을 읽어 시크릿으로 저장합니다.

새로 생성된 시크릿의 ID 가 출력으로 표시되어야 합니다.

레이블을 사용하여 시크릿 생성

이 단계에서는 Docker 시크릿을 생성할 때 레이블을 추가하는 방법을 배우게 됩니다. 레이블은 Docker 객체에 연결하여 구성하고 식별하는 데 도움이 되는 키 - 값 쌍입니다. 이는 대규모 배포에서 특히 유용합니다.

STDIN 에서 다른 시크릿을 생성하되, 이번에는 레이블을 추가합니다.

echo "anothersecretvalue" | docker secret create --label env=production --label app=webserver my_labeled_secret -

이 명령에서:

  • echo "anothersecretvalue"는 STDIN 을 통해 시크릿 데이터를 제공합니다.
  • docker secret create는 시크릿을 생성하는 명령입니다.
  • --label env=production은 키 env와 값 production을 가진 레이블을 추가합니다.
  • --label app=webserver는 키 app과 값 webserver를 가진 다른 레이블을 추가합니다. --label 플래그를 반복하여 여러 레이블을 추가할 수 있습니다.
  • my_labeled_secret는 시크릿의 이름입니다.
  • -는 시크릿 데이터를 STDIN 에서 읽어야 함을 나타냅니다.

새로 생성된 시크릿의 ID 가 출력으로 표시되어야 합니다. 레이블을 추가하면 시크릿을 분류하여 나중에 관리하고 필터링하기가 더 쉬워집니다.

생성된 시크릿 검사

이 단계에서는 docker secret inspect 명령을 사용하여 Docker 시크릿의 세부 정보를 검사하는 방법을 배우게 됩니다. 이 명령은 ID, 이름, 생성 시간 및 관련 레이블을 포함하여 시크릿에 대한 자세한 정보를 제공합니다.

이전 단계에서 생성한 시크릿 my_labeled_secret을 검사해 보겠습니다.

docker secret inspect my_labeled_secret

이 명령은 my_labeled_secret의 세부 정보를 포함하는 JSON 객체를 출력합니다. 시크릿의 ID, 이름 (my_labeled_secret), 생성 시간, 그리고 추가한 레이블 (env=productionapp=webserver) 과 같은 정보를 확인할 수 있습니다.

보안상의 이유로 시크릿을 검사할 때는 실제 시크릿 데이터가 표시되지 않습니다.

생성한 다른 시크릿도 검사할 수 있습니다.

docker secret inspect my_password_secret
docker secret inspect my_api_key_secret

시크릿 검사는 시크릿의 존재를 확인하고, 구성을 확인하며, 레이블이 올바르게 적용되었는지 확인하는 유용한 방법입니다.

요약

이 랩에서는 docker secret create 명령을 사용하여 Docker 내에서 민감한 데이터를 효과적으로 관리하는 방법을 배웠습니다. 표준 입력 (STDIN) 에서 직접 데이터를 읽어 시크릿을 생성하는 연습을 했습니다. 이는 호스트의 파일에 민감한 정보를 저장하는 것을 피하는 데 유용합니다. 또한 API 키나 인증서와 같은 다양한 유형의 민감한 데이터를 관리하는 일반적인 방법인 파일의 내용에서 시크릿을 생성하는 방법도 배웠습니다.

또한, 생성 중에 레이블을 추가하여 시크릿 관리를 향상시키는 방법을 탐구하여 시크릿을 더 잘 구성하고 식별할 수 있도록 했습니다. 마지막으로, 생성된 시크릿의 구성을 확인하고 내용을 검사하는 방법 (전체 검사 단계 세부 정보는 요약에 제공되지 않음) 을 배웠습니다. 이러한 기술은 Docker 환경 내에서 민감한 정보를 안전하게 처리하는 방법을 제공합니다.