Docs Menu
Docs Home
/
Atlas Open Service 브로커

데이터베이스 사용자 관리

중요

Atlas Open Service 브로커는 더 이상 사용되지 않습니다. 대신MongoDB Atlas 연산자 를 사용합니다.

Atlas Open Service 브로커를 통해 Atlas 데이터베이스 사용자 를 생성하고 삭제 수 있습니다.

데이터베이스 사용자를 관리하기 전에 복제본 세트배포 해야 합니다.

데이터베이스 사용자를 만들려면 먼저 Kubernetes에서 ServiceBinding 리소스 정의합니다. 그런 다음 Atlas Open Service 브로커는 Atlas 에서 해당 데이터베이스 사용자를 생성합니다.

1
  1. 다음 리소스 정의 예시를 복사합니다.

    원하는 구성에 맞게 수정할 수 있는 YAML 파일입니다.

    apiVersion: servicecatalog.k8s.io/v1beta1
    kind: ServiceBinding
    metadata:
    name: <USER_NAME>
    namespace: <NAMESPACE>
    spec:
    instanceRef:
    name: <CLUSTER_NAME>
  2. 원하는 텍스트 편집기를 열고 리소스 정의를 새 텍스트 파일에 붙여넣습니다.

2

데이터베이스 사용자를 생성하려면 강조 표시된 설정이 필요합니다.

설명
예시

metadata.name

Kubernetes의 서비스 바인딩 리소스의 이름입니다.

atlas-user-1

metadata.namespace

서비스 바인딩 리소스 생성되는 Kubernetes 네임스페이스 입니다.

atlas

spec.intanceRef.name

Atlas cluster에 해당하는 Kubernetes의 ServiceInstance 리소스의 이름입니다.

my-atlas-cluster

데이터베이스 사용자를 생성하면 Atlas Open Service 브로커가 해당 사용자에 대한 Atlas 사용자 이름과 비밀번호를 무작위로 생성합니다. 서비스 카탈로그는 사용자의 Atlas 사용자 이름, 비밀번호, 연결 URI를 Kubernetes 시크릿에 자동으로 저장합니다.

추가 설정을 지정하지 않으면 다음 기본 속성을 사용하여 데이터베이스 사용자가 생성됩니다.

  • SCRAM-SHA admin 데이터베이스에서의 인증

  • readWriteAnyDatabase admin 데이터베이스에 대한 권한

3

spec.parameters.user 키에서 사용자에 대한 추가 설정을 구성할 수 있습니다. 이러한 설정은 데이터베이스 사용자 공개 API 생성 메서드의 요청 본문 매개변수에 해당합니다.

중요

다음 API 매개변수는 이전 단계의 필수 Atlas Open Service 브로커 설정으로 덮어쓰므로 지정해서는 안 됩니다.

  • databaseName

  • groupId

  • password

  • username

예시

이 예제 리소스 정의는 다음을 생성합니다.

  1. atlas 네임스페이스에 있는 atlas-user-1 이라는 Kubernetes 리소스와

  2. 다음 구성을 가진 Atlas 데이터베이스 사용자:

    • SCRAM-SHA 무작위로 생성된 사용자 이름과 비밀번호로 admin 데이터베이스에서 인증

    • readWrite sample_airbnb 데이터베이스의 listingsAndReviews collection에 대한 권한

    • dbAdmin sample_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
4
5

다음 Kubernetes 명령을 호출하여 데이터베이스 사용자를 생성합니다.

kubectl apply -f atlas-user-1.yaml
6

Kubernetes 클러스터 내에서 새 사용자의 상태를 보려면 에서 metadata.namereplica-set.yaml 다음 명령으로 전달합니다.

svcat describe instance <METADATA.NAME> -n <METADATA.NAMESPACE>

사용자의 상태가 Bindings 아래에 표시됩니다.

예시

Bindings:
NAME STATUS
+---------------+--------+
atlas-user-1 Ready

사용자의 세부 정보 보기를 보려면 에서 metadata.nameatlas-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
7

사용자에 대한 연결 세부 정보는 ServiceBinding 리소스와 이름 및 네임스페이스가 동일한 비밀에 저장됩니다. 이 암호는 Kubernetes에 의해 base64로 인코딩되며 사용자의 Atlas 사용자 이름, 비밀번호, URI가 포함됩니다.

  1. metadata.name 에서 및 를 metadata.namespace atlas-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
  2. 시크릿에서 data.username 을(를) 다음 명령에 전달하여 사용자의 Atlas 사용자 이름을 디코딩합니다.

    echo '<DATA.USERNAME>' | base64 --decode

    이 명령은 디코딩된 Atlas 사용자 이름을 반환합니다.

    예시

    52c35e67-c7a3-11e9-8d20-0374ac110007

    data.passworddata.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 을 반환합니다.

이 페이지의 내용