X.509 클라이언트 인증서 생성
이 페이지의 내용
는 MongoDB Enterprise Kubernetes Operator MongoDB X.509 인증 이 활성화된 상태에서 인스턴스를 배포 수 있습니다. 배포에 대해 X.509 인증 이 활성화된 경우 배포서버 에 연결하려면 X.509 인증서를 생성하고 사용해야 배포서버. 이 새 클라이언트 인증서는 MongoDB deployment 서버 인증서에 서명한 동일한 CA 에서 서명해야 이를 수락할 수 있습니다.
이 문서에 설명된 절차에 따라 X.509 인증서를 사용하여 X.509 지원 MongoDB 배포에 연결합니다.
HashiCorp Vault 를 사용하는 경우 대신 볼트 시크릿을 생성 할 수 있습니다.
참고
Ops Manager 배포에 대한 인증서 갱신을 자동화하려면 인증서-관리자 통합을 설정하는 것이 좋습니다.
전제 조건
참고
TLS(전송 계층 보안), PKI(공개 키 인프라) 인증서 및 인증 기관에 대한 자세한 설명은 이 문서의 범위를 벗어납니다. 이 페이지에서는 TLS 및 X.509 인증에 대한 사전 지식이 있다고 가정합니다.
이 튜토리얼을 완료하려면 MongoDB Enterprise Kubernetes Operator가 설치되어 있어야 합니다. Kubernetes Operator 설치에 대한 지침 은 MongoDB Enterprise Kubernetes Operator 설치를 참조하세요.
이 튜토리얼에서는 X.509 인증이 필요한 MongoDB 배포가 있다고 가정합니다. MongoDB 리소스 배포에 대한 지침 은 MongoDB database 리소스 배포를 참조하세요.
절차
먼저 클라이언트 인증서를 만듭니다. 그런 다음 MongoDB 사용자를 생성하고 X.509 지원 배포서버에 연결합니다.
X.509 클라이언트 인증서를 생성합니다.
프로덕션용의 경우 MongoDB deployment 는 CA 에서 생성하고 서명한 유효한 인증서를 사용해야 합니다. 귀하 또는 귀하의 조직 은 cert-manager 와 같은 Kubernetes 네이티브 도구를 사용하여 독립적인 CA 를생성하고 유지 관리할 수 있습니다.
인증서를 얻고 관리하는 것은 이 문서의 범위를 벗어납니다.
중요
클라이언트의 TLS 인증서와 인증서의 키를 .pem
파일에 연결해야 합니다. X.509 지원 MongoDB 배포에 연결할 때 이 .pem
파일을 제시해야 합니다.
클라이언트 인증서에 반드시 있어야 하는 속성에 학습 보려면 MongoDB 매뉴얼의 클라이언트 인증서 요구 사항 을 참조하세요.
kubectl
을 네임스페이스의 기본값으로 구성합니다.
아직 실행하지 않았다면 다음 명령을 실행하여 생성한 네임스페이스에서
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>
다음 예시 ConfigMap 을 복사하여 저장합니다. .
다음 ConfigMap을 x509-mongodb-user.yaml
으로 저장합니다.
1 --- 2 apiVersion: mongodb.com/v1 3 kind: MongoDBUser 4 metadata: 5 name: new-x509-user 6 spec: 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 사용자로 설명합니다.
CA 의 마운트 위치 를 찾습니다.
다음 명령을 실행하여 각 포드에서 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
데이터베이스 배포에 연결할 때 다음 단계에서 mountPath
에 secret-ca
을 추가하여 전체 경로를 형성합니다.
/var/lib/mongodb-automation/secrets/ca/secret-ca
X.509 사용자를 사용하여 MongoDB deployment에 연결합니다.
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'