NoSQL için Azure Cosmos DB güvenlik sözlüğü
UYGULANANLAR: NoSQL
Şu konumlar da dahil olmak üzere dağıtım kılavuzu dizisinin şeması: Genel Bakış, Kavramlar, Hazırlama, Rol tabanlı erişim denetimi, Ağ ve Başvuru. 'Kavramlar' konumu şu anda vurgulanmış durumda.
Bu makale, NoSQL için Azure Cosmos DB'ye yönelik bu güvenlik kılavuzunda kullanılan ortak terminoloji sözlüğü içerir.
Rol tabanlı erişim denetimi
Rol tabanlı erişim denetimi, Azure'daki kaynaklara erişimi yönetmek için bir yöntemi ifade eder. Bu yöntem, belirli kimliklere bir veya daha fazla kaynağa sahip oldukları erişim düzeyini yöneten roller atanmasını temel alır. Rol tabanlı erişim denetimi, kimliklerin yalnızca görevlerini gerçekleştirmek için ihtiyaç duydukları en düşük ayrıcalıklı erişim düzeyine sahip olmasını sağlayan esnek bir ayrıntılı erişim yönetimi sistemi sağlar.
Daha fazla bilgi için bkz . Rol tabanlı erişim denetimine genel bakış.
Kimlik/Sorumlu
Kimlikler, Sisteminize erişim düzeyi gerekebilecek bazı varlıkları temsil eden Microsoft Entra içindeki nesnelere başvurur. Azure ve Microsoft Entra bağlamında kimlikler aşağıdaki varlık türlerinden birine başvurabilir:
Açıklama | |
---|---|
İş yükü kimlikleri | İş yükü kimliği, diğer hizmetlere veya kaynaklara erişmesi gereken bir yazılım iş yükünü temsil eder |
İnsan kimlikleri | İnsan kimliği, kiracınızda yerel olabilecek veya konuk olarak eklenebilen bir kullanıcıyı temsil eder |
Yönetilen kimlikler | Yönetilen kimlikler, Azure'da bir Azure hizmetinin kimliğini temsil eden ayrı kaynaklardır |
Hizmet sorumluları | Hizmet sorumlusu, esnek sayıda kimlik doğrulama senaryosunda kullanılabilen bir hizmet hesabıdır |
Cihaz kimlikleri | Cihaz kimliği, Microsoft Entra'da bir cihazla eşlenen bir nesnedir |
Gruplar | Gruplar, tek bir işlem olarak bir veya daha fazla kimlik erişimini yönetmek için kullanılan nesnelerdir |
Daha fazla bilgi için bkz . Kimlikle ilgili temel bilgiler.
Role
Roller, erişimi ve izinleri zorunlu kılmanın birincil birimleridir. Bir kimliğe rol atarsınız ve rolün tanımı bu kimliğin hangi erişim düzeyine sahip olabileceğini belirler. Atamanın kapsamı, kimliğin tam olarak hangi erişime sahip olduğunu belirler.
Azure,çeşitli kaynaklara erişim vermek için kullanabileceğiniz büyük bir yerleşik roller kümesine sahiptir. Bu örneği ele alalım:
Değer | |
---|---|
Rol | CosmosBackupOperator |
Tanım | Microsoft.DocumentDB/databaseAccounts/backup/action & Microsoft.DocumentDB/databaseAccounts/restore/action |
Scope | Kaynak grubu |
Bu örnekte size belirli bir kaynak grubu için rol atanır CosmosBackupOperator
. Bu atama, söz konusu kaynak grubundaki herhangi bir Azure Cosmos DB hesabında veya restore
eylemlerini gerçekleştirmenize backup
erişim sağlar.
Önemli
Azure Cosmos DB gibi bazı Azure hizmetlerinin farklı Azure Resource Manager özelliklerini, Azure CLI komutlarını ve Azure PowerShell cmdLet'lerini kullanan kendi yerel rol tabanlı erişim denetimi uygulaması vardır. Rol tabanlı erişim denetimini yönetmek için genellikle kullandığınız komutlar Azure Cosmos DB veri düzlemi erişimiyle çalışmaz. Azure rol tabanlı erişim denetimi komutlarından bazıları Azure Cosmos DB denetim düzlemi erişimiyle çalışabilir.
Daha fazla bilgi için bkz. Yerleşik Azure rolleri
Rol tanımı
Rol tanımı, izin verilen ve izin verilmeyen denetim düzlemi ve veri düzlemi eylemlerinin listesini içeren bir JSON nesnesidir. Yerleşik rolden CosmosRestoreOperator
kesilen bu örneği göz önünde bulundurun:
{
"roleName": "CosmosRestoreOperator",
"type": "Microsoft.Authorization/roleDefinitions",
...
"permissions": [
{
"actions": [
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action",
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read",
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
],
...
}
Bu tanımda, bu role atanmış bir kimlik bir restore
eylem gerçekleştirebilir. Geri yükleme işlemi tamamlandıktan sonra kimlik, geri yüklemenin başarılı olduğunu doğrulamak için çeşitli kaynakları okuyabilir. için (joker karakter) işleci read
nedeniyle *
bu kaynakları okuyabileceğini belirleyebiliriz.
Daha fazla bilgi için bkz . rol tanımı kavramları.
Rol ataması
Rol ataması belirli bir Azure kaynağına kimlik erişimi verir. Rol atamaları aşağıdaki bileşenlerden oluşur:
Açıklama | |
---|---|
Müdür | Bu role hangi kimliğe atanır? |
Rol | Kimliğe atanan rol |
Scope | Atamanın hedef Azure kaynağı veya grubu |
Ad/Açıklama | Atamaları büyük ölçekte yönetmeyi kolaylaştıran meta veriler |
İpucu
Rol tabanlı erişim denetiminde, karşılıklı olarak kullanılan kimlik ve sorumlu terimlerini görebilirsiniz.
Daha fazla bilgi için bkz . rol atama kavramları.
Eylemler
Eylemler, bir rolün hedef kaynak için sahip olduğu belirli izinleri tanımlar. Eylemler, genellikle kaynak türünü ve eylemin hangi izinlere sahip olduğunu ayrıntılı olarak belirten açıklayıcı bir ad içeren dizelerdir. Burada birkaç genel örnek verilmiştir:
Açıklama | Uçak | |
---|---|---|
Microsoft.DocumentDB/databaseAccounts/listKeys/action |
Yalnızca hesap anahtarlarını okuma | Kontrol düzlemi |
Microsoft.DocumentDB/databaseAccounts/backup/action |
yedekleme gerçekleştirme | Kontrol düzlemi |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace |
Var olan bir öğeyi tamamen değiştirme | Veri düzlemi |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery |
NoSQL sorgusu yürütme | Veri düzlemi |
Eylemlerde (joker karakter) karakterler de bulunabilir *
, bu nedenle her alt yetkiyi el ile ayrıntılandırmazsınız. Joker karakterler içeren eylemlere birkaç örnek aşağıda verilmiştir:
Açıklama | |
---|---|
Microsoft.DocumentDb/databaseAccounts/* |
Azure Cosmos DB hesaplarını oluşturma ve yönetme |
Microsoft.DocumentDB/*/read |
Herhangi bir kapsayıcıyı veya veritabanını okuma |
Eylemler denetim düzlemi ve veri düzlemi olarak ayrılır. Denetim düzlemi kaynaklarında ve verileri etkileyebilecek eylemlerde ayrı ayrı eylemler tanımlamanız gerekir. Rol tanımında denetim düzlemi eylemleri özelliğini kullanır actions
ve veri düzlemi eylemleri özelliğin dataActions
içindedir. Ayrıca, ilgili notActions
ve notDataActions
özellikleri kullanarak bir kimliğin gerçekleştiremeyecekleri eylemleri de tanımlayabilirsiniz.
Not
Eylemlerin denetim ve veri düzlemine ayrılması, eski rol tanımlarından gelen joker karakter eylemlerinin verilere sınırsız ve kasıtsız erişime sahip olmasını önlemeye yönelik bir güvenlik önlemidir.
Daha fazla bilgi için bkz . denetim ve veri eylemleri.
En az ayrıcalık
"En az ayrıcalık" kavramı, tüm kullanıcıların yalnızca görevlerini veya işlerini gerçekleştirmek için ihtiyaç duydukları minimum erişim düzeyine sahip olmasını sağlamak için operasyonel en iyi uygulamayı ifade eder. Örneğin, veritabanından veri okuyan bir uygulama yalnızca veri deposuna okuma erişimine ihtiyaç duyar. Bu uygulamanın veri deposuna okuma ve yazma erişimi varsa, bunlarla sınırlı olmamak üzere birkaç şey gerçekleşebilir:
- Uygulama verileri hatalı bir şekilde yok edebilir
- Yetkisiz bir kullanıcı uygulamanın kimlik bilgilerine erişebilir ve verileri değiştirebilir
En az ayrıcalık uygulamasının uygulanması olası veri ihlallerinin kapsam dahilinde sınırlı olmasını sağlar. Bu uygulama, operasyonel güvenliği en üst düzeye çıkarırken kullanıcıların etkin kalmasını sağlar.
Daha fazla bilgi için bkz . göreve göre önerilen en az ayrıcalıklı roller.
Kontrol düzlemi
Denetim düzlemi erişimi, verileri yönetmeden Azure hizmetinin kaynaklarını yönetme özelliğini ifade eder. Örneğin, Azure Cosmos DB denetim düzlemi erişimi şunları içerebilir:
- Tüm hesap ve kaynak meta verilerini okuma
- Hesap anahtarlarını ve bağlantı dizesi okuma ve yeniden oluşturma
- Hesap yedeklemeleri ve geri yükleme gerçekleştirme
- Veri aktarımı işlerini başlatma ve izleme
- Veritabanlarını ve kapsayıcıları yönetme
- Hesap özelliklerini değiştirme
Önemli
Azure Cosmos DB'de yerel veri düzlemi rol tabanlı erişim denetimi tanımlarını ve atamalarını yönetmek için denetim düzlemi erişimlerine ihtiyacınız vardır. Azure Cosmos DB'nin veri düzlemi rol tabanlı erişim denetim mekanizması yerel olduğundan, tanımları ve atamaları oluşturmak ve bunları bir Azure Cosmos DB hesabında kaynak olarak depolamak için denetim düzlemi erişimine ihtiyacınız olacaktır.
Veri düzlemi
Veri düzlemi erişimi, hesaptaki kaynakları yönetme olanağı olmadan Bir Azure hizmeti içindeki verileri okuma ve yazma özelliğini ifade eder. Exmaple için Azure Cosmos DB veri düzlemi erişimi şunları içerebilir:
- Bazı hesap ve kaynak meta verilerini okuma
- Öğeleri oluşturma, okuma, güncelleştirme, düzeltme eki uygulama ve silme
- NoSQL sorguları yürütme
- Kapsayıcının değişiklik akışından okuma
- Saklı yordamları yürütme
- Çakışma akışındaki çakışmaları yönetme
Taşınabilir kimlik doğrulaması
Geliştirme aşamasında, yerel geliştirme ve üretim örnekleri için iki ayrı kimlik doğrulama mantığı kümesi yazmak yaygındır. Azure SDK ile tek bir teknik kullanarak mantığınızı yazabilir ve kimlik doğrulama kodunun geliştirme ve üretim aşamasında sorunsuz bir şekilde çalışmasını bekleyebilirsiniz.
Azure Kimlik istemci kitaplığı, Azure SDK'nın bir parçası olarak birden çok programlama dilinde kullanılabilir. Bu kitaplığı kullanarak, ortamınıza göre doğru kimlik bilgilerini bulmak için birden çok seçenekte akıllıca yol gösteren bir DefaultAzureCredential
nesne oluşturabilirsiniz. Bu kimlik doğrulama seçenekleri şunlardır (sırayla):
- Ortam değişkeni olarak depolanan istemci gizli dizisi veya sertifikası
- Microsoft Entra İş Yükü Kimliği
- Kullanıcı tarafından atanan veya sistem tarafından atanan yönetilen kimlik
- Visual Studio ayarlarından türetilen Azure kimlik bilgileri
- Visual Studio Code'un Azure Hesabı uzantısında kullanılan kimlik bilgileri
- Azure CLI'dan geçerli kimlik bilgileri
- Azure PowerShell'den geçerli kimlik bilgileri
- Azure Geliştirici CLI'sından geçerli kimlik bilgileri
- Oturum açmak için sistemin tarayıcısını başlatan etkileşimli bir oturum
Her modern Azure SDK kitaplığı, bir örneği veya temel türünü kabul eden ilgili istemci nesneleri veya sınıfları için bir DefaultAzureCredential
oluşturucuyu destekler.
İpucu
Üretim kodunuzun hata ayıklamasını kolaylaştırmak ve daha öngörülebilir hale getirmek için geliştirme aşamasında kullanmayı DefaultAzureCredential
ve uygulama dağıtıldıktan sonra gibi WorkloadIdentityCredential
ManagedIdentityCredential
daha belirli bir kimlik bilgileriyle geçiş yapmayı tercih edebilirsiniz. Bu sınıfların tümü, istemci başlatma mantığının bir parçası olarak birçok Azure SDK'sının beklediği sınıfı temel alır TokenCredential
ve bu da geçiş yapmayı basitleştirir.
Benzersiz tanımlayıcı
Microsoft Entra'daki her kimliğin benzersiz bir tanımlayıcısı vardır. Bazen , veya principalId
olarak adlandırılan bu benzersiz tanımlayıcıyı id
objectId
görürsünüz. Rol atamaları oluştururken, atamayla birlikte kullanacağınız kimliğin benzersiz tanımlayıcısına ihtiyacınız vardır.
Kapsam
Bir rol atadığınızda, hangi Azure kaynaklarına veya gruplarına erişim vereceğine karar vermeniz gerekir. Rol atamasının kapsamı, atamanın yapıldığı düzeyi tanımlar.
Örneğin:
- Tek bir kaynak kapsamı yalnızca bu tekil kaynağa izinler uygular
- Kaynak grubu düzeyinde ayarlanmış bir kapsam, izinleri gruptaki tüm ilgili kaynaklara uygular
- Yönetim grubu veya abonelik düzeylerindeki kapsamlar tüm alt gruplara ve kaynaklara uygulanır
Azure rol tabanlı erişim denetiminde bir rol atadığınızda, bu atamanın kapsamını iş yükünüz için gerektiği kadar az kaynak içerecek şekilde ayarlamak idealdir. Örneğin, atamanın kapsamını bir kaynak grubuna ayarlayabilirsiniz. Bu kaynak grubu kapsamı, kaynak grubu içindeki tüm Azure Cosmos DB kaynaklarını içerir:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>
Alternatif olarak, kapsamı tek bir Azure kaynağına ayarlayabilir ve izin atamanızı daha ayrıntılı ve dar hale getirebilirsiniz. Bu örnekte, kapsamı daraltmak için Azure Cosmos DB kaynağının sağlayıcısı ve adı kullanılır:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>
Daha fazla bilgi için bkz . Azure rol tabanlı erişim denetimi kapsamı.
Kapsam (Azure Cosmos DB yerel)
Azure Cosmos DB'nin rol tabanlı erişim denetiminin yerel uygulamasında kapsam, iznin uygulanmasını istediğiniz hesaptaki kaynakların ayrıntı düzeyini ifade eder.
En yüksek düzeyde, en büyük kapsamı kullanarak tüm hesaba veri düzlemi rol tabanlı erişim denetimi atamasını kapsamlayabilirsiniz. Bu kapsam, hesaptaki tüm veritabanlarını ve kapsayıcıları içerir:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/
Alternatif olarak, veri düzlemi rol atamanızın kapsamını belirli bir veritabanına da ayarlayabilirsiniz:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>
Son olarak, atamanın kapsamını en ayrıntılı kapsam olan tek bir kapsayıcıya ayarlayabilirsiniz:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>/colls/<container-name>