Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Define Data Access Permissions

Ejemplos de roles de acceso a datos

Atlas App Services determina si un rol es aplicable evaluando la expresión 'aplicar cuando' que defines para cada rol.

Esta sección contiene ejemplos de expresiones de "aplicar cuando" para escenarios comunes en los que no se utiliza Device Sync. Para obtener orientación sobre escenarios comunes de Device Sync, consulta la Guía de permisos de Device Sync.

Para agregar una expresión a un rol, busque el escenario que mejor se adapte a su caso de uso y luego copie y pegue la plantilla proporcionada en el rol. Es posible que deba modificar los valores de marcador de posición (indicados por <angle brackets>) en la plantilla para que coincida con su colección o adapte la plantilla para que se ajuste a sus necesidades.

Nota

También puede utilizar las expresiones "aplicar cuando" en esta página para servicios externos.

This expression evaluates to true if the active user's unique id value matches the value of the specified field. "Owner ID field" refers to whatever field in your schema represents a relationship with a user object.

{
"<Owner ID Field>": "%%user.id"
}

This expression evaluates to true if the active user's unique id value matches one or more values in the specified array field.

{
"<Array Field>": "%%user.id"
}

Esta expresión se evalúa como true si el usuario activo tiene alguna dirección de correo electrónico incluida en su objeto de usuario interno.

{
"%%user.data.email": { "%exists": true }
}

This expression evaluates to true if the active user's email address matches the specified email address.

{
"%%user.data.email": "<Email Address>"
}

This expression evaluates to true if the active user's email address matches the value of the specified field.

{
"%%root.email": "%%user.data.email"
}

Esta expresión se evalúa como true si la dirección de correo electrónico del usuario activo coincide con uno o más valores de cadena en el campo de matriz especificado.

{
"<Array Field>": "%%user.data.email"
}

Esta expresión se evalúa como true si la función isAuthorizedUser devuelve true cuando se le pasa el valor de identificación del usuario activo.

Nota

Puede llamar a cualquier función Atlas desde una expresión JSON utilizando el %function operador.

{
"%%true": {
"%function": {
"name": "isAuthorizedUser",
"arguments": ["%%user.id"]
}
}
}

aplicación Services utiliza la configuración de permisos de un rol para determinar si el usuario activo puede insertar o borrar un documento, así como también en qué campos del documento puede leer y guardar.

Esta sección contiene plantillas que definen roles para escenarios comunes. Para aplicar un conjunto de permisos a un rol, busque el escenario que mejor se adapte a su caso de uso. Actualice los permisos de campo, los permisos de documento o la tabla de permisos del rol para que coincidan con la captura de pantalla proporcionada o copie y pegue la plantilla proporcionada en la configuración del modo avanzado de la colección. Asegúrese de modificar los valores de marcador de posición (indicados <angle brackets> por) en la plantilla para que se ajusten a sus necesidades.

To allow a role to read any field, set the document-level read field to true and write field to false.

Un rol con permiso para leer todos los campos del documento
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": <boolean>,
"delete": <boolean>,
"read": true,
"write": false
}

To allow a role to read or write any field, set the document-level write field to true. Document-level writes require read permission, so the role will be able to read all fields.

Un rol con permiso para leer y escribir todos los campos del documento.
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": <boolean>,
"delete": <boolean>,
"write": true,
}

Para permitir que un rol lea todos los campos, configure el campo read a nivel de documento como true y el campo write como false. Para especificar un campo en el que el rol pueda escribir, configure el campo write como true en el documento de configuración del campo, que está incrustado en el documento fields.

Un rol con permiso para guardar en campos específicos
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": <boolean>,
"delete": <boolean>,
"read": true,
"write": false,
"fields": {
"<Field Name>": { "write": true },
...
}
}

To allow a role to read or write any field, set the document-level write field to true. Document-level writes require read permission, so the role will be able to read all fields.

Para evitar que el rol inserte nuevos documentos, configure el campo de nivel de documento insert en false.

A role that lacks permission to insert new documents
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": false,
"delete": <boolean>,
"write": true,
}

To allow a role to write to any field except for those you specify, set the document-level read field to true. Set the corresponding field-level write fields to false and read fields to true in the fields document. Lastly, set the additional_fields.write field to true.

Un rol con permiso para guardar en algunos pero no en todos los campos
{
"name": "<Role Name>",
"apply_when": {<JSON Expression>},
"document_filters": {<JSON Expression>},
"insert": <boolean>,
"delete": <boolean>,
"read": true,
"fields": {
"<Field Name>": {
"read": true,
"write": false
},
...
},
"additional_fields": { "write": true }
}

The use cases described in this section require you to use advanced functionality that is not supported by the default collection rules editor in the App Services UI. To use this template, convert to advanced mode or import a collection rule configuration with App Services CLI.

Para permitir que un rol inserte nuevos documentos pero, de no ser así, se evite que lean o modifiquen cualquier dato, ajusta insert en true y ajusta el valor write a nivel de documento en una expresión de regla que evalúe true solo si el documento no existía antes de la operación.

{
"name": "insertOnly",
"apply_when": <JSON Expression>,
"delete": false,
"insert": true,
"write": {
"%%prevRoot": { "%exists": false }
},
"additional_fields": {}
}

Nota

You must specify a JSON expression for write to prevent users from reading data. To insert a document a role must also have write permission for all fields in the document; however, setting write directly to true would also give the role read permission. The JSON expression ensures that the role only has read permission for the initial document insert.

To allow a role to read or write some but not all fields of an embedded document, add embedded documents that match the path of the embedded field to the fields document.

{
"name": "canReadEmbeddedField",
"apply_when": {},
"delete": true,
"insert": true,
"fields": {
"someEmbeddedDocument": {
"fields": {
"someEmbeddedField": {
"read": true,
"write": true
}
}
}
},
"additional_fields": {}
}

Nota

App Services applies any read and write permissions defined for a given field to all embedded fields that the field contains regardless of any permissions defined for those fields.

Volver

Configurar reglas avanzadas