보안

70_Lecture/MongoDB
공유하기:

보안

1. 인증 (Authentication)

사용자가 본인임을 증명하는 프로세스입니다.

  • SCRAM-SHA-1/256: MongoDB의 기본 인증 방식 (ID/PW).
  • x.509: 인증서를 사용한 상호 인증.
  • LDAP / Kerberos: 기업용 중앙 집중식 인증 지원.

2. 권한 부여 (Authorization / RBAC)

사용자가 수행할 수 있는 권한을 제어합니다. (Role-Based Access Control)

주요 내장 역할 (Built-in Roles)

  • read / readWrite: 데이터 읽기/쓰기 권한.
  • dbAdmin / userAdmin: DB 관리 및 사용자 관리 권한.
  • root: 시스템 전체의 최상위 권한.

3. 전송 중 보안 및 저장소 보안

  • TLS/SSL: 클라이언트와 서버 간 전송되는 데이터를 암호화.
  • Encryption at Rest: 디스크에 저장된 데이터 파일을 암호화 (Enterprise 버전 WiredTiger 전용).

4. 실습 명령어

// 관리자 사용자 생성
use admin
db.createUser({
  user: "adminUser",
  pwd: "password123",
  roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})
 
// 특정 DB 권한 사용자 생성
use myDB
db.createUser({
  user: "appUser",
  pwd: "password123",
  roles: [{ role: "readWrite", db: "myDB" }]
})
 
// 현재 사용자 권한 확인
db.runCommand({ connectionStatus: 1 })

5. 시험 팁 (Certification Tips)

  • --auth 옵션이 활성화되지 않으면 외부에서 누구나 접근할 수 있다는 점을 유의하세요.
  • localhost exception: 초기 설정 시 로컬 IP에서는 인증 없이도 첫 사용자를 생성할 수 있는 예외 조항입니다.
  • updateUser 메소드를 사용하여 기존 사용자의 역할을 변경할 수 있습니다.

6. 베스트 프랙티스

  • 최소 권한 원칙(Least Privilege): 사용자가 필요한 권한만 가지도록 역할을 쪼개서 할당하세요.
  • 인증 정보는 절대로 설정 파일이나 로그에 평문으로 남기지 마세요.