Configurare le autorizzazioni di accesso ai dati personalizzate (anteprima)

Per impostazione predefinita, ogni utente o entità servizio aggiunta alla cache redis gestita Azure ottiene l'accesso completo a tutti i comandi e le chiavi. A partire dalla versione 2026-05-01-previewdell'API , è possibile assegnare autorizzazioni ACL Redis personalizzate a singoli utenti specificando una stringa di accesso nell'assegnazione dei criteri di accesso.

Le stringhe di accesso personalizzate (anteprima) consentono di controllare quali comandi un utente può eseguire e quali chiavi possono accedere. Questo controllo abilita il controllo di accesso ai dati per utente con granularità fine per la cache.

Prerequisiti

Limitations

  • Le stringhe di accesso personalizzate richiedono la versione 2026-05-01-preview dell'API o versioni successive. Le versioni precedenti dell'API assegnano sempre l'accesso completo.
  • Ogni utente può avere un'assegnazione di criteri di accesso per ogni database.
  • Il confronto delle stringhe di accesso fa distinzione tra maiuscole e minuscole perché i pattern di chiave di Redis fanno distinzione tra maiuscole e minuscole.
  • Alcuni comandi redis vengono bloccati in Azure Redis gestito indipendentemente dalla configurazione ACL. Per altre informazioni, vedere Comandi bloccati.

Ambito della disponibilità

Tier Availability
Bilanciato (serie B)
Ottimizzato per la memoria (serie M)
Ottimizzato per il calcolo (serie X)
Flash Optimized (serie F)

Autorizzazioni ACL Redis

Azure Managed Redis usa la sintassi Redis ACL per definire le autorizzazioni di accesso. Una stringa di accesso combina le autorizzazioni dei comandi e i modelli di chiave per controllare le operazioni che un utente può eseguire.

  • Categorie di comandi: usare +@<category> per consentire o -@<category> impedire un gruppo di comandi , ad esempio +@read, +@write, +@all.
  • Singoli comandi: usare +<command> o -<command> per consentire o impedire comandi specifici ,ad esempio +set, -flushall.
  • Modelli chiave: usare ~<pattern> per limitare le chiavi a cui un utente può accedere. Usare ~* per tutte le chiavi. È possibile combinare più modelli.

Per l'elenco completo delle categorie di comandi e dei dettagli della sintassi, vedere la documentazione di ACL di Redis.

Examples

Stringa di accesso Descrizione
+@all ~* Accesso completo a tutti i comandi e a tutte le chiavi (impostazione predefinita)
+@all ~user:* Tutti i comandi, ma solo sui tasti che corrispondono a user:*
+@read ~cache:* Accesso in sola lettura alle chiavi corrispondenti cache:*
+@read +@write ~app:* ~session:* Accesso in lettura e scrittura alle chiavi corrispondenti a app:* o session:*
+@read +set +get ~data:* Leggere i comandi più SET e GET sui tasti corrispondenti data:*

Note

I modelli chiave fanno distinzione tra maiuscole e minuscole. Ad esempio, ~User:* e ~user:* corrispondono a set di chiavi diversi.

Assegnare autorizzazioni di accesso personalizzate

Azure portal

  1. Nel portale di Azure, passare all'istanza di Redis gestite di Azure.

  2. Scegliere Autenticazione dal menu Risorsa.

  3. Nella scheda Microsoft Entra Autenticazione selezionare Utente o entità servizio e quindi selezionare + Seleziona membro.

  4. Nel pannello Seleziona membro, cercate e selezionate l'utente o l'entità servizio.

  5. In Criteri di accesso selezionare Criteri di accesso ai dati personalizzati (anteprima) e immettere la stringa di accesso , ad esempio +@all -@write ~*.

    Screenshot che mostra il pannello Seleziona membro con i criteri di accesso ai dati personalizzati selezionati e una stringa di accesso personalizzata immessa.

  6. Seleziona Assegna.

Se la stringa di accesso contiene una sintassi ACL redis non valida, l'assegnazione ha esito negativo. L'elenco Utenti Redis mostra un banner che indica l'operazione non riuscita e la voce utente mostra uno stato di provisioning Non riuscito con un collegamento Vedi i dettagli dell'errore.

Screenshot che mostra l'elenco Utenti Redis con un'assegnazione di criteri di accesso non riuscita a causa della sintassi ACL non valida e del collegamento Visualizza dettagli errore.

ARM template

Salvare il modello seguente come AccessPolicyAssignment.json, sostituendo i valori dei parametri con i propri:

{
    "$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')]"
                }
            }
        }
    ]
}

Distribuire il modello usando il comando az deployment group create interfaccia della riga di comando di 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

È anche possibile usare direttamente l'API REST:

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"
    }
  }
}

Se si omette accessString, l'utente riceve l'accesso completo (+@all ~*).

Aggiornare le autorizzazioni di un utente

Per modificare le autorizzazioni di accesso di un utente, eseguire lo stesso comando create o PUT con un valore diverso accessString . Il ruolo dell'utente in Redis viene aggiornato senza disconnettere l'utente. Gli oggetti ACL e ruolo personalizzati precedenti vengono puliti automaticamente.

Rimuovere l'accesso di un utente

Eliminare l'assegnazione dei criteri di accesso per revocare l'accesso di un utente:

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

L'eliminazione dell'assegnazione di un utente non influisce sugli altri utenti nella stessa cache.

Gestione degli errori

Se si specifica una stringa di ACL Redis non valida, il provisioning ha esito negativo e viene visualizzato un InvalidAccessString errore che include il messaggio di errore redis. Per esempio:

{
  "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"
  }
}

Gli utenti già presenti nella cache non vengono influenzati se la creazione di una nuova assegnazione non riesce.