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 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'