문제

나는 현재 MongoDB를 사용하여 응용 프로그램 로그를 기록하고 있으며, 성능과 임의의 구조화 된 데이터를 로그 레코드에 덤프 할 수있는 것에 매우 만족하지만, 일단 저장된 로그 레코드의 돌연변이에 어려움을 겪고 있습니다.

기존 데이터베이스에서는 애플리케이션 사용자가 삽입 및 선택 권한이 있었지만 업데이트 또는 삭제되지 않도록 로그 테이블의 보조금을 구조화합니다. 마찬가지로 CouchDB에서 기존 문서를 수정하려는 모든 시도를 거부하는 업데이트 유효성 검사기 기능을 작성할 수 있습니다.

그러나 나는 MongoDB 데이터베이스 또는 수집을 3 개의 액세스 레벨 (액세스, 읽기 전용, "God Mode") 이외의 수집을 제한하는 방법을 찾을 수 없었습니다. 보안 주제 Mongodb Wiki에서.

다른 사람이 문서에 대한 불변성 (또는 최소한 변경 추적)이 요구되는 설정에서 MongoDB를 문서 저장소로 배포 했습니까? 제대로 작성되지 않거나 악의적 인 응용 프로그램 코드가 기존 로그 레코드를 수정하거나 파괴 할 수 없도록하기 위해 어떤 요령이나 기술을 사용 했습니까? Writ

도움이 되었습니까?

해결책

가장 좋은 방법은 특정 계약을 시행하는 서비스 계층에서 MongoDB에 대한 액세스를 마무리하는 것입니다. 우리는 세분화 된 액세스 제어를 방해하지 않습니다. 왜냐하면 모든 사례가 너무 많아서 모든 것을 올바르게 해결하는 것은 올바르게 얻기가 까다 롭기 때문입니다. 따라서 대부분의 경우 이러한 종류의 컨트롤을 구현하는 것은 응용 프로그램 계층에 달려 있습니다.

다른 팁

추가하려면 만 씁니다 (수집 수준에서) MongoDB의 사용자는 다음을 수행합니다.

사용자가 있고 싶다고 가정 해 봅시다 쓸 수 있습니다 (끼워 넣다 만) a 특정 컬렉션 특정 데이터베이스에서.

파일을 만듭니다 createuser.js 다음 내용으로 :

function createCollectionWriter(database, username, password, rolename, collection)
{
    db.getSiblingDB(database).createUser({
        user : username,
        pwd  : password,
        roles : [ ]
    });

    db.getSiblingDB(database).createRole({
        role  : rolename,
        privileges : [
        {
            resource : { db : database, "collection" : collection },
            actions  : [ "insert" ]
        }
        ],
        roles : []
    });

    db.getSiblingDB(database).grantRolesToUser(username, [ rolename ] );
}

그리고 이것을 명령 줄에서 실행하십시오

$ mongo --eval="load('createuser.js'); createCollectionWriter('yourdb', 'user1', 'pass1', 'rolename', 'col1')"

사용자 이름으로 사용자를 만듭니다 user1 비밀번호로 패스 1 그리고이 사용자는 가지고 있습니다 만 씁니다 데이터베이스에 대한 액세스 Yourdb 수집 col1.

이것의 부작용은 그 역할입니다 롤레나 이름 생성됩니다. 동일한 컬렉션에 대한 쓰기 만 액세스 해야하는 기존 사용자가있는 경우 역할을 부여하십시오. 롤레나 이름 기존 사용자에게.

위에서 제공 한 코드를 자유롭게 사용하고 수정하십시오 :).

MongoDB 1.3.2+에서는 사용자에 약간의 제한 사항을 추가 할 수 있습니다.

db.addUser("guest", "passwordForGuest", true)

그러나 지금은 더 나은 것이 아닙니다. 기능 요청을 추가 할 수 있습니다

MongoDB 문서의 정보를 참조하십시오. http://www.mongodb.org/display/docs/security+ and +authentication

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top