docker에서 MongodB 인증 권한 열기

docker에서 MongodB 인증 권한 열기
사고의 방향
MongoDB 서비스를 시작하면 기본적으로 인증할 권한이 없습니다.IP + 포트를 통해 데이터베이스를 원격으로 액세스하고 모든 작업을 수행할 수 있습니다.다음은 docker에서 MongoDB의 권한 인증을 시작하는 방법을 소개합니다.
MongoDB 서비스를 설치한 후 기본적으로admin 데이터베이스가 하나 있는데 이때admin 데이터베이스는 비어 있고 권한과 관련된 정보를 기록하지 않습니다.관리자system.사용자가 한 명도 없을 때 MongoDB가 시작될 때 --auth 파라미터를 추가하더라도admin 데이터베이스에 사용자를 추가하지 않았을 때 어떠한 인증도 하지 않고 (--auth 파라미터로 시작하든지 상관없이) 모든 조작을 할 수 있습니다.system.사용자에 사용자를 추가합니다.따라서 MongodB의 권한 인증을 열려면 다음과 같은 두 가지 조건이 필요합니다.
  • admin.system.사용자
  • 추가
  • MongoDB는 --auth으로
  • 시작
    실천하다
  • 상응하는 docker 용기에 들어가기:
    docker exec -it   ID /bin/bash
    
  • 은MongoDB의 인터랙티브 명령줄에 들어가admin 데이터베이스로 전환합니다
    mongo
    
    use admin
    
    MongoDB는 자체적으로 데이터베이스인admin을 가지고 있으며 이 데이터베이스에서 관리자 계정을 만들 수 있습니다.모든 생성된 사용자는 시스템에 저장됩니다.users 집합 중입니다.
    db.getCollectionNames()
    // [ "system.users", "system.version" ]
    
  • 관리자, 루트 권한 부여
    db.createUser({user:"admin",pwd:"xiiasdfiik34",roles:[{role: 'root', db: 'admin'}]})
    /*
    Successfully added user: {
            "user" : "admin",
            "roles" : [
                    {
                            "role" : "root",
                            "db" : "admin"
                    }
            ]
    }
    */
    
  • 인증 현재 사용자 관리자
    db.auth('admin', 'xiiasdfiik34')  //   1       
    
  • 일반 사용자 만들기 대상 데이터베이스로 전환:
    use test_db
    
    사용자 역할 만들기, 읽기 및 쓰기 권한 부여
    db.createUser({
        user: 'test_user',
        pwd: 'vfeqwerfd4334',
        roles: [{role: 'readWrite', db: 'test_db'}]
    })
    /*
    Successfully added user: {
            "user" : "test_user",
            "roles" : [
                    {
                            "role" : "readWrite",
                            "db" : "test_db"
                    }
            ]
    }
    */
    
    인증 시험:
    db.auth('test_user', 'vfeqwerfd4334')
    
    주의: 사용자는 이 사용자를 만들 때 있는 데이터베이스에서만 인증할 수 있습니다.인증이 성공하면 이 데이터베이스에 대해 권한 범위 내의 조작을 수행할 수 있다.
  • MongoDB의 docker-compose 수정yml, 인증 부팅 지정
    yikaoyan-mongodb:
        image: mongo:latest
        volumes:
          - ./data/db:/data/db
        ports:
            - 27017:27017
        command: [--auth]  #       
    
  • MongoDB docker 컨테이너를 재부팅하면 인증이 적용됩니다.
  • 데이터베이스에 연결할 때 사용자와 비밀번호
    mongodb_uri = 'mongodb://test_user:vfeqwerfd4334@localhost/test_db?authSource=test_db&authMechanism=SCRAM-SHA-1'
    
    MongoDB 연결 URL을 지정하면 다음을 참조할 수 있습니다.https://api.mongodb.com/python/current/examples/authentication.html
  • 추가 명령:
    사용자 삭제: db.dropUser('username')
  • 좋은 웹페이지 즐겨찾기