Configuración de permisos de acceso a datos personalizados (versión preliminar)

De forma predeterminada, cada usuario o entidad de servicio que agregue a la caché de Redis administrada de Azure obtiene acceso completo a todos los comandos y claves. A partir de la versión 2026-05-01-previewde API, puede asignar permisos de ACL de Redis personalizados a usuarios individuales especificando una cadena de acceso en la asignación de directiva de acceso.

Las cadenas de acceso personalizadas (versión preliminar) permiten controlar qué comandos puede ejecutar un usuario y a qué claves puede acceder. Este control permite el control de acceso a datos por usuario específico para la memoria caché.

Prerequisites

Limitaciones

  • Las cadenas de acceso personalizadas requieren una versión 2026-05-01-preview de API o posterior. Las versiones anteriores de la API siempre asignan acceso completo.
  • Cada usuario puede tener una asignación de directiva de acceso por base de datos.
  • La comparación de cadenas de acceso distingue entre mayúsculas y minúsculas porque los patrones de claves de Redis distinguen entre mayúsculas y minúsculas.
  • Algunos comandos de Redis están bloqueados en Azure Managed Redis independientemente de la configuración de ACL. Para obtener más información, consulte Comandos bloqueados.

Ámbito de disponibilidad

Nivel Availability
Equilibrado (serie B)
Optimizado para memoria (serie M)
Optimizado para cómputo (serie X)
Optimizado para Flash (serie F)

Permisos de ACL de Redis

Azure Managed Redis usa Sintaxis de ACL deRedis para definir permisos de acceso. Una cadena de acceso combina los permisos de comando y los patrones de clave para controlar lo que un usuario puede hacer.

  • Categorías de comandos: use +@<category> para permitir o -@<category> no permitir un grupo de comandos (por ejemplo, +@read, +@write, +@all).
  • Comandos individuales: use +<command> o -<command> para permitir o no permitir comandos específicos (por ejemplo, +set, -flushall).
  • Patrones clave: use ~<pattern> para restringir las claves a las que puede acceder un usuario. Use ~* para todas las claves. Puede combinar varios patrones.

Para obtener la lista completa de categorías de comandos y detalles de sintaxis, consulte la documentación de ACL de Redis.

Ejemplos

Cadena de acceso Descripción
+@all ~* Acceso total a todos los comandos y todas las claves (valor predeterminado)
+@all ~user:* Todos los comandos, pero solo en las teclas que coinciden con user:*
+@read ~cache:* Acceso de solo lectura a las claves que coinciden con cache:*
+@read +@write ~app:* ~session:* Acceso de lectura y escritura para las claves que coincidan con app:* o session:*
+@read +set +get ~data:* Comandos de lectura más SET y GET en claves que coincidan con data:*

Note

Los patrones de clave distinguen mayúsculas de minúsculas. Por ejemplo, ~User:* y ~user:* coinciden con diferentes conjuntos de claves.

Asignación de permisos de acceso personalizados

Azure portal

  1. En el portal de Azure, vaya a su instancia de Azure Managed Redis.

  2. En el menú Recurso, seleccione Autenticación.

  3. En la pestaña Microsoft Entra Autenticación, seleccione Usuario o entidad de servicio y seleccione + Seleccionar miembro.

  4. En el panel Seleccionar miembro , busque y seleccione el usuario o la entidad de servicio.

  5. En Directiva de acceso, seleccione Directiva de acceso a datos personalizada (versión preliminar) y escriba la cadena de acceso (por ejemplo, +@all -@write ~*).

    Captura de pantalla que muestra el panel Seleccionar miembro con la directiva de acceso a datos personalizado seleccionada y una cadena de acceso personalizada especificada.

  6. Seleccione Asignar.

Si la cadena de acceso contiene sintaxis de ACL de Redis no válida, se produce un error en la asignación. La lista Usuarios de Redis muestra un banner que indica el fallo, y la entrada del usuario muestra un estado de aprovisionamiento Error con un vínculo a Ver detalles del error.

Captura de pantalla que muestra la lista Usuarios de Redis con una asignación de directiva de acceso errónea debido a la sintaxis de ACL no válida y el vínculo Ver detalles del error.

Plantilla ARM

Guarde la plantilla siguiente como AccessPolicyAssignment.json, reemplazando los valores de parámetro por los suyos propios:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "cacheName": {
            "defaultValue": "{CacheName}",
            "type": "String"
        },
        "assignmentName": {
            "defaultValue": "{AssignmentName}",
            "type": "String"
        },
        "objectId": {
            "defaultValue": "{ObjectId}",
            "type": "String"
        },
        "accessString": {
            "defaultValue": "+@all ~*",
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Cache/redisEnterprise/databases/accessPolicyAssignments",
            "apiVersion": "2026-05-01-preview",
            "name": "[concat(parameters('cacheName'), '/default/', parameters('assignmentName'))]",
            "properties": {
                "accessPolicyName": "default",
                "accessString": "[parameters('accessString')]",
                "user": {
                    "objectId": "[parameters('objectId')]"
                }
            }
        }
    ]
}

Implemente la plantilla mediante el comando az deployment group create CLI de Azure:

az deployment group create \
    --resource-group myResourceGroup \
    --template-file AccessPolicyAssignment.json \
    --parameters cacheName=myCache assignmentName=myAssignment \
        objectId=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb \
        accessString="+@read ~cache:*"

REST API

También puede usar la API REST directamente:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Cache/redisEnterprise/{cacheName}/databases/{databaseName}/accessPolicyAssignments/{assignmentName}?api-version=2026-05-01-preview

{
  "properties": {
    "accessPolicyName": "default",
    "accessString": "+@read ~cache:*",
    "user": {
      "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    }
  }
}

Si omite accessString, el usuario recibe acceso total (+@all ~*).

Actualizar los permisos de un usuario

Para cambiar los permisos de acceso de un usuario, ejecute el mismo comando create o PUT con un valor diferente accessString . El rol del usuario en Redis se actualiza en su lugar sin desconectar al usuario. La ACL personalizada anterior y los objetos de rol anteriores se eliminan automáticamente.

Eliminación del acceso de un usuario

Elimine la asignación de directiva de acceso para revocar el acceso de un usuario:

DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Cache/redisEnterprise/{cacheName}/databases/{databaseName}/accessPolicyAssignments/{assignmentName}?api-version=2026-05-01-preview

La eliminación de la asignación de un usuario no afecta a otros usuarios en la misma caché.

Gestión de errores

Si proporciona una cadena ACL de Redis no válida, el aprovisionamiento falla con un error InvalidAccessString que incluye el mensaje de error de Redis. Por ejemplo:

{
  "provisioningState": "Failed",
  "provisioningError": {
    "code": "InvalidAccessString",
    "message": "Failed to provision access string '+@nonexistent ~*': ERR Error in ACL SETUSER modifier '+@nonexistent': Unknown command or category name in ACL",
    "target": "properties.accessString"
  }
}

Los usuarios existentes en la memoria caché no se ven afectados cuando se produce un error en una nueva asignación.