Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 연산자
/ /

X.509를 통한 안전한 내부 인증

이 페이지의 내용

이 가이드에서는 다음을 구성하는 방법에 대해 설명합니다.

  • X.509 다중 Kubernetes 클러스터 MongoDB 배포 내 각 클러스터 의 MongoDB 노드 간 내부 인증 .

  • 클라이언트에서 MongoDB 인스턴스로의 X.509 인증.

TLS 암호화를 사용하여 다중 Kubernetes cluster MongoDB 배포를 보호하기 전에 다음 작업을 완료하세요.

  • 멀티 클러스터 빠른 시작 전제 조건의 단계를 따르세요.

  • TLS로 암호화된 다중 Kubernetes cluster를 배포합니다.

  • Kubernetes 연산자에 대한 자격 증명을 생성 합니다.

프로젝트 수준에서 X.509 인증을 활성화하면 모든 에이전트가 MongoDB 배포서버와 통신할 때 X.509 클라이언트 인증을 사용하도록 구성됩니다.

X.509 클라이언트 인증에는 다음 중 하나가 필요합니다.

  • 클라우드 매니저

  • MongoDB Ops Manager 사용 Kubernetes Operator 버전과 호환되는 버전입니다.

1

kubectl 명령을 실행하여 에이전트의 X.509 인증서를 저장하는 새 시크릿을 만듭니다.

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

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

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.
4
  1. 멤버 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
  2. 중앙 cluster에서 다음 명령을 실행하여 MongoDBMultiCluster 리소스가 실행 상태인지 확인합니다.

    kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \
    --namespace mongodb \
    get mdbmc multi-replica-set -o yaml -w

이미 인증서를 생성한 경우 다음 절차에 따라 주기적으로 인증서를 갱신합니다.

1

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

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

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 -

돌아가기

X를 사용합니다.509