다음을 통해 공유


Azure DocumentDB에서 보조 네이티브 사용자로 읽기 및 읽기/쓰기 권한

Azure DocumentDB는 특수한 읽기-쓰기 및 읽기 전용 역할이 있는 보조 네이티브 DocumentDB 사용자를 지원하여 데이터 액세스를 안전하게 위임할 수 있도록 합니다. 클러스터 프로비저닝 중에 만든 기본 제공 관리 계정에는 사용자 관리를 비롯한 모든 권한이 있습니다. 보조 사용자는 클러스터 복제본에 자동으로 복제되지만 사용자 관리는 주 클러스터에서 수행해야 합니다.

필수 조건

  • Azure 구독

  • 기존 Azure DocumentDB 클러스터

  • MongoDB 셸. 자세한 내용은 MongoDB 셸 설치를 참조하세요.

  • 클라이언트가 클러스터에 연결할 수 있도록 하는 방화벽 규칙입니다. 자세한 내용은 방화벽 구성을 참조하세요.

네이티브 역할

Azure DocumentDB는 다음 역할을 가진 보조 사용자를 위한 네이티브 역할 기반 액세스 제어를 지원합니다.

Description
readWriteAnyDatabase 데이터베이스 관리를 비롯한 전체 읽기/쓰기 권한
clusterAdmin 데이터베이스 관리를 비롯한 전체 읽기/쓰기 권한
readAnyDatabase 읽기 전용 권한

MongoDB 드라이버 또는 MongoDB Shell(mongosh)과 같은 도구를 사용하여 사용자 및 역할을 관리합니다.

비고

데이터베이스 관리 및 작업 권한이 모두 있는 전체 읽기-쓰기 사용자만 지원됩니다. 역할은 별도로 할당할 수 없습니다.

MongoDB 셸을 통해 인증 및 작업 수행

클러스터 프로비전 중에 만든 기본 제공 관리 계정을 사용하여 인증합니다. 이 계정에는 클러스터에 대한 독점적인 사용자 관리 권한(userAdmin)이 있습니다.

  1. MongoDB 셸이 설치된 클라이언트에서 터미널을 엽니다.

  2. Azure DocumentDB 클러스터의 이름과 현재 자격 증명을 가져옵니다.

    팁 (조언)

    연결 문자열 섹션을 사용하여 Azure Portal에서 클러스터에 대한 네이티브 연결 문자열을 가져올 수 있습니다.

  3. 다음 연결 문자열을 사용하여 연결합니다.

    mongosh "mongodb+srv://<username>:<password>@<cluster-name>?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
    

사용자 관리

명령을 실행하는 클러스터에 새 사용자를 만듭니다. 이 createUser 명령은 사용자가 이미 있는 경우 중복된 사용자 오류를 반환합니다.

  1. 데이터 평면 관리 사용자를 만듭니다.

    db.runCommand(
      {
        createUser:"yourUserName",
        pwd : "yourPassword",
        roles : [
          { role:"clusterAdmin",db:"admin" },
          { role:"readWriteAnyDatabase", db:"admin" }
        ]
      }
    )
    
  2. 읽기 전용 사용자를 만듭니다.

    db.runCommand(
      {
        createUser:"yourUserName",
        pwd : "yourPassword",
        roles : [
          { role:"readAnyDatabase",db:"admin" }
        ]
      }
    )
    
  3. 명령을 실행하여 데이터베이스에서 사용자를 업데이트합니다 updateUser .

    use admin
    
    db.runCommand(
      {
        updateUser:"<username>",
        pwd : "<new cleartext password>"
      }
    )
    

    비고

    이 명령은 암호 업데이트만 지원합니다.

  4. 클러스터에서 사용자를 제거합니다.

    use admin
    
    db.runCommand(
      {
        dropUser:"<username>"
      }
    )
    
  5. 클러스터의 모든 네이티브 사용자에 대한 세부 정보를 검색하거나 단일 사용자를 지정하여 역할 및 기타 특성에 대한 정보를 가져옵니다.

    use admin
    
    db.runCommand(
      {
        usersInfo:1
      }
    )