managed X.509 인증을 사용하여 데이터베이스 사용자
Kubernetes Operator는 TLS 및 X.509 내부 클러스터 인증이 활성화된 상태에서 실행되는 배포에 대한 데이터베이스 사용자 관리를 지원합니다.
지원되는 인증 메커니즘
Kubernetes Operator는 생성하는 배포에서 SCRAM, LDAP 및 X.509 인증 메커니즘을 지원합니다. Kubernetes 연산자 생성 배포에서는 MongoDB Ops Manager 를 사용하여 다음을 수행할 수 없습니다.
배포를 위한 다른 인증 메커니즘을 구성합니다.
SCRAM, LDAP 또는 X.509 인증을 사용 하지 않는 사용자를 managed합니다.
X.509 인증 을 활성화한 후 MongoDB509 Ops Manager 인터페이스 MongoDB Ops Manager 또는 CustomResourceDefinition 을 사용하여 X. 사용자를 추가할 수 있습니다.
전제 조건
데이터베이스 사용자를 관리하기 전에 TLS 및 X.509 가 활성화된 복제본 세트 또는 샤딩된 클러스터 를 배포 해야 합니다.
MongoDB 사용자를 위한 X.509 인증서를 생성해야 하는 경우 X.509 클라이언트 인증서 생성을 참조하세요.
데이터베이스 사용자 추가
을 네임스페이스 를 기본값 으로 구성합니다.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>
다음 예시 CustomResourceDefinition 을 복사합니다.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: <resource-name> spec: username: <rfc2253-subject> db: "$external" mongodbResourceRef: name: '<MongoDB-Resource-name>' roles: - db: <database-name> name: <role-name> ...
원하는 텍스트 편집기를 열고 예시 CustomResourceDefinition을 새 텍스트 파일 에 붙여넣습니다.
필요에 따라 다음 매개변수의 줄을 변경합니다.
다음 표를 사용하여 MongoDB 사용자 리소스 사양의 관련 줄을 변경하는 방법을 안내합니다.
키 | 유형 | 설명 | 예시 | |||
---|---|---|---|---|---|---|
metadata.name | 문자열 | 데이터베이스 사용자 리소스의 이름입니다. 리소스 이름은 44자 이내여야 합니다. | mms-user-1 | |||
spec.username | 문자열 | Kubernetes CA (Kuber CA)가 서명한 x509 클라이언트 인증서의 제목 줄입니다. 중요: 사용자 이름 은 RFC 를 준수해야 2253 합니다. LDAPv 고유3 이름 표준입니다. X.509 인증서의 제목 줄을 가져오려면 다음 명령을 실행합니다.
| CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US | |||
spec.opsManager.configMapRef.name | 문자열 | 사용자를 추가할 MongoDB database가 포함된 프로젝트의 이름입니다. spec.cloudManager.configMapRef.name 설정은 이 설정의 별칭이며 대신 사용할 수 있습니다. | my-project | |||
spec.roles.db | 문자열 | 역할 이 작동할 수 있는 데이터베이스입니다. | admin | |||
spec.mongodbResourceRef.name | 문자열 | 이 사용자가 연결된 MongoDB 리소스 의 이름입니다. | my-resource | |||
spec.roles.name | 문자열 | readWriteAnyDatabase |
CustomResourceDefinition 에 사용자의 추가역할을 추가합니다.
다음 예제에 정의된 형식을 사용하여 이 사용자에게 추가 역할을 부여할 수 있습니다.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: mms-user-1 spec: username: CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US project: my-project db: "$external" roles: - db: admin name: backup - db: admin name: restore ...
사용자를 만듭니다.
다음 Kubernetes 명령을 호출하여 데이터베이스 사용자를 생성합니다.
kubectl apply -f <database-user-conf>.yaml
새 MongoDB database 사용자를 생성하면 Operator가 새 시크릿Kubernetes 을 자동으로 Kubernetes 생성합니다. . Kubernetes 시크릿 에는 새 데이터베이스 사용자에 대한 다음 정보가 포함되어 있습니다.
username
: 데이터베이스 사용자의 사용자 이름password
: 데이터베이스 사용자의 비밀번호connectionString.standard
: 이 데이터베이스 사용자로 데이터베이스에 연결할 수 있는 표준 연결 string 입니다.connectionString.standardSrv
: 이 데이터베이스 사용자로 데이터베이스에 연결할 수 있는 DNS 시드 목록 연결 string 입니다.
참고
또는 MongoDB 사용자 리소스 사양 에 선택 사항인 spec.connectionStringSecretName
필드를 지정하여 Kubernetes 연산자가 생성하는 연결 문자열 시크릿의 이름을 지정할 수 있습니다.
이러한 자격 증명을 사용하여 Kubernetes 내부에서 MongoDB 데이터베이스 리소스에 연결할 수 있습니다.
데이터베이스 사용자 삭제
데이터베이스 사용자를 삭제하려면 metadata.name
사용자 ConfigMap 에서 를 전달합니다. 다음 명령에 추가합니다.
kubectl delete mdbu <metadata.name>