사용자 생성 및 역할 추가 방법 MongoDB
⚡ 스마트 요약
사용자 생성 및 역할 추가 MongoDB 이 기능은 db.createUser() 메서드를 사용하여 자격 증명을 정의하고, 내장 역할을 할당하고, 특정 데이터베이스에 대한 권한 범위를 지정함으로써 관리자 계정과 단일 데이터베이스 계정 전반에 걸쳐 액세스 제어를 강화합니다.
내장 역할이란 무엇인가요? MongoDB?
계정을 만들기 전에 기본 제공되는 역할들을 이해하는 것이 도움이 됩니다. MongoDB 역할은 권한의 명명된 모음이며, 각 권한은 리소스(데이터베이스 또는 컬렉션)와 해당 리소스에서 허용되는 작업을 연결합니다. 따라서 사용자 생성 시 역할을 할당하면 해당 계정이 수행할 수 있는 작업을 정확하게 결정할 수 있습니다.
MongoDB 이 시스템은 내장 역할을 데이터베이스 사용자 역할, 데이터베이스 관리자 역할, 클러스터 관리자 역할, 백업 및 복원 역할, 그리고 슈퍼유저 역할로 분류합니다. 아래 표는 사용자 관리 시 가장 자주 사용되는 역할을 요약한 것입니다.
| 직위별 | 카테고리 | 부여된 권한 |
|---|---|---|
| 읽기 | 데이터베이스 사용자 | 데이터베이스 내 시스템 컬렉션을 제외한 모든 컬렉션에 대한 읽기 전용 액세스 권한. |
| 읽기/쓰기 | 데이터베이스 사용자 | 컬렉션에 대한 읽기 권한과 삽입, 업데이트 및 삭제 권한이 부여됩니다. |
| dbAdmin | 데이터베이스 관리자 | 데이터베이스의 스키마, 인덱싱 및 통계 관리. |
| 사용자 관리자 | 데이터베이스 관리자 | 단일 데이터베이스에서 사용자 및 역할을 생성하고 수정할 수 있습니다. |
| userAdminAnyDatabase | 수퍼 유저 | 인스턴스 내 모든 데이터베이스에 대한 사용자 관리. |
| 뿌리 | 수퍼 유저 | 모든 리소스 및 작업에 대한 완전한 접근 권한. |
MongoDB 관리자 사용자 생성
사용자 관리자 생성 MongoDB createUser 메서드를 사용하여 수행됩니다. 다음 예는 이것이 어떻게 수행될 수 있는지 보여줍니다.
db.createUser(
{ user: "Guru99",
pwd: "password",
roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Code 설명 :
- 첫 번째 단계는 생성해야 하는 "사용자 이름"과 "비밀번호"를 지정하는 것입니다.
- 두 번째 단계는 사용자에게 역할을 할당하는 것입니다. 데이터베이스 관리자 역할이 필요하므로 "userAdminAnyDatabase" 역할을 할당했습니다. 이 역할을 통해 사용자는 모든 데이터베이스에 대한 관리자 권한을 갖게 됩니다. MongoDB.
- db 매개변수는 관리자 데이터베이스를 지정하는데, 이는 그 안에 있는 특별한 메타 데이터베이스입니다. MongoDB 이 사용자의 정보를 담고 있는 곳입니다.
명령이 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.
출력:
출력 결과는 "라는 사용자가 있음을 보여줍니다.Guru"99"라는 사용자가 생성되었으며, 해당 사용자는 모든 데이터베이스에 대한 권한을 갖습니다. MongoDB.
MongoDB 단일 데이터베이스에 대한 사용자 생성
단일 데이터베이스를 관리할 사용자를 생성하려면 위에서 언급한 것과 동일한 명령어를 사용하되, "userAdmin" 옵션만 사용해야 합니다.
다음 예시는 이를 수행하는 방법을 보여줍니다.
db.createUser(
{
user: "Employeeadmin",
pwd: "password",
roles:[{role: "userAdmin" , db:"Employee"}]})
Code 설명 :
- 첫 번째 단계는 생성해야 하는 "사용자 이름"과 "비밀번호"를 지정하는 것입니다.
- 두 번째 단계는 사용자에게 역할을 할당하는 것입니다. 이 경우 데이터베이스 관리자가 필요하므로 "userAdmin" 역할을 할당합니다. 이 역할을 통해 사용자는 db 옵션에 지정된 데이터베이스에 대해서만 관리자 권한을 갖게 됩니다.
- db 매개변수는 사용자가 관리 권한을 가져야 하는 데이터베이스를 지정합니다.
명령이 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.
출력:
출력에는 "Employeeadmin"이라는 사용자가 생성되었으며 해당 사용자는 "Employee" 데이터베이스에 대해서만 권한이 있음이 표시됩니다.
사용자 관리
먼저, 정의해야 할 역할을 이해하세요. 사용 가능한 역할 목록은 다음과 같습니다. MongoDB예를 들어, 데이터베이스에 대한 읽기 전용 액세스만 허용하는 "읽기" 역할이 있고, 데이터베이스에 대한 읽기 및 쓰기 액세스를 모두 제공하는 "읽기/쓰기" 역할이 있습니다. 즉, 사용자는 해당 데이터베이스의 컬렉션에 대해 삽입, 삭제 및 업데이트 명령을 실행할 수 있습니다.
db.createUser(
{
user: "Mohan",
pwd: "password",
roles:[
{ role: "read" , db:"Marketing" },
{ role: "readWrite" , db:"Sales" }
]
})
위 코드 조각은 Mohan이라는 사용자가 생성되고 여러 데이터베이스에서 여러 역할이 할당되는 것을 보여줍니다. 위 예시에서 Mohan은 "마케팅" 데이터베이스에 대해서는 읽기 전용 권한을, "영업" 데이터베이스에 대해서는 읽기/쓰기 권한을 부여받았습니다.
보기 및 관리 방법 MongoDB 사용자
계정이 생성된 후, MongoDB 드롭 없이 검사, 업데이트 및 제거하는 일련의 명령을 제공합니다.ping 각 사용자를 다시 생성합니다. 이러한 명령은 사용자가 생성된 데이터베이스를 대상으로 실행되므로, 명령을 실행하기 전에 use 문을 사용하여 올바른 데이터베이스로 전환해야 합니다.
가장 일반적인 사용자 관리 명령어는 다음과 같습니다.
- db.getUsers() — 현재 데이터베이스에 정의된 모든 사용자와 각 사용자가 보유한 역할을 나열합니다.
- db.getUser(“사용자 이름”) — 단일 계정의 세부 정보를 반환하며, 이는 권한 감사에 유용합니다.
- db.grantRolesToUser() — 기존 사용자의 현재 역할에는 영향을 주지 않고 하나 이상의 역할을 추가합니다.
- db.revokeRolesFromUser() — 특정 역할을 제거하고, 책임이 변경될 때 접근 권한을 강화합니다.
- db.changeUserPassword() — 계정 비밀번호를 재설정합니다.ping 그 역할은 그대로 유지되었다.
- db.dropUser() — 데이터베이스에서 사용자를 영구적으로 삭제합니다.
아래 예시는 추가 역할을 부여하고, 다른 역할을 취소하고, 비밀번호를 재설정하고, 마지막으로 계정을 삭제합니다.
// List all users in the current database db.getUsers() // Grant an additional role to an existing user db.grantRolesToUser("Employeeadmin", [{ role: "readWrite", db: "Employee" }]) // Remove a role from a user db.revokeRolesFromUser("Employeeadmin", [{ role: "userAdmin", db: "Employee" }]) // Change a user's password db.changeUserPassword("Employeeadmin", "newPassword") // Delete a user db.dropUser("Employeeadmin")
이러한 작업을 수행한 후 db.getUsers()를 다시 실행하면 변경 사항이 적용되었고 의도한 계정과 역할만 남아 있음을 확인할 수 있습니다.
최고의 실습 MongoDB 사용자 관리
잘 계획된 사용자 계정은 다음을 유지합니다. MongoDB 배포가 안전하고 감사가 용이합니다. 다음 사항들을 준수하면 데이터 유출 및 권한 오용의 위험을 줄일 수 있습니다.
- 최소 권한 원칙을 적용하십시오: 계정에 실제로 필요한 역할만 부여하고, 광범위한 관리자 역할보다는 단일 데이터베이스에 대한 읽기/쓰기 권한을 우선적으로 부여하십시오.
- 프로덕션 환경에서 루트 권한을 사용하지 마십시오. 루트 및 userAdminAnyDatabase 역할은 일상적인 운영보다는 설정 및 비상 상황에 사용하도록 예약하십시오.
- 인증을 활성화하세요: 자격 증명이 실제로 적용되도록 하려면 서버를 –auth 옵션과 함께 시작하십시오.
- 강력한 암호 사용: 길이와 복잡성을 조합하고, db.changeUserPassword()를 사용하여 정해진 일정에 따라 암호를 변경하세요.
- 정기적으로 감사: Revdb.getUsers()의 출력 결과를 주기적으로 확인하고 더 이상 필요하지 않은 계정을 삭제합니다.
이러한 습관들을 통해 모든 계정이 실제 필요에 부합하고 접근성이 보장될 수 있습니다. trac보안 검토가 진행될 때마다 ed됩니다.






