문서 메뉴
문서 홈
/
MongoDB Enterprise Kubernetes 연산자
/ /

X.509 클라이언트 인증서 생성

이 페이지의 내용

MongoDB Enterprise Kubernetes Operator는 X.509 인증 이 활성화된 상태에서 MongoDB 인스턴스를 배포할 수 있습니다. 배포에 대해 X.509 인증이 활성화된 경우 배포에 연결하려면 X.509 인증서를 생성하고 사용해야 합니다. 이 새 클라이언트 인증서는 MongoDB 배포서버 인증서에 서명한 동일한 CA 에서 서명해야 이를 수락할 수 있습니다.

이 문서에 설명된 절차에 따라 X.509 인증서를 사용하여 X.509 지원 MongoDB 배포에 연결합니다.

HashiCorp Vault 를 사용하는 경우 시크릿 저장 도구 로 대신 볼트 시크릿을 생성 할 수 있습니다.

참고

Ops Manager 배포에 대한 인증서 갱신을 자동화하려면 인증서-관리자 통합을 설정하는 것이 좋습니다.

참고

TLS(전송 계층 보안), PKI(공개 키 인프라) 인증서 및 인증 기관에 대한 자세한 설명은 이 문서의 범위를 벗어납니다. 이 페이지에서는 TLS 및 X.509 인증에 대한 사전 지식이 있다고 가정합니다.

먼저 클라이언트 인증서를 만듭니다. 그런 다음 MongoDB 사용자를 생성하고 X.509 지원 배포서버에 연결합니다.

1

프로덕션용의 경우 MongoDB deployment는 CA 에서 생성하고 서명한 유효한 인증서를 사용해야 합니다. 귀하 또는 귀하의 조직은 cert-manager 와 같은 Kubernetes 네이티브 도구를 사용하여 독립적인 CA 를생성하고 유지 관리할 수 있습니다.

인증서를 얻고 관리하는 것은 이 문서의 범위를 벗어납니다.

중요

클라이언트의 TLS 인증서와 인증서의 키를 .pem 파일에 연결해야 합니다. X.509 지원 MongoDB 배포에 연결할 때 이 .pem 파일을 제시해야 합니다.

클라이언트 인증서에 반드시 있어야 하는 속성에 대해 알아보려면 MongoDB 매뉴얼의 클라이언트 인증서 요구 사항 을 참조하세요.

2

아직 실행하지 않았다면 다음 명령을 실행하여 생성한 네임스페이스에서 kubectl 명령을 모두 실행합니다.

참고

다중 Kubernetes 클러스터 MongoDB deployment에서 MongoDB Ops Manager 리소스를 배포하는 경우:

  • context을 중앙 클러스터의 이름(예: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME")으로 설정합니다.

  • --namespace 를 다중 Kubernetes 클러스터 MongoDB 배포에 사용한 것과 동일한 범위 (예: kubectl config --namespace "mongodb" 로 설정합니다.

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
3

다음 ConfigMap을 x509-mongodb-user.yaml 으로 저장합니다.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDBUser
4metadata:
5 name: new-x509-user
6spec:
7 username: "CN=my-x509-authenticated-user,OU=organizationalunit,O=organization"
8 db: "$external"
9 mongodbResourceRef:
10 name: '<name of the MongoDB resource>'
11 roles:
12 - db: "admin"
13 name: "readWriteAnyDatabase"

이 ConfigMap .yaml 파일은 MongoDBUser 사용자 지정 객체를 설명합니다. 이러한 사용자 지정 객체를 사용하여 MongoDB 사용자를 만들 수 있습니다. 자세한 내용은 MongoDB 사용자 리소스 사양을 참조하세요.

이 예에서 ConfigMap은 사용자를 클라이언트가 해당 X.509 인증서로 MongoDB에 연결하는 데 사용할 수 있는 X.509 사용자로 설명합니다.

4

다음 명령을 실행하여 ConfigMap을 적용하고 X.509 MongoDB 사용자를 생성합니다.

kubectl apply -f x509-mongodb-user.yaml

다음과 유사한 출력이 표시됩니다.

mongodbuser.mongodb.com/new-x509-user created
5

다음 명령을 실행하여 new-x509-user 의 상태를 확인합니다.

kubectl get mdbu/new-x509-user -o yaml

다음과 유사한 출력이 표시됩니다.

NAME CREATED AT
new-x509-user 8m
6

다음 명령을 실행하여 각 포드에서 Kubernetes 연산자가 CA 시크릿을 마운트한 위치를 찾습니다.

kubectl get statefulset <metadata.name> -o yaml

출력에서 secret-ca 마운트를 찾습니다.

volumeMounts:
- mountPath: /opt/scripts
name: database-scripts
readOnly: true
- mountPath: /var/lib/mongodb-automation/secrets/ca
name: secret-ca
readOnly: true
- mountPath: /var/lib/mongodb-automation/secrets/certs
name: secret-certs
readOnly: true

데이터베이스 배포에 연결할 때 다음 단계에서 mountPathsecret-ca 을 추가하여 전체 경로를 형성합니다.

/var/lib/mongodb-automation/secrets/ca/secret-ca
7

X.509 사용자를 생성한 후에는 MongoDB Shell(mongosh)을 사용하여 배포서버에 연결을 시도합니다.

mongosh --host {host} --port {port} --tls \
--tlsCAFile </path/to/secret-ca> \
--tlsCertificateKeyFile <your-cert>.pem \
--authenticationMechanism MONGODB-X509 \
--authenticationDatabase '$external'
mongosh --host {host} --port {port} --ssl \
--sslCAFile </path/to/secret-ca> \
--sslPEMKeyFile <your-cert>.pem \
--authenticationMechanism MONGODB-X509 \
--authenticationDatabase '$external'

돌아가기

ConfigMap을 사용하여 1개의 프로젝트 만들기

다음

MongoDB 데이터베이스 리소스 배포