중요
Atlas Open Service 브로커는 더 이상 사용되지 않습니다. 대신MongoDB Atlas 연산자 를 사용합니다.
Atlas Open Service 브로커를 통해 Atlas 데이터베이스 사용자 를 생성하고 삭제 수 있습니다.
전제 조건
데이터베이스 사용자를 관리하기 전에 복제본 세트배포 해야 합니다.
데이터베이스 사용자 추가
데이터베이스 사용자를 만들려면 먼저 Kubernetes에서 ServiceBinding 리소스 정의합니다. 그런 다음 Atlas Open Service 브로커는 Atlas 에서 해당 데이터베이스 사용자를 생성합니다.
필수 설정을 구성합니다.
데이터베이스 사용자를 생성하려면 강조 표시된 설정이 필요합니다.
키 | 설명 | 예시 |
|---|---|---|
| Kubernetes의 서비스 바인딩 리소스의 이름입니다. |
|
| 서비스 바인딩 리소스 생성되는 Kubernetes 네임스페이스 입니다. |
|
| Atlas cluster에 해당하는 Kubernetes의 |
|
데이터베이스 사용자를 생성하면 Atlas Open Service 브로커가 해당 사용자에 대한 Atlas 사용자 이름과 비밀번호를 무작위로 생성합니다. 서비스 카탈로그는 사용자의 Atlas 사용자 이름, 비밀번호, 연결 URI를 Kubernetes 시크릿에 자동으로 저장합니다.
추가 설정을 지정하지 않으면 다음 기본 속성을 사용하여 데이터베이스 사용자가 생성됩니다.
SCRAM-SHAadmin데이터베이스에서의 인증readWriteAnyDatabaseadmin데이터베이스에 대한 권한
사용자에 대한 추가 설정을 추가합니다.
spec.parameters.user 키에서 사용자에 대한 추가 설정을 구성할 수 있습니다. 이러한 설정은 데이터베이스 사용자 공개 API 생성 메서드의 요청 본문 매개변수에 해당합니다.
중요
다음 API 매개변수는 이전 단계의 필수 Atlas Open Service 브로커 설정으로 덮어쓰므로 지정해서는 안 됩니다.
databaseNamegroupIdpasswordusername
예시
이 예제 리소스 정의는 다음을 생성합니다.
atlas네임스페이스에 있는atlas-user-1이라는 Kubernetes 리소스와다음 구성을 가진 Atlas 데이터베이스 사용자:
SCRAM-SHA무작위로 생성된 사용자 이름과 비밀번호로admin데이터베이스에서 인증readWritesample_airbnb데이터베이스의listingsAndReviewscollection에 대한 권한dbAdminsample_geospatial데이터베이스에 대한 권한
apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceBinding metadata: name: atlas-user-1 namespace: atlas spec: instanceRef: name: my-atlas-cluster parameters: user: roles: - databaseName: sample_airbnb collectionName: listingsAndReviews roleName: readWrite - databaseName: sample_geospatial roleName: dbAdmin
새 사용자의 상태를 확인합니다.
Kubernetes 클러스터 내에서 새 사용자의 상태를 보려면 에서 metadata.name 를 replica-set.yaml 다음 명령으로 전달합니다.
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>
사용자의 상태가 Bindings 아래에 표시됩니다.
예시
Bindings: NAME STATUS +---------------+--------+ atlas-user-1 Ready
사용자의 세부 정보 보기를 보려면 에서 metadata.name 을 atlas-user-1.yaml 다음 명령으로 전달합니다.
svcat describe binding <METADATA.NAME> -n <METADATA.NAMESPACE>
이 명령은 사용자의 세부 정보를 반환합니다.
예시
Name: atlas-user-1 Namespace: atlas Status: Ready - Injected bind result @ 2019-08-24 20:57:43 +0000 UTC Secret: atlas-user-1 Instance: my-replica-set Parameters: user: roles: - collectionName: listingsAndReviews databaseName: sample_airbnb roleName: readWrite - databaseName: sample_geospatial roleName: dbAdmin Secret Data: password 44 bytes uri 58 bytes username 36 bytes
새 사용자의 Atlas 연결 세부 정보를 조회합니다.
사용자에 대한 연결 세부 정보는 ServiceBinding 리소스와 이름 및 네임스페이스가 동일한 비밀에 저장됩니다. 이 암호는 Kubernetes에 의해 base64로 인코딩되며 사용자의 Atlas 사용자 이름, 비밀번호, URI가 포함됩니다.
metadata.name에서 및 를metadata.namespaceatlas-user-1.yaml다음 명령에 전달하여 사용자에 대한 Kubernetes 시크릿을 검색합니다.kubectl get secret <METADATA.NAME> -n <METADATA.NAMESPACE> -o yaml 이 명령은 base64로 인코딩된 사용자의 Atlas 비밀번호, URI 및 사용자 이름을 반환합니다.
예시
apiVersion: v1 data: password: MlFhTnB4NzNoaEYwZWFKFMCjRUlNU2Iwbk5OMnJPT0JGZnZOeldKMS16Zz0= uri: bW9uZ29kYitzcnY6Ly8wMTY5YjA5My1jNTEyLTExZTktOGQyMC1kbjZyNy5tb25nb2RiLXFhLm5ldA== username: NTJjMzVlNjctYzdhMy0xMWKR7ThkMjAtMDI0MmFjMTEwMDA3 kind: Secret metadata: creationTimestamp: "2019-08-26T01:46:30Z" name: atlas-user-1 namespace: atlas ownerReferences: - apiVersion: servicecatalog.k8s.io/v1beta1 blockOwnerDeletion: true controller: true kind: ServiceBinding name: atlas-user-1 uid: 52c35ea1-c7a3-11e9-8d20-0242ac113457 resourceVersion: "79692" selfLink: /api/v1/namespaces/atlas/secrets/atlas-user-1 uid: 14829566-4859-4b47-97f6-d0a2f7425906 type: Opaque 시크릿에서
data.username을(를) 다음 명령에 전달하여 사용자의 Atlas 사용자 이름을 디코딩합니다.echo '<DATA.USERNAME>' | base64 --decode 이 명령은 디코딩된 Atlas 사용자 이름을 반환합니다.
예시
52c35e67-c7a3-11e9-8d20-0374ac110007 data.password및data.uri과 함께 명령을 반복하여 사용자의 Atlas 비밀번호와 URI를 디코딩합니다.echo '<DATA.PASSWORD>' | base64 --decode echo '<DATA.URI>' | base64 --decode
팁
Atlas cluster에 연결하기
배포서버에 연결하려면 디코딩된 Atlas URI와 사용자 이름을 다음 명령에 전달합니다.
mongo <DECODED_URI> --username <DECODED_USERNAME>
비밀번호를 입력하라는 메시지가 표시되면 사용자의 디코딩된 Atlas 비밀번호를 입력합니다.
데이터베이스 사용자 삭제
데이터베이스 사용자를 삭제하려면 ServiceBinding 리소스에서 metadata.name 을(를) 다음 명령 중 하나에 전달합니다.
kubectl delete servicebindings <METADATA.NAME> \ -n <METADATA.NAMESPACE>
사용자가 삭제되었는지 확인하려면 cluster 리소스에서 metadata.name 를 다음 명령으로 전달합니다.
svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>
이 명령은 No bindings defined 아래에 Bindings 을 반환합니다.