Özel veri erişim izinlerini yapılandırma (önizleme)

Varsayılan olarak, Azure Yönetilen Redis önbelleğinize eklediğiniz her kullanıcı veya hizmet sorumlusu tüm komutlara ve anahtarlara tam erişim elde eder. API sürümünden 2026-05-01-previewbaşlayarak, erişim ilkesi ataması üzerinde bir erişim dizesi belirterek tek tek kullanıcılara özel Redis ACL izinleri atayabilirsiniz.

Özel erişim dizeleri (önizleme), bir kullanıcının hangi komutları yürütebileceğini ve hangi anahtarlara erişebileceğini denetlemenize olanak tanır. Bu denetim, önbelleğiniz için ayrıntılı, kullanıcı başına veri erişimi denetimi sağlar.

Prerequisites

Limitations

  • Özel erişim dizeleri için API sürümü 2026-05-01-preview veya sonraki bir sürüm gerekir. Önceki API sürümleri her zaman tam erişim verir.
  • Her kullanıcının veritabanı başına bir erişim ilkesi ataması olabilir.
  • Redis anahtar desenleri büyük/küçük harfe duyarlı olduğundan erişim dizesi karşılaştırması da büyük/küçük harfe duyarlıdır.
  • Bazı Redis komutları, ACL yapılandırmasından bağımsız olarak Azure Yönetilen Redis'te engellenir. Daha fazla bilgi için bkz . Engellenen komutlar.

Kullanılabilirlik kapsamı

Katman Availability
Dengeli (B serisi) Evet
Bellek için optimize edilmiş (M serisi) Evet
Hesaplama için optimize edilmiş (X serisi) Evet
Flash için İyileştirilmiş (F serisi) Evet

Redis ACL izinleri

Azure Yönetilen Redis, erişim izinlerini tanımlamak için Redis ACL sözdizimi kullanır. Erişim dizesi, kullanıcının neler yapabileceğini denetlemek için komut izinlerini ve anahtar desenlerini birleştirir.

  • Komut kategorileri: Bir komut grubuna izin vermek veya izin vermemek için +@<category> ya da -@<category> kullanın (örneğin, +@read, +@write, +@all).
  • Tek tek komutlar: Belirli komutlara izin vermek veya bunları engellemek için +<command> ya da -<command> kullanın (örneğin, +set, -flushall).
  • Anahtar desenleri: Kullanıcının erişebileceği anahtarları kısıtlamak için kullanın ~<pattern> . Tüm anahtarlar için kullanın ~* . Birden çok deseni birleştirebilirsiniz.

Komut kategorilerinin ve söz dizimi ayrıntılarının tam listesi için Redis ACL belgelerine bakın.

Examples

Erişim dizesi Description
+@all ~* Tüm komutlara ve tüm anahtarlara tam erişim (varsayılan)
+@all ~user:* Tüm komutlar, ancak yalnızca user:* ile eşleşen tuşlarda
+@read ~cache:* cache:* ile eşleşen anahtarlara yalnızca okuma erişimi
+@read +@write ~app:* ~session:* app:* veya session:* ile eşleşen anahtarlar üzerinde okuma ve yazma erişimi
+@read +set +get ~data:* SET ile eşleşen tuşlardaki okuma komutları ile GET ve data:*

Note

Anahtar desenleri büyük/küçük harfe duyarlıdır. Örneğin, ~User:* ve ~user:* farklı anahtar kümeleriyle eşleşir.

Özel erişim izinleri atama

Azure portal

  1. Azure portalında, Azure Managed Redis örneğinize gidin.

  2. Kaynak menüsünde Kimlik Doğrulaması'nı seçin.

  3. Microsoft Entra Authentication sekmesinde User veya hizmet sorumlusu'i ve ardından + Üye seç'yi seçin.

  4. Üye seç panelinde kullanıcı veya hizmet sorumlusunu arayın ve seçin.

  5. Erişim ilkesi'nin altında Özel veri erişim ilkesi (önizleme) öğesini seçin ve erişim dizenizi girin (örneğin, +@all -@write ~*).

    Özel veri erişim ilkesi seçili ve özel erişim dizesi girilmiş Üye seç panelini gösteren ekran görüntüsü.

  6. Atama'yı seçin.

Erişim dizesi geçersiz Redis ACL söz dizimi içeriyorsa atama başarısız olur. Redis Kullanıcıları listesinde hatanın gösterildiği bir başlık ve kullanıcı girdisinde Hata ayrıntılarına bakın bağlantısıyla Başarısız sağlama durumu gösterilir.

Geçersiz ACL söz dizimi nedeniyle başarısız erişim ilkesi ataması olan Redis Kullanıcıları listesini ve Hata ayrıntılarını göster bağlantısını gösteren ekran görüntüsü.

ARM template

Aşağıdaki şablonu olarak AccessPolicyAssignment.jsonkaydedin ve parametre değerlerini kendi değerlerinizle değiştirin:

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

az deployment group create Azure CLI komutunu kullanarak şablonu dağıtın:

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

REST API'yi doğrudan da kullanabilirsiniz:

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

atlarsanız accessString, kullanıcı tam erişim (+@all ~*) alır.

Kullanıcının izinlerini güncelleştirme

Kullanıcının erişim izinlerini değiştirmek için aynı create veya PUT komutunu farklı accessString bir değerle çalıştırın. Kullanıcının Redis'teki rolü, kullanıcının bağlantısı kesilmeden yerinde güncelleştirilir. Önceki özel ACL ve rol nesneleri otomatik olarak temizlenir.

Kullanıcının erişimini kaldırma

Kullanıcının erişimini iptal etmek için erişim ilkesi atamasını silin:

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

Bir kullanıcının atamasını silmek, aynı önbellekteki diğer kullanıcıları etkilemez.

Hata yönetimi

Geçersiz bir Redis ACL dizesi sağlarsanız sağlama, Redis hata iletisini içeren bir InvalidAccessString hatayla başarısız olur. Örneğin:

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

Önbellekteki mevcut kullanıcılar, yeni atama başarısız olduğunda etkilenmez.