X.509를 통한 안전한 내부 인증
이 페이지의 내용
- 전제 조건
- MongoDBMultiCluster 리소스에 대한 X.509 내부 인증 구성
MongoDBMultiCluster
리소스의 에이전트의 X.509 인증서에 대한 시크릿을 만듭니다.- 노드 클러스터의 내부 X.509 인증서에 대한 시크릿을 생성합니다.
MongoDBMultiCluster
리소스를 업데이트하여 X509 인증을 사용하도록 설정합니다.MongoDBMultiCluster
리소스가 실행 중인지 확인합니다.- MongoDBMultiCluster 리소스에 대한 내부 인증 X.509 인증서 갱신
- 리소스 에 대한 시크릿
MongoDBMultiCluster
를 갱신합니다. - 에이전트의 X.509 인증서에 대한 시크릿을 갱신합니다.
MongoDBMultiCluster
리소스의 내부 멤버의 X.509 인증서에 대한 시크릿을 갱신합니다.
이 가이드에서는 다음을 구성하는 방법에 대해 설명합니다.
X.509 다중 Kubernetes 클러스터 MongoDB 배포 내 각 클러스터 의 MongoDB 노드 간 내부 인증 .
클라이언트에서 MongoDB 인스턴스로의 X.509 인증.
전제 조건
TLS 암호화를 사용하여 다중 Kubernetes cluster MongoDB 배포를 보호하기 전에 다음 작업을 완료하세요.
Kubernetes 연산자에 대한 자격 증명을 생성 합니다.
프로젝트 수준에서 X.509 인증을 활성화하면 모든 에이전트가 MongoDB 배포서버와 통신할 때 X.509 클라이언트 인증을 사용하도록 구성됩니다.
X.509 클라이언트 인증에는 다음 중 하나가 필요합니다.
MongoDBMultiCluster 리소스에 대한 X.509 내부 인증 구성
노드 클러스터의 내부 X.509 인증서에 대한 시크릿을 생성합니다.
kubectl
명령을 실행하여 내부 cluster 멤버의 X.509 인증서를 저장하는 새 시크릿을 만듭니다. 멤버 cluster는 MongoDBMultiCluster
리소스에 정의되어 있습니다.
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<resource-clusterfile-tls-cert> \ --key=<resource-clusterfile-tls-key>
리소스 를 업데이트하여 X 인증 을 활성화 합니다.MongoDBMultiCluster
509
Kubernetes 연산자MongoDBMultiCluster 리소스 사양 의 보안 설정으로 MongoDBMultiCluster 사용자 지정 리소스를 업데이트합니다. 아래에 internalCluster
설정을 spec.authentication
추가하고 "X509"
으로 설정합니다. 결과 구성은 다음 예시와 유사할 수 있습니다.
apiVersion: mongodb.com/v1 kind: MongoDBMultiCluster metadata: name: multi-replica-set spec: version: 6.0.0-ent type: ReplicaSet persistent: false duplicateServiceObjects: true credentials: my-credentials opsManager: configMapRef: name: my-project security: tls: a: custom-ca certsSecretPrefix: <prefix> authentication: enabled: true modes: ["X509"] agents: mode: "X509" internalCluster: "X509" clusterSpecList: - clusterName: ${MDB_CLUSTER_1_FULL_NAME} members: 3 - clusterName: ${MDB_CLUSTER_2_FULL_NAME} members: 2 - clusterName: ${MDB_CLUSTER_3_FULL_NAME} members: 3 The |k8s-op-short| copies the ConfigMap with the |certauth| created in the central cluster to each member cluster, generates a concatenated |pem| secret, and distributes it to the member clusters.
리소스가 실행 MongoDBMultiCluster
확인합니다.
멤버 cluster의 경우 다음 명령을 실행하여 MongoDB 파드가 실행 중 상태인지 확인합니다.
kubectl get pods \ --context=$MDB_CLUSTER_1_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_2_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_3_FULL_NAME \ --namespace mongodb 중앙 cluster에서 다음 명령을 실행하여
MongoDBMultiCluster
리소스가 실행 상태인지 확인합니다.kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace mongodb \ get mdbmc multi-replica-set -o yaml -w
MongoDBMultiCluster 리소스에 대한 내부 인증 X.509 인증서 갱신
이미 인증서를 생성한 경우 다음 절차에 따라 주기적으로 인증서를 갱신합니다.
리소스 에 대한 MongoDBMultiCluster
시크릿을 갱신합니다.
이 kubectl
명령을 실행하여 기존 MongoDBMultiCluster
시크릿 을 갱신합니다. 리소스에 대한 인증서를 저장합니다.
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-cert \ --cert=<resource-tls-cert> \ --key=<resource-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
에이전트의 X.509 인증서에 대한 시크릿을 갱신합니다.
kubectl
명령을 실행하여 MongoDBMultiCluster
리소스 에이전트 인증서를 저장하는 기존 시크릿을 갱신합니다.
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
리소스 의 내부 구성원의 X. 인증서에 대한509 MongoDBMultiCluster
시크릿을 갱신합니다.
kubectl
명령을 실행하여 MongoDBMultiCluster
리소스의 내부 멤버에 대한 X.509 인증서를 저장하는 기존 시크릿을 갱신합니다.
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<resource-clusterfile-tls-cert> \ --key=<resource-clusterfile-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -