[MongoDB] 사용자 정의 Roles (user defined roles, collection-level access control)
DataBase 2014. 12. 24. 18:13MongoDB에는 기본적으로 탑재된 built-in-roles외에 필요에 따라 사용자가 직접 role을 만들 수도 있음.
아래와 같은 장점.
- 원하는 privilege action들만을 조합하여 꼭 필요한 role을 새로 만들 수 있음.
- collection 단위로 권한 부여 가능! (built-in-roles는 DB 단위로 권한 부여 가능)
아래는 사용자 정의 role을 이용하여 collection별로 read, readWrite 권한을 부여하는 예제.
// 사용자 정의 role 생성
// ____________________________________________________________________________
use admin
db.createRole({
// 사용자 정의 role 이름
role: "userRole1",
// 권한 리스트
privileges: [
// product.inventory collection은 읽기/쓰기 가능 (삭제는 못함)
{
resource: {db: "product", collection: "inventory"},
actions: ["find", "update", "insert"]
},
// product.orders collection은 read만 가능
{
resource: {db: "product", collection: "orders"},
actions: ["find"]
}
],
// built-in-roles에서 상속받고자 하는 role을 기입. 필수값이므로 없으면 빈 array라도 있어야 함.
roles: []
})
// 생성된 권한을 특정 사용자에게 부여
// ____________________________________________________________________________
db.createUser({user: "user1", pwd: "1111", roles: ["userRole1"]})
// 권한이 부여된 사용자를 이용하여 테스트
// ____________________________________________________________________________
use product
// 성공
db.inventory.insert({no: 1, name: "product1"})
// 실패
db.orders.insert({no: 1, products: [1,2,3]})
// 성공
db.inventory.find()
// 성공
db.orders.find()
[참조]
http://docs.mongodb.org/manual/tutorial/define-roles/
http://docs.mongodb.org/manual/reference/privilege-actions/
http://docs.mongodb.org/manual/core/collection-level-access-control/
'DataBase' 카테고리의 다른 글
[MongoDB] 샤딩+레플리카셋 구성 (Sharding with ReplicaSet) (0) | 2014.12.29 |
---|---|
[MongoDB] Sharding과 ReplicaSet의 User는 별개임. (0) | 2014.12.29 |
[MongoDB] Roles, Privileges (0) | 2014.12.24 |
[MongoDB] 사용자 관리 (User Administration) (0) | 2014.12.24 |
[MongoDB] shell에서 timestamp를 Date 형태로 출력 (print timestamp to date) (0) | 2014.12.11 |