Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

db.createRole() (método de mongosh)

db.createRole(role, writeConcern)

Crea un rol en una base de datos. Puedes especificar los privilegios para el rol listando explícitamente los privilegios o haciendo que el rol herede privilegios de otros roles, o ambas cosas. El rol se aplica a la base de datos en la que ejecutes el método.

Importante

Método mongosh

This page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.

Para el comando de base de datos, consulta el comando createRole.

Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.

The db.createRole() method accepts the following arguments:

Parameter
Tipo
Descripción

role

Documento

Un documento que contiene el nombre del rol y la definición del rol.

writeConcern

Documento

El documento role tiene la siguiente forma:

{
role: "<name>",
privileges: [
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>" | "<CIDR range>", ...]
},
...
]
}

El documento role tiene los siguientes campos:

Campo
Tipo
Descripción

role

string

El nombre del nuevo rol.

privileges

arreglo

Los privilegios para otorgar el rol. Un privilegio consiste en un recurso y acciones permitidas. Para la sintaxis de un privilegio, consulta la privileges arreglo.

Es obligatorio incluir el campo privileges. Utilice un arreglo vacío para especificar ningún privilegio.

roles

arreglo

Un arreglo de roles de los cuales este rol hereda privilegios.

Debe incluir el campo roles. Utiliza un arreglo vacío para especificar que no se heredarán roles.

authenticationRestrictions

arreglo

Opcional.

Las restricciones de autenticación que el servidor aplica al rol. Especifica una lista de direcciones IP y rangos CIDR a los que los usuarios con este rol pueden conectarse y/o desde los que pueden conectarse.

En el campo roles, puede especificar tanto roles de funcionalidad incorporada como roles definidos por el usuario.

To specify a role that exists in the same database where db.createRole() runs, you can either specify the role with the name of the role:

"readWrite"

O puede especificar el rol con un documento, como en:

{ role: "<role>", db: "<database>" }

Para especificar un rol que existe en una base de datos diferente, especifique el rol mediante un documento.

El documento authenticationRestrictions solo puede contener los campos siguientes. El servidor genera un error si el documento authenticationRestrictions contiene un campo no reconocido:

Nombre de campo
Valor
Descripción

clientSource

Arreglo de direcciones IP y/o rangos CIDR

Si está presente, al autenticar a un usuario, el servidor verifica que la dirección IP del cliente esté en la lista proporcionada o que pertenezca a un rango CIDR de la lista. Si la dirección IP del cliente no está presente, el servidor no autentica al usuario.

serverAddress

Arreglo de direcciones IP y/o rangos CIDR

Una lista de direcciones IP o rangos CIDR a los que el cliente puede conectarse. Si está presente, el servidor verificará que la conexión del cliente haya sido aceptada mediante una dirección IP de la lista proporcionada. Si la conexión fue aceptada desde una dirección IP no reconocida, el servidor no autentica al usuario.

Importante

Si un usuario hereda múltiples roles con restricciones de autenticación incompatibles, ese usuario se vuelve inutilizable.

Por ejemplo, si un usuario hereda un rol en el que el campo clientSource es ["198.51.100.0"] y otro rol en el que el campo clientSource es ["203.0.113.0"], el servidor no puede autenticar al usuario.

Para obtener más información sobre la autenticación en MongoDB, consulta Autenticación en implementaciones autogestionadas.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

Importante

Este comando no es compatible con los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

If run on a replica set, db.createRole() is executed using "majority" write concern by default.

Excepto por los roles creados en la base de datos admin, un rol solo puede incluir privilegios que se aplican a su base de datos y solo puede heredar de otros roles en su base de datos.

Un rol creado en la base de datos admin puede incluir privilegios que se aplican a la base de datos admin, a otras bases de datos o al recurso clúster, y puede heredar de roles en otras bases de datos, así como de la base de datos admin.

The db.createRole() method returns a duplicate role error if the role already exists in the database.

Cuando se especifica el arreglo privileges, se pueden especificar privilegios para aplicar a varias colecciones en una base de datos, o a una base de datos completa.

La siguiente sintaxis especifica privilegios en múltiples colecciones de la base de datos products.

privileges: [
{
resource: { db: 'products', collection: 'coll1' },
actions: [ 'bypassDocumentValidation' ]
},
{
resource: { db: 'products', collection: 'coll2' },
actions: [ 'bypassDocumentValidation' ]
}
]

La siguiente sintaxis especifica privilegios en todas las colecciones de la base de datos products.

privileges: [
{
resource: { db: 'products', collection: '' },
actions: [ 'bypassDocumentValidation' ]
}
]

Para crear un rol en una base de datos, se debe tener:

Los roles de funcionalidad incorporada userAdmin y userAdminAnyDatabase proporcionan acciones createRole y grantRole sobre sus respectivos recursos.

Para crear un rol con authenticationRestrictions especificado, debes tener la acción setAuthenticationRestriction sobre el recurso de base de datos en el que se crea el rol.

The following db.createRole() method creates the myClusterwideAdmin role on the admin database:

use admin
db.createRole(
{
role: "myClusterwideAdmin",
privileges: [
{ resource: { cluster: true }, actions: [ "addShard" ] },
{ resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
{ resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] },
{ resource: { db: "", collection: "" }, actions: [ "find" ] }
],
roles: [
{ role: "read", db: "admin" }
]
},
{ w: "majority" , wtimeout: 5000 }
)