Tous les produits
Search
Centre de documentation

ApsaraDB for MongoDB:Autorisations du compte root spécifié lors de la création d'une instance

Dernière mise à jour :Aug 08, 2026

Lorsque vous créez une instance ApsaraDB for MongoDB, le système génère automatiquement un compte root dans la base de données admin. Les autorisations accordées à ce compte root dépendent de la version de MongoDB exécutée par votre instance.

Version de l'instance Rôle attribué au compte root
MongoDB 4.2 et versions antérieures Rôle intégré root
MongoDB 4.4 ou version ultérieure Rôle alibabaCloudAdmin (rôle personnalisé Alibaba Cloud)

Pour vérifier les actions autorisées pour le compte root, exécutez la commande suivante :

db.getSiblingDB("admin").runCommand({usersInfo: "root"});
Remarque

Pour plus d'informations sur la commande usersInfo, consultez la documentation usersInfo.

Pour inspecter les autorisations d'un rôle spécifique, utilisez la commande rolesInfo. Pour le rôle intégré root, reportez-vous à la section root.

Important

Par mesure de sécurité des données, évitez d'utiliser le compte root pour les opérations quotidiennes sur la base de données. Créez plutôt un compte dédié disposant uniquement des autorisations requises par votre charge de travail. Consultez la rubrique Créer un compte pour une instance ApsaraDB for MongoDB.

Autorisations du rôle alibabaCloudAdmin

Le rôle alibabaCloudAdmin est un rôle personnalisé conçu pour ApsaraDB for MongoDB. Il diffère du rôle standard root ; comprendre ces distinctions vous aide à éviter les erreurs d'autorisation inattendues.

Rôles intégrés inclus

Le rôle alibabaCloudAdmin combine les rôles intégrés MongoDB suivants :

Rôle intégré Fonctionnalités
readWriteAnyDatabase Lecture et écriture des collections dans n'importe quelle base de données
userAdminAnyDatabase Gestion des comptes dans n'importe quelle base de données
dbAdminAnyDatabase Interrogation des statistiques et gestion des index dans n'importe quelle base de données
clusterMonitor Accès en lecture seule aux outils de surveillance
backup Exécution des opérations de sauvegarde
enableSharding Activation du sharding sur une base de données
restore Restauration des données à partir des sauvegardes

Restriction relative à la base de données admin

Le rôle alibabaCloudAdmin dispose d'un accès en lecture seule à la base de données admin. Il ne peut pas écrire dans cette base de données, ni créer de comptes disposant d'autorisations d'écriture sur celle-ci.

Important

Dans certains scénarios, l'écriture de données dans la base de données admin peut provoquer de graves variations de performance (jitter). Par conséquent, vous ne pouvez pas créer d'utilisateurs ou de rôles avec les autorisations readWrite, dbAdmin ou dbOwner appliquées à la base de données admin.

Différences par rapport au comportement standard de MongoDB

Les autorisations xxxAnyDatabase d'ApsaraDB for MongoDB (telles que readWriteAnyDatabase) ne couvrent pas les bases de données config, local et admin. Dans MongoDB standard, ces rôles incluent toutes les bases de données. Tenez-en compte lors de l'attribution d'autorisations pour les opérations qui touchent ces bases de données système.

Commandes d'O&M pour les clusters shardés

Pour les instances en cluster shardé, le compte root doté du rôle alibabaCloudAdmin peut exécuter directement les commandes d'O&M suivantes :

flushRouterConfig, cleanupOrphaned, runCommandOnShard, splitVector, clearJumboFlag, moveChunk, splitChunk

FAQ

Pourquoi ne puis-je pas créer un utilisateur ou un rôle avec les privilèges clusterAdmin, clusterManager ou hostManager ?

Le rôle alibabaCloudAdmin n'inclut pas ces privilèges au niveau du cluster. Vous ne pouvez donc pas les accorder à des utilisateurs ou des rôles personnalisés, car les autorisations d'un compte personnalisé ne peuvent pas dépasser la portée des autorisations du compte root.

Pourquoi ne puis-je pas créer un utilisateur ou un rôle avec les autorisations readWrite, dbAdmin ou dbOwner sur la base de données admin ?

Le rôle alibabaCloudAdmin dispose uniquement d'autorisations de lecture sur la base de données admin. Il ne peut donc pas y créer de comptes avec un accès en écriture. Créez plutôt les utilisateurs ou les rôles disposant de ces autorisations sur une base de données autre que admin.

Comment créer un compte avec un accès en lecture/écriture à toutes les collections personnalisées ?

Créez le compte dans la base de données admin et attribuez-lui le rôle readWriteAnyDatabase :

db.getSiblingDB("admin").createUser({
  user: "myName",
  pwd: "myPassword",
  roles: ["readWriteAnyDatabase"]
})

Je dois exécuter des commandes d'O&M pour un cluster shardé, mais je ne peux pas créer de rôle clusterManager. Que faire ?

Le compte root prend déjà en charge les commandes d'O&M répertoriées dans la section Commandes d'O&M pour les clusters shardés. Utilisez-le directement pour ces opérations.

Pour exécuter une commande spécifique avec un compte personnalisé, créez un rôle personnalisé qui n'accorde que les actions nécessaires. L'exemple suivant crée un utilisateur capable d'exécuter splitVector (pris en charge uniquement sur les instances en cluster shardé) :

db.runCommand({
  createRole: 'myRole',
  privileges: [{
    resource: { db: "", collection: "" },
    actions: ['splitVector']
  }],
  roles: ['readAnyDatabase']
})

db.getSiblingDB("admin").createUser({
  user: "myUser",
  pwd: "myPassword",
  roles: ["myRole"]
})

Pourquoi mon nouveau compte rencontre-t-il une erreur d'autorisation lors de l'utilisation des change streams dans la base de données admin ?

Les rôles xxxAnyDatabase d'ApsaraDB for MongoDB ne couvrent pas la base de données admin (contrairement à MongoDB standard). Accordez au compte le rôle readAnyDatabase sur les autres bases de données, puis accordez explicitement l'autorisation read sur la base de données admin :

db.adminCommand({
  grantRolesToUser: "myUser",
  roles: [{ role: "read", db: "admin" }]
})

Pourquoi un rôle créé avec l'exemple **flink-sql-connector-mongodb-cdc** n'affiche-t-il aucune autorisation ?

L'action listDatabases doit être attribuée à une ressource de cluster, et non à une ressource de base de données ou de collection. Utilisez la commande suivante pour créer correctement le rôle :

db.createRole({
  role: "flinkrole",
  privileges: [
    {
      resource: { db: "", collection: "" },
      actions: [
        "splitVector",
        "listCollections",
        "collStats",
        "find",
        "changeStream"
      ]
    },
    {
      resource: { cluster: true },
      actions: ["listDatabases"]
    }
  ],
  roles: [
    { role: "read", db: "config" }
  ]
});

Si des erreurs persistent après la création du rôle et de l'utilisateur, soumettez un ticket pour contacter le support technique Alibaba Cloud.