Słownik zabezpieczeń dla usługi Azure Cosmos DB for NoSQL
DOTYCZY: NoSQL
Diagram sekwencji przewodnika wdrażania, w tym tych lokalizacji, w kolejności: Przegląd, Pojęcia, Przygotowanie, Kontrola dostępu oparta na rolach, Sieć i Dokumentacja. Lokalizacja "Pojęcia" jest obecnie wyróżniona.
Ten artykuł zawiera słownik typowej terminologii używanej w tym przewodniku dotyczącym zabezpieczeń dla usługi Azure Cosmos DB for NoSQL.
Kontrola dostępu oparta na rolach
Kontrola dostępu oparta na rolach odnosi się do metody zarządzania dostępem do zasobów na platformie Azure. Ta metoda jest oparta na określonych tożsamościach przypisanych ról, które zarządzają poziomem dostępu, który musi mieć co najmniej jeden zasób. Kontrola dostępu oparta na rolach zapewnia elastyczny system precyzyjnego zarządzania dostępem, który zapewnia tożsamościom tylko najmniej uprzywilejowany poziom dostępu, którego potrzebują do wykonania zadania.
Aby uzyskać więcej informacji, zobacz Omówienie kontroli dostępu opartej na rolach.
Tożsamość/podmiot zabezpieczeń
Tożsamości odnoszą się do obiektów w firmie Microsoft Entra, które reprezentują pewną jednostkę, która może potrzebować poziomu dostępu do systemu. W kontekście platformy Azure i firmy Microsoft Entra tożsamości mogą odwoływać się do jednego z następujących typów jednostek:
opis | |
---|---|
Tożsamości obciążeń | Tożsamość obciążenia reprezentuje obciążenie oprogramowania, które musi uzyskiwać dostęp do innych usług lub zasobów |
Tożsamości człowieka | Tożsamość człowieka reprezentuje użytkownika, który może być natywny dla dzierżawy lub dodany jako gość |
Tożsamości zarządzane | Tożsamości zarządzane to odrębne zasoby na platformie Azure reprezentujące tożsamość usługi platformy Azure |
Jednostki usługi | Jednostka usługi to konto usługi, które może być używane w elastycznej liczbie scenariuszy uwierzytelniania |
Tożsamości urządzeń | Tożsamość urządzenia to obiekt w usłudze Microsoft Entra, który jest mapowany na urządzenie |
Grupy | Grupy to obiekty używane do zarządzania dostępem do co najmniej jednej tożsamości jako jednej operacji |
Aby uzyskać więcej informacji, zobacz Podstawy tożsamości.
Rola
Role to podstawowe jednostki wymuszania dostępu i uprawnień. Przypisanie roli do tożsamości i definicja roli określa, jaki poziom dostępu może mieć tożsamość. Zakres przypisania określa, do czego dokładnie ma dostęp tożsamość.
Platforma Azure ma duży zestaw wbudowanych ról, których można użyć do udzielania dostępu do różnych zasobów. Rozważ taki przykład:
Wartość | |
---|---|
Rola | CosmosBackupOperator |
Definicja | Microsoft.DocumentDB/databaseAccounts/backup/action & Microsoft.DocumentDB/databaseAccounts/restore/action |
Scope | Grupa zasobów |
W tym przykładzie przypisano CosmosBackupOperator
rolę dla określonej grupy zasobów. To przypisanie zapewnia dostęp do wykonywania backup
akcji lub restore
na dowolnym koncie usługi Azure Cosmos DB w ramach tej grupy zasobów.
Ważne
Niektóre usługi platformy Azure, takie jak Azure Cosmos DB, mają własną natywną implementację kontroli dostępu opartej na rolach, która używa różnych właściwości usługi Azure Resource Manager, poleceń interfejsu wiersza polecenia platformy Azure i poleceń programu Azure PowerShell. Polecenia, których zwykle używasz do zarządzania kontrolą dostępu opartą na rolach, nie będą działać z dostępem do płaszczyzny danych usługi Azure Cosmos DB. Niektóre polecenia kontroli dostępu opartej na rolach platformy Azure mogą współdziałać z dostępem do płaszczyzny sterowania usługi Azure Cosmos DB.
Aby uzyskać więcej informacji, zobacz wbudowane role platformy Azure
Definicja roli
Definicja roli to obiekt JSON zawierający listę akcji płaszczyzny sterowania i płaszczyzny danych, które są dozwolone i niedozwolone. Rozważmy ten obcięty przykład z wbudowanej CosmosRestoreOperator
roli:
{
"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": []
}
],
...
}
W tej definicji tożsamość przypisana do tej roli może wykonać restore
akcję. Po zakończeniu operacji przywracania tożsamość może odczytać różne zasoby, aby sprawdzić, czy przywracanie zakończyło się pomyślnie. Możemy określić, że może odczytywać te zasoby z *
powodu operatora (symbol wieloznaczny) dla elementu read
.
Aby uzyskać więcej informacji, zobacz pojęcia dotyczące definicji ról.
Przypisanie roli
Przypisanie roli udziela tożsamości dostępu do określonego zasobu platformy Azure. Przypisania ról składają się z następujących składników:
opis | |
---|---|
Główny | Jaka tożsamość ma przypisaną tę rolę |
Rola | Rola przypisana do tożsamości |
Scope | Docelowy zasób lub grupa przydziału platformy Azure |
Nazwa/opis | Metadane ułatwiające zarządzanie przypisaniami na dużą skalę |
Napiwek
W kontroli dostępu opartej na rolach można zobaczyć terminy tożsamość i podmiot zabezpieczeń używane w sposób niezmienny.
Aby uzyskać więcej informacji, zobacz Pojęcia dotyczące przypisywania ról.
Akcje
Akcje definiują określone uprawnienia , które ma rola dla zasobu docelowego. Akcje to ciągi, które zwykle zawierają typ zasobu i opisową nazwę, w której opisano uprawnienia, które przyznaje akcja. Oto kilka często występujących przykładów:
opis | Płaszczyzna | |
---|---|---|
Microsoft.DocumentDB/databaseAccounts/listKeys/action |
Tylko odczyt kluczy kont | Płaszczyzna sterowania |
Microsoft.DocumentDB/databaseAccounts/backup/action |
Wykonywanie kopii zapasowych | Płaszczyzna sterowania |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace |
Całkowicie zastąp istniejący element | Płaszczyzna danych |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery |
Wykonywanie zapytania NoSQL | Płaszczyzna danych |
Akcje mogą również zawierać *
(symbol wieloznaczny), aby nie trzeba było ręcznie określać poszczególnych podwyzmian. Oto kilka przykładów akcji z symbolami wieloznacznymi:
opis | |
---|---|
Microsoft.DocumentDb/databaseAccounts/* |
Tworzenie kont usługi Azure Cosmos DB i zarządzanie nimi |
Microsoft.DocumentDB/*/read |
Odczytywanie dowolnego kontenera lub bazy danych |
Akcje są oddzielone płaszczyzną sterowania i płaszczyzną danych. Należy oddzielnie zdefiniować akcje dotyczące zasobów i akcji płaszczyzny sterowania, które mogą mieć wpływ na dane. W definicji roli akcje płaszczyzny sterowania używają actions
właściwości i akcji płaszczyzny danych znajdują się we dataActions
właściwości . Można również zdefiniować akcje, których tożsamość nie może wykonać przy użyciu odpowiednich notActions
właściwości i notDataActions
.
Uwaga
Podział akcji na płaszczyznę kontroli i danych to środek zabezpieczeń, który uniemożliwia korzystanie z akcji z symboli wieloznacznych ze starszych definicji ról bez ograniczeń i niezamierzonego dostępu do danych.
Aby uzyskać więcej informacji, zobacz akcje kontroli i danych.
Zasada najniższych uprawnień
Koncepcja "najniższych uprawnień" odnosi się do najlepszych rozwiązań operacyjnych w celu zapewnienia, że wszyscy użytkownicy mają tylko minimalny poziom dostępu, którego potrzebują do wykonania zadania lub zadania. Na przykład aplikacja, która odczytuje dane z bazy danych, będzie potrzebować tylko dostępu do odczytu do magazynu danych. Jeśli ta aplikacja miała dostęp do odczytu i zapisu w magazynie danych, może się zdarzyć kilka rzeczy, w tym, ale nie tylko:
- Aplikacja może błędnie zniszczyć dane
- Nieautoryzowany użytkownik może uzyskać dostęp do poświadczeń aplikacji i zmodyfikować dane
Zgodnie z praktyką najniższych uprawnień gwarantuje, że wszelkie potencjalne naruszenia danych są ograniczone w zakresie. Ta praktyka maksymalizuje bezpieczeństwo operacyjne, umożliwiając użytkownikom zachowanie skuteczności.
Aby uzyskać więcej informacji, zobacz zalecane role o najniższych uprawnieniach według zadania.
Płaszczyzna sterowania
Dostęp do płaszczyzny sterowania odnosi się do możliwości zarządzania zasobami dla usługi platformy Azure bez zarządzania danymi. Na przykład dostęp do płaszczyzny sterowania usługi Azure Cosmos DB może obejmować następujące możliwości:
- Odczytywanie wszystkich metadanych konta i zasobów
- Odczytywanie i ponowne generowanie kluczy kont i parametry połączenia
- Wykonywanie kopii zapasowych i przywracanie konta
- Uruchamianie i śledzenie zadań transferu danych
- Zarządzanie bazami danych i kontenerami
- Modyfikowanie właściwości konta
Ważne
W usłudze Azure Cosmos DB potrzebujesz dostępu do płaszczyzny sterowania, aby zarządzać natywnymi definicjami i przypisaniami kontroli dostępu opartej na rolach na płaszczyźnie danych. Ponieważ mechanizm kontroli dostępu opartej na rolach płaszczyzny danych usługi Azure Cosmos DB jest natywny, musisz mieć dostęp do płaszczyzny sterowania w celu tworzenia definicji i przypisań oraz przechowywania ich jako zasobów na koncie usługi Azure Cosmos DB.
Płaszczyzna danych
Dostęp do płaszczyzny danych odnosi się do możliwości odczytywania i zapisywania danych w usłudze platformy Azure bez możliwości zarządzania zasobami na koncie. W przypadku eksmaple dostęp do płaszczyzny danych usługi Azure Cosmos DB może obejmować następujące możliwości:
- Odczytywanie niektórych metadanych konta i zasobów
- Tworzenie, odczytywanie, aktualizowanie, poprawianie i usuwanie elementów
- Wykonywanie zapytań NoSQL
- Odczytywanie ze źródła zmian kontenera
- Wykonywanie procedur składowanych
- Zarządzanie konfliktami w kanale informacyjnym konfliktów
Przenośne uwierzytelnianie
W programowania często zapisuje się dwa zestawy odrębnej logiki uwierzytelniania dla lokalnych wystąpień programistycznych i produkcyjnych. Za pomocą zestawu Azure SDK możesz napisać logikę przy użyciu jednej techniki i oczekiwać, że kod uwierzytelniania będzie bezproblemowo działać w środowisku deweloperskim i produkcyjnym.
Biblioteka klienta tożsamości platformy Azure jest dostępna w wielu językach programowania w ramach zestawu Azure SDK. Korzystając z tej biblioteki, można utworzyć DefaultAzureCredential
obiekt, który inteligentnie przechodzi przez wiele opcji, aby znaleźć odpowiednie poświadczenia na podstawie środowiska. Te opcje uwierzytelniania obejmują (w kolejności):
- Klucz tajny klienta lub certyfikat przechowywany jako zmienna środowiskowa
- Tożsamość obciążeń Microsoft Entra
- Tożsamość zarządzana przypisana przez użytkownika lub przypisana przez system
- Poświadczenia platformy Azure pochodzące z ustawień programu Visual Studio
- Poświadczenia używane w rozszerzeniu konta platformy Azure programu Visual Studio Code
- Bieżące poświadczenia z interfejsu wiersza polecenia platformy Azure
- Bieżące poświadczenia z programu Azure PowerShell
- Bieżące poświadczenia z interfejsu wiersza polecenia dla deweloperów platformy Azure
- Interaktywna sesja, która uruchamia przeglądarkę systemu na potrzeby logowania
Każda nowoczesna biblioteka zestawu Azure SDK obsługuje konstruktor dla odpowiednich obiektów klienta lub klas, które akceptują DefaultAzureCredential
wystąpienie lub jego typ podstawowy.
Napiwek
Aby ułatwić debugowanie kodu produkcyjnego i bardziej przewidywalne, możesz zdecydować się na użycie DefaultAzureCredential
funkcji programowania i zamiany na bardziej szczegółowe poświadczenia, takie jak WorkloadIdentityCredential
lub ManagedIdentityCredential
po wdrożeniu aplikacji. Wszystkie te klasy są oparte na TokenCredential
klasie, którą wielu zestawów SDK platformy Azure oczekuje w ramach logiki inicjowania klienta, co ułatwia zamianę z powrotem i z powrotem.
Unikatowy identyfikator
Każda tożsamość w firmie Microsoft Entra ma unikatowy identyfikator. Czasami ten unikatowy identyfikator jest określany jako id
, objectId
lub principalId
. Podczas tworzenia przypisań ról potrzebny jest unikatowy identyfikator tożsamości używanej z przypisaniem.
Scope
Po przypisaniu roli musisz zdecydować, do jakich zasobów lub grup platformy Azure należy udzielić dostępu. Zakres przypisania roli definiuje poziom, na którym jest wykonywane przypisanie.
Na przykład:
- Pojedynczy zakres zasobów ma zastosowanie do tylko tego pojedynczego zasobu
- Zakres ustawiony na poziomie grupy zasobów stosuje uprawnienia do wszystkich odpowiednich zasobów w grupie
- Zakresy na poziomach grupy zarządzania lub subskrypcji mają zastosowanie do wszystkich grup podrzędnych i zasobów
W przypadku przypisywania roli w kontroli dostępu opartej na rolach na platformie Azure idealne jest ustawienie zakresu tego przypisania tak, aby obejmowało tyle zasobów, ile jest to wymagane dla obciążenia. Na przykład można ustawić zakres przypisania do grupy zasobów. Zakres tej grupy zasobów obejmuje wszystkie zasoby usługi Azure Cosmos DB w grupie zasobów:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>
Możesz też ustawić zakres na pojedynczy zasób platformy Azure i zwiększyć stopień szczegółowości i zawęzić przypisanie uprawnień. W tym przykładzie dostawca i nazwa zasobu usługi Azure Cosmos DB są używane do zawężenia zakresu:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>
Aby uzyskać więcej informacji, zobacz Zakres kontroli dostępu opartej na rolach na platformie Azure.
Zakres (natywny dla usługi Azure Cosmos DB)
W natywnej implementacji kontroli dostępu opartej na rolach w usłudze Azure Cosmos DB zakres odnosi się do stopnia szczegółowości zasobów w ramach konta, dla którego chcesz zastosować uprawnienia.
Na najwyższym poziomie można określić zakres przypisania kontroli dostępu opartej na rolach płaszczyzny danych do całego konta przy użyciu największego zakresu. Ten zakres obejmuje wszystkie bazy danych i kontenery w ramach konta:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/
Możesz też określić zakres przypisania roli płaszczyzny danych do określonej bazy danych:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>
Na koniec możesz ograniczyć zakres przypisania do pojedynczego kontenera, co jest najbardziej szczegółowym zakresem:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>/colls/<container-name>