문서 메뉴
문서 홈
/
MongoDB Enterprise Kubernetes 연산자
/ /

managed LDAP를 사용하여 데이터베이스 사용자를 관리

이 페이지의 내용

  • 고려 사항
  • 전제 조건
  • 데이터베이스 사용자 추가
  • 데이터베이스 사용자 삭제

Kubernetes Operator는 TLS 및 LDAP 클러스터 인증이 활성화된 상태에서 실행되는 배포에 대한 데이터베이스 사용자 관리를 지원합니다.

LDAP 를 통해 인증된 사용자에 대한 구성은 LDAP 쿼리 템플릿과 MongoDB가 설정하는 매핑에 의존합니다.

자세한 내용은 MongoDB Server 문서의 다음 섹션을 참조하세요.

  • LDAP 인증

  • LDAP 쿼리 템플릿

  • security.ldap.userToDNMapping

Kubernetes Operator는 생성하는 배포에서 SCRAM, LDAP 및 X.509 인증 메커니즘을 지원합니다. Kubernetes 연산자 생성 배포에서는 MongoDB Ops Manager 를 사용하여 다음을 수행할 수 없습니다.

  • 배포를 위한 다른 인증 메커니즘을 구성합니다.

  • SCRAM, LDAP 또는 X.509 인증을 사용 하지 않는 사용자를 managed합니다.

데이터베이스 사용자를 관리하기 전에 LDAP활성화된 복제본 세트 또는 샤드 클러스터 를 배포해야 합니다. 활성화되었습니다. 선택적으로 TLS 를 활성화할 수 있습니다. 자세한 내용 은 데이터베이스 리소스 보호를 참조하세요.

1

아직 실행하지 않았다면 다음 명령을 실행하여 생성한 네임스페이스에서 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>
2
---
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"
...
3
4

다음 표를 참조하여 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
문자열
데이터베이스 사용자에게 부여할 역할 의 이름입니다. 역할 이름은 MongoDB Cloud Manager 기본 제공 역할 또는 또는 MongoDB Ops Manager에 존재하는 사용자 지정 역할 일 수 있습니다.
readWriteAnyDatabase
spec.username
문자열

spec.security.authentication.ldap.userToDNMapping 에 따라 LDAP DN(고유 이름)에 매핑되는 인증된 사용자 이름입니다. DN은 LDAP 배포에 이미 존재해야 합니다. 이 사용자 이름은 RFC 를 준수해야 2253 합니다. LDAPv 고유3 이름 표준입니다. transformed

자세한 내용은 MongoDB 매뉴얼의 LDAP 쿼리 템플릿 을 참조하세요.

uid=mdb0,dc=example,dc=org
5

다음 예제에 정의된 형식을 사용하여 이 사용자에게 추가 역할을 부여할 수 있습니다.

---
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"
...
6

다음 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 리소스에 연결할 수 있습니다.

7

Cloud Manager 또는 Ops Manager에서 새로 생성된 사용자를 볼 수 있습니다.

  1. 프로젝트의 Deployment 보기에서 Security 탭을 클릭합니다.

  2. 중첩된 MongoDB Users 탭을 클릭합니다.

데이터베이스 사용자를 삭제하려면 metadata.name 사용자 ConfigMap 에서 를 전달합니다. 다음 명령에 추가합니다.

kubectl delete mdbu <metadata.name>