Konfigurowanie niestandardowych uprawnień dostępu do danych (wersja zapoznawcza)

Domyślnie każdy użytkownik lub każda nazwa główna usługi dodane do pamięci podręcznej Azure Managed Redis uzyskują pełny dostęp do wszystkich poleceń i kluczy. Począwszy od wersji interfejsu API 2026-05-01-preview, można przypisywać niestandardowe uprawnienia ACL Redis poszczególnym użytkownikom przez podanie ciągu dostępu w przypisaniu zasady dostępu.

Niestandardowe ciągi dostępu (wersja zapoznawcza) pozwalają określić, które polecenia użytkownik może wykonywać i do których kluczy może uzyskać dostęp. Ta kontrolka umożliwia szczegółową kontrolę dostępu do danych poszczególnych użytkowników dla pamięci podręcznej.

Prerequisites

Ograniczenia

  • Niestandardowe ciągi dostępu wymagają wersji 2026-05-01-preview interfejsu API lub nowszej. Wcześniejsze wersje interfejsu API zawsze przypisują pełny dostęp.
  • Każdy użytkownik może mieć jedno przypisanie zasad dostępu na bazę danych.
  • Porównywanie ciągów znaków dostępu uwzględnia wielkość liter, ponieważ we wzorcach kluczy Redis rozróżniana jest wielkość liter.
  • Niektóre polecenia usługi Redis są blokowane w usłudze Azure Managed Redis niezależnie od konfiguracji listy ACL. Aby uzyskać więcej informacji, zobacz Zablokowane polecenia.

Zakres dostępności

Warstwa Availability
Zbalansowany (seria B) Yes
Zoptymalizowane pod kątem pamięci (seria M) Yes
Zoptymalizowane pod kątem obliczeń (seria X) Yes
Zoptymalizowane dla pamięci flash (seria F) Yes

Uprawnienia ACL Redis

Usługa Azure Managed Redis używa składni Redis ACL do definiowania uprawnień dostępu. Ciąg uprawnień dostępu łączy uprawnienia do wykonywania poleceń i wzorce kluczy, określając, co użytkownik może robić.

  • Kategorie poleceń: Użyj +@<category>, aby zezwolić, lub -@<category>, aby nie zezwalać na grupę poleceń (na przykład +@read, +@write, +@all).
  • Poszczególne polecenia: Użyj +<command> lub -<command>, aby zezwolić na określone polecenia lub ich zabronić (na przykład +set, -flushall).
  • Wzorce kluczy: służy ~<pattern> do ograniczania kluczy, do których użytkownik może uzyskiwać dostęp. Użyj ~* dla wszystkich kluczy. Można połączyć wiele wzorców.

Pełną listę kategorii poleceń i szczegółów składni można znaleźć w dokumentacji listy ACL usługi Redis.

Examples

Ciąg dostępu Description
+@all ~* Pełny dostęp do wszystkich poleceń i wszystkich kluczy (ustawienie domyślne)
+@all ~user:* Wszystkie polecenia, ale tylko w przypadku pasujących kluczy user:*
+@read ~cache:* Dostęp tylko do odczytu do pasujących kluczy cache:*
+@read +@write ~app:* ~session:* Dostęp do odczytu i zapisu do kluczy pasujących do app:* lub session:*
+@read +set +get ~data:* Odczytuj polecenia oraz SET i GET dla kluczy pasujących do data:*

Note

We wzorcach kluczy rozróżniana jest wielkość liter. Na przykład ~User:* i ~user:* dopasowują różne zestawy kluczy.

Przypisz niestandardowe uprawnienia dostępu

Azure Portal

  1. W portalu Azure przejdź do wystąpienia usługi Azure Managed Redis.

  2. W menu Zasób wybierz pozycję Uwierzytelnianie.

  3. Na karcie Microsoft Entra Authentication wybierz opcję Użytkownik lub jednostka usługi, a następnie wybierz pozycję + Wybierz członka.

  4. W panelu Wybierz członka wyszukaj i wybierz użytkownika lub nazwę główną usługi.

  5. W obszarze Zasady dostępu wybierz pozycję Niestandardowe zasady dostępu do danych (wersja zapoznawcza) i wprowadź ciąg dostępu (na przykład +@all -@write ~*).

    Zrzut ekranu przedstawiający panel Wybieranie członka z wybraną niestandardową zasadą dostępu do danych i wprowadzonym niestandardowym ciągiem dostępu.

  6. Wybierz Przypisz.

Jeśli ciąg dostępu zawiera nieprawidłową składnię listy ACL usługi Redis, przypisanie zakończy się niepowodzeniem. Lista Użytkownicy usługi Redis zawiera baner wskazujący błąd, a wpis użytkownika zawiera stan aprowizacji Niepowodzenie z linkiem Zobacz szczegóły błędu .

Zrzut ekranu przedstawiający listę Użytkowników usługi Redis z przypisaniem zasad dostępu, które zakończyły się niepowodzeniem z powodu nieprawidłowej składni listy ACL i linku Zobacz szczegóły błędu.

szablon usługi ARM

Zapisz następujący szablon jako AccessPolicyAssignment.json, zastępując wartości parametrów własnymi:

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

Wdróż szablon przy użyciu polecenia az deployment group create Azure CLI:

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:*"

interfejs API REST

Możesz również bezpośrednio użyć interfejsu 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"
    }
  }
}

Jeśli pominięto accessString, użytkownik otrzyma pełny dostęp (+@all ~*).

Aktualizowanie uprawnień użytkownika

Aby zmienić uprawnienia dostępu użytkownika, uruchom to samo polecenie create lub PUT z inną accessString wartością. Rola użytkownika w usłudze Redis jest aktualizowana bez odłączania użytkownika. Poprzednie niestandardowe obiekty ACL i ról są automatycznie usuwane.

Usuwanie dostępu użytkownika

Usuń przypisanie zasad dostępu, aby odwołać dostęp użytkownika:

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

Usunięcie przypisania jednego użytkownika nie ma wpływu na innych użytkowników w tej samej pamięci podręcznej.

Obsługa błędów

Jeśli podasz nieprawidłowy ciąg Redis ACL, proces aprowizacji zakończy się niepowodzeniem z błędem InvalidAccessString, który zawiera komunikat o błędzie Redis. Przykład:

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

Istniejący użytkownicy znajdujący się w pamięci podręcznej nie są dotknięci niepowodzeniem nowego przypisania.