Udostępnij za pośrednictwem


Słownik zabezpieczeń dla usługi Azure Cosmos DB for NoSQL

DOTYCZY: NoSQL

Diagram bieżącej lokalizacji (

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):

  1. Klucz tajny klienta lub certyfikat przechowywany jako zmienna środowiskowa
  2. Tożsamość obciążeń Microsoft Entra
  3. Tożsamość zarządzana przypisana przez użytkownika lub przypisana przez system
  4. Poświadczenia platformy Azure pochodzące z ustawień programu Visual Studio
  5. Poświadczenia używane w rozszerzeniu konta platformy Azure programu Visual Studio Code
  6. Bieżące poświadczenia z interfejsu wiersza polecenia platformy Azure
  7. Bieżące poświadczenia z programu Azure PowerShell
  8. Bieżące poświadczenia z interfejsu wiersza polecenia dla deweloperów platformy Azure
  9. 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, objectIdlub 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>

Następny krok