If you’re a regular user of F5 NGINX Plus를 자주 사용한다면 새로운 기능을 시험해 보기 위해 컨테이너를 빌드하는 경우가 많을 것입니다. NGINX Plus 컨테이너를 빌드할 때는 NGINX 리포지토리 인증서와 키 같은 민감한 정보를 로컬 파일 시스템에 저장하게 되는 경우가 많습니다. 민감한 파일을 리포지토리의 .gitignore 파일에 추가하는 것은 간단하지만, 이는 이상적이지도 안전하지도 않습니다. 실제로 엔지니어가 실수로 민감한 정보를 리포지토리에 커밋한 사례가 많이 있습니다.
더 나은 방법은 비밀 관리 솔루션을 사용하는 것입니다. 개인적으로 저는 오랫동안 1Password를 애용해 왔으며, 최근에는 이 회사의 CLI 도구를 알게 되었습니다. 이 도구를 사용하면 개발자와 플랫폼 엔지니어가 일상적인 워크플로에서 비밀 정보를 더 쉽게 다룰 수 있습니다.
이 블로그 게시물에서는 1Password CLI를 사용하여 NGINX Plus 컨테이너를 안전하게 빌드하는 방법을 설명합니다. 이 예제에서는 NGINX Plus 구독, CLI 도구가 설치된 1Password 구독, 셸(Bash 또는 Zsh)을 사용할 수 있는 환경, 그리고 Docker가 설치되어 있다고 가정합니다.
1Password에 비밀 정보 저장
첫 번째 단계는 보안 정보를 1Password에 저장하는 것입니다. 1Password는 여러 보안 정보 유형(예: API 자격 증명, 파일, 메모, 비밀번호)을 지원합니다. 이 NGINX Plus 사용 사례에서는 1Password의 보안 파일 기능을 활용합니다.
NGINX 리포지토리 인증서와 키는 MyF5 포털에서 받을 수 있습니다. 1Password 설명서에 따라 NGINX 리포지토리 인증서와 키를 각각 보안 문서로 만드세요. 두 개의 보안 문서를 만든 후에는 다음 단계에 따라 1Password 비밀 참조를 수집하세요.
참고: 이 글을 작성하는 현재, 1Password는 동일한 레코드에 여러 파일을 추가하는 기능을 지원하지 않습니다.
NGINX Plus 컨테이너 빌드
이제 보안 파일과 해당 파일의 보안 비밀 참조 URI(Uniform Resource Identifier)를 활용하는 NGINX Plus 컨테이너를 빌드할 차례입니다. 이 단계에서는 Dockerfile 예제를 NGINX Plus 관리 가이드에서 사용합니다.
Prepare the docker build 프로세스 준비
Dockerfile을 새 디렉터리에 저장한 후 docker build 프로세스를 준비합니다. 1Password 비밀 정보를 docker build에 전달하려면 먼저 각 비밀 참조 URI를 환경 변수에 저장합니다. 그런 다음 Dockerfile을 저장한 디렉터리에서 새 Bash 터미널을 엽니다.
Bash 터미널에 다음 명령을 입력합니다:
export NGINX_CRT="op://Work/nginx-repo-crt/nginx-repo.crt"export NGINX_KEY="op://Work/nginx-repo-key/nginx-repo.key"비밀 참조 URI 바꾸기
The op run 명령을 사용하면 1Password CLI가 환경 변수의 비밀 참조 URI를 비밀 값으로 대체할 수 있습니다. 이를 docker build 명령에 활용하여 NGINX 리포지토리 인증서와 키를 빌드 컨테이너에 전달할 수 있습니다.
컨테이너 빌드를 완료하려면 이전 단계에서 사용한 것과 동일한 터미널에서 다음 명령을 실행하세요:
op run -- docker build --no-cache --secret id=nginx-key,env=NGINX_KEY --secret id=nginx-crt,env=NGINX_CRT -t nginxplus --load .이 명령에서 op run은 docker build 명령을 실행하고 1Password 비밀 참조 URI가 포함된 두 환경 변수 참조(NGINX_CRT 및 NGINX_KEY)를 감지합니다. op 명령은 URI를 비밀의 실제 값으로 대체합니다.
지금 시작하세요
간단한 단계를 따르고 1Password CLI를 사용하면 인증서와 키를 로컬 파일 시스템에 저장하지 않고도 NGINX Plus 리포지토리를 기반으로 NGINX Plus 컨테이너를 빌드하여 보안을 강화할 수 있는 환경을 조성할 수 있습니다.
NGINX Plus를 처음 사용하신다면 지금 30일 무료 체험을 시작하거나 사용 사례에 대해 논의하려면 문의해 주세요.
관련 블로그 게시물
시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.
F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.
Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.
진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.
NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.
Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.