Azure Cosmos DB kaynaklarını kilitlerle koruma
ŞUNLAR IÇIN GEÇERLIDIR: NoSQL
MongoDB
Cassandra
Gremlin
Masa
Yönetici olarak bir Azure Cosmos DB hesabını, veritabanını veya kapsayıcısını kilitlemeniz gerekebilir. Kilitler, kuruluşunuzdaki diğer kullanıcıların kritik kaynakları yanlışlıkla silmesini veya değiştirmesini önler. Kilit düzeyini CanNotDelete
veya ReadOnly
olarak ayarlayabilirsiniz.
Level | Açıklama |
---|---|
CanNotDelete |
Yetkili kullanıcılar yine de bir kaynağı okuyabilir ve değiştirebilir, ancak kaynağı silemez. |
ReadOnly |
Yetkili kullanıcılar bir kaynağı okuyabilir, ancak kaynağı silemez veya güncelleştiremez. Bu kilidi uygulamak, tüm yetkili kullanıcıları Okuyucu rolü tarafından verilen izinlerle kısıtlamaya benzer. |
Önkoşullar
- Mevcut bir Azure Cosmos DB hesabı.
- Azure aboneliğiniz varsa yeni bir hesap oluşturun.
- Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Alternatif olarak, işlemeden önce Azure Cosmos DB'yi ücretsiz deneyebilirsiniz.
Kilitler nasıl uygulanır?
Bir üst kapsama kilit uyguladığınızda, bu kapsamdaki tüm kaynaklar aynı kilidi devralır. Daha sonra eklediğiniz kaynaklar bile kilidi üst öğeden devralır. Devralmadaki en kısıtlayıcı kilit önceliklidir.
Azure rol tabanlı erişim denetiminin aksine, tüm kullanıcılara ve rollere kısıtlama uygulamak için yönetim kilitlerini kullanırsınız.
Resource Manager kilitleri yalnızca yönetim düzleminde gerçekleşen ve https://management.azure.com
adresine gönderilen işlemlere uygulanır. Kilitler kaynakların kendi işlevlerini gerçekleştirmesine bir kısıtlama getirmez. Kaynak değişiklikleri kısıtlanır ama kaynak işlemleri kısıtlanmaz. Örneğin, Azure Cosmos DB kapsayıcısı üzerindeki ReadOnly kilidi kapsayıcıyı silmenizi veya değiştirmenizi engeller. Kapsayıcıda veri oluşturmanızı, güncelleştirmenizi veya silmenizi engellemez. Bu işlemler https://management.azure.com
hedefine gönderilmediğinden veri işlemlerine izin verilir.
Kilitleri yönetme
Azure Cosmos DB hesabı önce özelliği etkinleştirilerek disableKeyBasedMetadataWriteAccess
kilitlenmediği sürece hesap anahtarlarını kullanarak Azure Cosmos DB'ye erişen kullanıcılar tarafından yapılan değişiklikler için kaynak kilitleri çalışmaz. Bu özelliğin herhangi bir SDK, Azure portalı veya üçüncü taraf araçlarını kullanarak kaynaklarda değişiklik yapacak mevcut uygulamaları bozmadığından emin olun. Bu özelliğin etkinleştirilmesi, kaynakları değiştirmek için hesap anahtarları aracılığıyla bağlanan uygulamaları bozar. Bu değişiklikler aktarım hızını değiştirme, dizin ilkelerini güncelleştirme vb. içerebilir.
$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"
İlk olarak, hesap anahtarları aracılığıyla bağlanan herhangi bir şeyin değişiklik yapmasını önlemek için hesabı güncelleştirin.
$parameters = @{
Name = $ACCOUNT_NAME
ResourceGroupName = $RESOURCE_GROUP_NAME
DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters
Azure Cosmos DB hesap kaynağında ve tüm alt kaynaklarda Silme Kilidi oluşturun.
$parameters = @{
ResourceGroupName = $RESOURCE_GROUP_NAME
ResourceName = $ACCOUNT_NAME
LockName = $LOCK_NAME
ApiVersion = "2020-04-01"
ResourceType = "Microsoft.DocumentDB/databaseAccounts"
LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters
Template
Azure Cosmos DB kaynağına kilit uygularken Azure Resource Manager (ARM) kaynağını kullanın Microsoft.Authorization/locks
.
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2017-04-01",
"name": "cosmoslock",
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
],
"properties": {
"level": "CanNotDelete",
"notes": "Do not delete Azure Cosmos DB account."
},
"scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
}
Örnekler
Azure Cosmos DB için kaynak kilitlerini yönetme:
- Cassandra anahtar alanı ve tablosu için API Azure CLI | Azure PowerShell
- Gremlin veritabanı ve grafı için API Azure CLI | Azure PowerShell
- MongoDB veritabanı ve koleksiyonu için API Azure CLI| Azure PowerShell
- NoSQL veritabanı ve kapsayıcısı için API Azure CLI | Azure PowerShell
- Tablo tablosu için API Azure CLI | Azure PowerShell