Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
- Azure Yönetilen Redis önbelleği. Oluşturmak için bkz. Quickstart: Azure Yönetilen Redis örneği oluşturma.
- API sürümü
2026-05-01-previewile REST API'ye erişim.
Limitations
- Özel erişim dizeleri için API sürümü
2026-05-01-previewveya 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
Azure portalında, Azure Managed Redis örneğinize gidin.
Kaynak menüsünde Kimlik Doğrulaması'nı seçin.
Microsoft Entra Authentication sekmesinde User veya hizmet sorumlusu'i ve ardından + Üye seç'yi seçin.
Üye seç panelinde kullanıcı veya hizmet sorumlusunu arayın ve seçin.
Erişim ilkesi'nin altında Özel veri erişim ilkesi (önizleme) öğesini seçin ve erişim dizenizi girin (örneğin,
+@all -@write ~*).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.
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.