web-dev-qa-db-ja.com

Mongoをスーパーユーザーにしたり、ユーザーをリセットしたりするにはどうすればよいですか?

私は許可をいじって、Mongoデータベースからロックアウトされました。データベースへのアクセスを明示的に追加することでこれを行ったと確信していますが、データベースへのアクセス許可のみを上書きしました。そのため、Mongoデータベースから事実上ロックアウトされ、ユーザーの追加特権がある場合、読み取るすべての情報からスーパーユーザーを作成する方法がわかります。今のところ、その特権を持つユーザーはいないと思います。すべてのアクセスとしてデータベースに入る方法はありますか?私はサーバーを所有し、rootアクセス権を持っています。

31
Tony

自分をロックアウトした場合は、次のことを行う必要があります。

  1. MongoDBインスタンスを停止します
  2. MongoDB構成から--authまたは--keyfileオプション、あるいはその両方を削除して、認証を無効にします
  3. 認証なしでインスタンスを起動する
  4. 必要に応じてユーザーを編集します
  5. 認証を有効にしてインスタンスを再起動します
39
daveh

最初にスーパーユーザーを追加せずにユーザーを作成したときも、同様の問題がありました。次の手順は、問題の解決に役立ちました。

  1. SudoSudo vi mongodb.conf)を使用してMongoDB構成ファイルを開きます。
    ファイルは/etc/フォルダにあります。
  2. コメント"auth = true"
  3. MongoDBサービスを停止します(Sudo service mongod stop
  4. MongoDBサービスを開始します(Sudo service mongod start
  5. 次に、以下のコマンドを使用して「root」スーパーユーザーを作成します。

    use admin
    
    db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]});
    

    参考のために https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. 戻って"auth=true"のコメントを外します。 mongodbサービスを停止して開始/再起動します。

16
Divya Krishnan

keyfile付きのレプリカセット を使用する場合

内部認証を使用したレプリカセットのメンバー間のセキュリティ

キーファイルはレプリケーションの認証に使用されます。

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

次のコマンドを使用して、mongodの管理者としてログインできます。

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

あとがきで、管理ユーザーを作成または変更できます。

内部の役割

__system MongoDBは、レプリカセットメンバーやmongosインスタンスなど、クラスターメンバーを表すユーザーオブジェクトにこのロールを割り当てます。このロールは、その所有者にデータベース内のオブジェクトに対して任意のアクションを実行する資格を与えます。

例外的な状況を除いて、アプリケーションまたは人間の管理者を表すユーザーオブジェクトにこのロールを割り当てないでください。

7
Ivanov

この質問への回答を確認してください。

https://stackoverflow.com/questions/20117104/mongodb-root-user

基本的にまだサーバーにアクセスできる場合は、Adminデータベースにアクセスできる場合があります。

このページには他にもあります http://docs.mongodb.org/v2.4/reference/user-privileges/

2.6バージョンは、これが完全に機能する方法を変更することに注意してください。 2.6の場合は、 http://docs.mongodb.org/manual/security/ でより多くの時間を費やす必要があります

2
Meligy

Mongoを停止し、adminファイルを削除してから、Mongoを起動する必要があります

Sudo service mongod stop
mv /data/admin.* .
Sudo service mongod start
0
Tony