managed LDAP를 사용하여 데이터베이스 사용자를 관리
이 페이지의 내용
Kubernetes Operator는 TLS 및 LDAP 클러스터 인증이 활성화된 상태에서 실행되는 배포에 대한 데이터베이스 사용자 관리를 지원합니다.
고려 사항
LDAP 를 통해 인증된 사용자에 대한 구성은 LDAP 쿼리 템플릿과 MongoDB가 설정하는 매핑에 의존합니다.
자세한 내용은 MongoDB Server 문서의 다음 섹션을 참조하세요.
지원되는 인증 메커니즘
Kubernetes Operator는 생성하는 배포에서 SCRAM, LDAP 및 X.509 인증 메커니즘을 지원합니다. Kubernetes 연산자 생성 배포에서는 MongoDB Ops Manager 를 사용하여 다음을 수행할 수 없습니다.
배포를 위한 다른 인증 메커니즘을 구성합니다.
SCRAM, LDAP 또는 X.509 인증을 사용 하지 않는 사용자를 managed합니다.
전제 조건
데이터베이스 사용자를 관리하기 전에 LDAP 가 활성화된 복제본 세트 또는 샤딩된 클러스터 를 배포 해야 합니다. 활성화되었습니다. 선택적으로 TLS 를 활성화 할 수 있습니다. 학습 내용 은 데이터베이스 리소스 보호를 참조하세요.
데이터베이스 사용자 추가
을 네임스페이스 를 기본값 으로 구성합니다.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: ldap-user-1 spec: username: "uid=mdb0,dc=example,dc=org" db: "$external" mongodbResourceRef: name: ldap-replica-set roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "readWriteAnyDatabase" - db: "admin" name: "dbAdminAnyDatabase" ...
원하는 텍스트 편집기를 열고 예시 CustomResourceDefinition을 새 텍스트 파일 에 붙여넣습니다.
필요에 따라 다음 매개변수의 줄을 변경합니다.
다음 표를 참조하여 MongoDB 사용자 리소스 사양 의 관련 줄을 변경하는 방법을 안내합니다. LDAP 사용자 설정의 전체 목록은 Kubernetes 연산자 MongoDB 리소스 사양의 보안 설정 을 참조하세요.
키 | 유형 | 설명 | 예시 |
---|---|---|---|
metadata.name | 문자열 | MongoDB database 데이터베이스 사용자의 리소스 이름입니다. 리소스 이름은 44자 이내여야 합니다. | ldap-user-1 |
spec.db | 문자열 | 사용자를 추가할 MongoDB database의 이름입니다. 이 값은 $external 이어야 합니다. | $external |
spec.mongodbResourceRef.name | 문자열 | 이 사용자가 연결된 MongoDB 리소스 의 이름입니다. | my-resource |
spec.opsManager.configMapRef.name | 문자열 | 사용자를 추가할 MongoDB 데이터베이스가 포함된 프로젝트의 이름입니다. spec.cloudManager.configMapRef.name 설정은 이 설정의 별칭이며 대신 사용할 수 있습니다. | my-project |
spec.roles.db | 문자열 | 역할 이 작동할 수 있는 데이터베이스입니다. | admin |
spec.roles.name | 문자열 | readWriteAnyDatabase | |
spec.username | 문자열 |
자세한 내용은 MongoDB 매뉴얼의 LDAP 쿼리 템플릿 을 참조하세요. | uid=mdb0,dc=example,dc=org |
CustomResourceDefinition 에 사용자의 추가역할을 추가합니다.
다음 예제에 정의된 형식을 사용하여 이 사용자에게 추가 역할을 부여할 수 있습니다.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: ldap-user-1 spec: username: "uid=mdb0,dc=example,dc=org" db: "$external" mongodbResourceRef: name: ldap-replica-set roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "readWriteAnyDatabase" - db: "admin" name: "dbAdminAnyDatabase" ...
사용자를 만듭니다.
다음 Kubernetes 명령을 호출하여 데이터베이스 사용자를 생성합니다.
kubectl apply -f <database-user-conf>.yaml
다음 예제는 Kubernetes 연산자 MongoDB deployment에서 LDAP로 인증을 활성화할 때 사용할 수 있는 연결 문자열 형식을 보여줍니다. 이 예제에서는 mongodb
네임스페이스와 replica-set-ldap
이라는 이름의 복제본 세트 배포를 사용합니다. 예제는 샤드 cluster와 유사합니다.
connectionString.standard
: 이 데이터베이스 사용자로 데이터베이스에 연결할 수 있는 표준 연결 string 입니다.mongodb://replica-set-ldap-0-0-svc.mongodb.svc.cluster.local/?connectTimeoutMS=20000&replicaSet=replica-set-ldap&serverSelectionTimeoutMS=20000&ssl=true&authSource=$external connectionString.standardSrv
: 이 데이터베이스 사용자로 데이터베이스에 연결할 수 있는 DNS 시드 목록 연결 string 입니다.mongodb+srv://replica-set-ldap-svc.mongodb.svc.cluster.local/?connectTimeoutMS=20000&replicaSet=replica-set-ldap&serverSelectionTimeoutMS=20000&ssl=true&authSource=$external
이전에 표시된 형식을 사용하면 다음 예제와 같이 MongoDB Shell(mongosh
)로 MongoDB database에 연결할 수 있습니다.
mongosh <connection-string> \ --host <my-replica-set>/web1.example.com \ --port 30907 \ --authenticationMechanism PLAIN \ --username cn=rob,cn=Users,dc=ldaps-01,dc=myteam,dc=com
이러한 자격 증명을 사용하여 Kubernetes 내부에서 MongoDB database 리소스에 연결할 수 있습니다.
데이터베이스 사용자 삭제
데이터베이스 사용자를 삭제하려면 metadata.name
사용자 ConfigMap 에서 를 전달합니다. 다음 명령에 추가합니다.
kubectl delete mdbu <metadata.name>