Zabezpečený přístup k datům ve službě Azure Cosmos DB

PLATÍ PRO: NoSQL

Tento článek obsahuje přehled řízení přístupu k datům ve službě Azure Cosmos DB.

Azure Cosmos DB nabízí tři způsoby řízení přístupu k datům.

Typ řízení přístupu Charakteristiky
Primární/sekundární klíče Sdílený tajný klíč, který umožňuje jakoukoli operaci správy nebo dat. Je součástí variant pro čtení i zápis jen pro čtení.
Řízení přístupu na základě role (RBAC) Jemně odstupňovaný model oprávnění na základě role s využitím identit Microsoft Entra pro ověřování.
Tokeny prostředků Jemně odstupňovaný model oprávnění založený na nativních uživatelích a oprávněních služby Azure Cosmos DB.

Primární/sekundární klíče

Primární/sekundární klíče poskytují přístup ke všem prostředkům pro správu pro účet databáze. Každý účet se skládá ze dvou klíčů: primárního a sekundárního klíče. Účelem duálních klíčů je umožnit opětovné vygenerování nebo vrácení klíčů, které poskytují nepřetržitý přístup k vašemu účtu a datům. Další informace o primárních a sekundárních klíčích najdete v tématu Přehled zabezpečení databáze ve službě Azure Cosmos DB.

Klíče účtu zobrazíte tak, že v nabídce vlevo vyberete Klíče. Pak vyberte ikonu Zobrazení napravo od každého klíče. Výběrem tlačítka Kopírovat zkopírujte vybraný klíč. Potom je můžete skrýt tak, že vyberete stejnou ikonu na klíč, která ikonu aktualizuje na tlačítko Skrýt .

Screenshot of the View account key for Azure Cosmos DB.

Rotace a regenerace klíčů

Poznámka:

Následující část popisuje postup obměny a opětovného vygenerování klíčů pro rozhraní API pro NoSQL. Pokud používáte jiné rozhraní API, podívejte se na oddíly rozhraní API pro MongoDB, rozhraní API pro Cassandra, rozhraní API pro Gremlin nebo rozhraní API pro tabulky.

Pokud chcete monitorovat aktualizace klíčů a regeneraci klíčů v účtu služby Azure Cosmos DB, přečtěte si téma Monitorování aktualizací klíčů a regenerace klíčů.

Proces rotace a regenerace klíčů je jednoduchý. Nejprve se ujistěte, že vaše aplikace konzistentně používá primární klíč nebo sekundární klíč pro přístup k vašemu účtu služby Azure Cosmos DB. Pak postupujte podle kroků v další části.

  1. Na webu Azure Portal přejděte ke svému účtu služby Azure Cosmos DB.

  2. V nabídce vlevo vyberte Klávesy a pak v pravé části sekundárního klíče vyberte Znovu vygenerovat sekundární klíč .

    Screenshot that shows the Azure portal showing how to regenerate the secondary key.

  3. Ověřte, že nový sekundární klíč funguje konzistentně s vaším účtem služby Azure Cosmos DB. Regenerace klíčů může trvat od jedné minuty do několika hodin v závislosti na velikosti účtu služby Azure Cosmos DB.

  4. Nahraďte primární klíč sekundárním klíčem ve vaší aplikaci.

  5. Vraťte se na web Azure Portal a aktivujte regeneraci primárního klíče.

    Screenshot that shows the Azure portal showing how to regenerate the primary key.

Ukázka kódu pro použití primárního klíče

Následující ukázka kódu ukazuje, jak vytvořit instanci CosmosClientinstance koncového bodu účtu služby Azure Cosmos DB a primárního klíče:

// Read the Azure Cosmos DB endpointUrl and authorization keys from config.
// These values are available from the Azure portal on the Azure Cosmos DB account blade under "Keys".
// Keep these values in a safe and secure location. Together they provide Administrative access to your Azure Cosmos DB account.

private static readonly string endpointUrl = ConfigurationManager.AppSettings["EndPointUrl"];
private static readonly string authorizationKey = ConfigurationManager.AppSettings["AuthorizationKey"];

CosmosClient client = new CosmosClient(endpointUrl, authorizationKey);

Řízení přístupu na základě role

Azure Cosmos DB zveřejňuje integrovaný systém RBAC, který umožňuje:

  • Ověřte své žádosti o data pomocí identity Microsoft Entra.
  • Žádosti o data můžete autorizovat pomocí jemně odstupňovaného modelu oprávnění na základě role.

Řízení přístupu na základě role ve službě Azure Cosmos DB je ideální metodou řízení přístupu v situacích, kdy:

  • Nechcete používat sdílený tajný klíč, jako je primární klíč, a raději se spoléháte na mechanismus ověřování založený na tokenech.
  • K ověřování vašich požadavků chcete použít identity Microsoft Entra.
  • Potřebujete jemně odstupňovaný model oprávnění, abyste úzce omezili, které databázové operace mohou vaše identity provádět.
  • Zásady řízení přístupu chcete materializovat jako role, které můžete přiřadit více identitám.

Další informace o řízení přístupu na základě role pro účet Služby Azure Cosmos DB najdete v tématu Konfigurace řízení přístupu na základě role.

Informace a ukázkový kód pro konfiguraci řízení přístupu na základě role pro Azure Cosmos DB pro MongoDB najdete v tématu Konfigurace řízení přístupu na základě role pro službu Azure Cosmos DB pro MongoDB.

Tokeny prostředků

Tokeny prostředků poskytují přístup k prostředkům aplikace v databázi. Tokeny prostředků:

  • Poskytněte přístup ke konkrétním kontejnerům, klíčům oddílů, dokumentům a přílohům.
  • Vytvoří se, když má uživatel udělená oprávnění ke konkrétnímu prostředku.
  • Vytvoří se znovu, když se prostředek oprávnění bude chovat voláním POST, GET nebo PUT.
  • Použijte token prostředku hash vytvořený speciálně pro uživatele, prostředek a oprávnění.
  • Jsou časová vazbu s přizpůsobitelnou dobou platnosti. Výchozí platný časový rozsah je jedna hodina. Životnost tokenů ale může být explicitně zadána až do 24 hodin.
  • Poskytněte bezpečnou alternativu k předání primárního klíče.
  • Umožňuje klientům číst, zapisovat a odstraňovat prostředky v účtu služby Azure Cosmos DB podle udělených oprávnění.

Token prostředku (vytvořením uživatelů a oprávnění služby Azure Cosmos DB) můžete použít, když chcete poskytnout přístup k prostředkům v účtu služby Azure Cosmos DB klientovi, kterému primární klíč nelze důvěřovat.

Tokeny prostředků Azure Cosmos DB poskytují bezpečnou alternativu, která klientům umožňuje číst, zapisovat a odstraňovat prostředky ve vašem účtu služby Azure Cosmos DB podle udělených oprávnění a bez nutnosti primárního nebo jen pro čtení klíče.

Tady je typický vzor návrhu, ve kterém je možné vyžádat, vygenerovat a doručit tokeny prostředků klientům:

  1. Služba střední vrstvy je nastavená tak, aby sloužila mobilní aplikaci ke sdílení fotek uživatelů.

  2. Služba střední vrstvy má primární klíč účtu služby Azure Cosmos DB.

  3. Aplikace fotky je nainstalovaná na mobilních zařízeních uživatelů.

  4. Při přihlášení aplikace fotky vytvoří identitu uživatele se službou střední vrstvy. Tento mechanismus vytvoření identity je čistě v aplikaci.

  5. Po vytvoření identity služba střední vrstvy požaduje oprávnění na základě identity.

  6. Služba střední vrstvy odešle token prostředku zpět do telefonní aplikace.

  7. Telefonní aplikace může dál používat token prostředku pro přímý přístup k prostředkům služby Azure Cosmos DB s oprávněními definovanými tokenem prostředku a v intervalu povoleném tokenem prostředku.

  8. Po vypršení platnosti tokenu prostředku obdrží následné požadavky neautorizovanou výjimku 401. V tomto okamžiku telefonní aplikace znovu vytvoří identitu a požádá o nový token prostředku.

    Screenshot that shows an Azure Cosmos DB resource tokens workflow.

Generování a správa tokenů prostředků zpracovává nativní klientské knihovny Azure Cosmos DB. Pokud však používáte REST, musíte vytvořit hlavičky požadavku/ověřování. Další informace o vytváření hlaviček ověřování pro REST najdete v tématu Řízení přístupu k prostředkům služby Azure Cosmos DB nebo zdrojového kódu pro naši sadu .NET SDK nebo Node.js SDK.

Příklad služby střední vrstvy sloužící ke generování nebo zprostředkování tokenů prostředků najdete v aplikaci ResourceTokenBroker.

Uživatelé

Uživatelé služby Azure Cosmos DB jsou přidruženi k databázi Azure Cosmos DB. Každá databáze může obsahovat nula nebo více uživatelů služby Azure Cosmos DB. Následující ukázka kódu ukazuje, jak vytvořit uživatele služby Azure Cosmos DB pomocí sady .NET SDK služby Azure Cosmos DB verze 3.

// Create a user.
Database database = client.GetDatabase("SalesDatabase");
User user = await database.CreateUserAsync("User 1");

Poznámka:

Každý uživatel služby Azure Cosmos DB má metoduReadAsync(), kterou můžete použít k načtení seznamu oprávnění přidružených k uživateli.

Oprávnění

Prostředek oprávnění je přidružený k uživateli a přiřazen k určitému prostředku. Každý uživatel může obsahovat nula nebo více oprávnění. Prostředek oprávnění poskytuje přístup k tokenu zabezpečení, který uživatel potřebuje při pokusu o přístup ke konkrétnímu kontejneru nebo datům v určitém klíči oddílu. Prostředek oprávnění poskytuje dvě dostupné úrovně přístupu:

  • Vše: Uživatel má k prostředku úplné oprávnění.
  • Čtení: Uživatel může číst pouze obsah prostředku, ale nemůže provádět operace zápisu, aktualizace nebo odstranění prostředku.

Poznámka:

Aby bylo možné spouštět uložené procedury, musí mít uživatel oprávnění Vše v kontejneru, ve kterém bude uložená procedura spuštěna.

Pokud povolíte diagnostické protokoly v požadavcích na rovinu dat, zaprotokolují se následující dvě vlastnosti odpovídající oprávnění:

  • resourceTokenPermissionId: Tato vlastnost označuje ID oprávnění tokenu prostředku, které jste zadali.

  • resourceTokenPermissionMode: Tato vlastnost označuje režim oprávnění, který jste nastavili při vytváření tokenu prostředku. Režim oprávnění může obsahovat hodnoty, například Vše nebo Číst.

Ukázka kódu pro vytvoření oprávnění

Následující ukázka kódu ukazuje, jak vytvořit prostředek oprávnění, přečíst token prostředku oprávnění a přidružit oprávnění k uživateli , který jste právě vytvořili.

// Create a permission on a container and specific partition key value
Container container = client.GetContainer("SalesDatabase", "OrdersContainer");
await user.CreatePermissionAsync(
    new PermissionProperties(
        id: "permissionUser1Orders", 
        permissionMode: PermissionMode.All, 
        container: container,
        resourcePartitionKey: new PartitionKey("012345")));

Ukázka kódu pro čtení oprávnění pro uživatele

Následující fragment kódu ukazuje, jak načíst oprávnění přidružená k uživateli, který jste vytvořili, a vytvořit instanci nového CosmosClient uživatele s oborem na jeden klíč oddílu.

// Read a permission, create user client session.
Permission permission = await user.GetPermission("permissionUser1Orders").ReadAsync();

CosmosClient client = new CosmosClient(accountEndpoint: "MyEndpoint", authKeyOrResourceToken: permission.Resource.Token);

Rozdíly mezi RBAC a tokeny prostředků

Předmět RBAC Tokeny prostředků
Authentication S ID Microsoft Entra. Na základě nativních uživatelů služby Azure Cosmos DB.
Integrace tokenů prostředků s ID Microsoft Entra vyžaduje další práci pro přeměkování identit Microsoft Entra a uživatelů azure Cosmos DB.
Autorizace Na základě role: Definice rolí mapují povolené akce a dají se přiřadit k více identitám. Na základě oprávnění: Pro každého uživatele služby Azure Cosmos DB je potřeba přiřadit přístupová oprávnění k datům.
Obor tokenu Token Microsoft Entra nese identitu žadatele. Tato identita se shoduje se všemi definicemi přiřazené role k provedení autorizace. Token prostředku nese oprávnění udělená konkrétnímu uživateli služby Azure Cosmos DB na konkrétním prostředku Azure Cosmos DB. Žádosti o autorizaci u různých prostředků můžou vyžadovat různé tokeny.
Aktualizace tokenu Token Microsoft Entra se po vypršení platnosti automaticky aktualizuje sadami SDK služby Azure Cosmos DB. Aktualizace tokenu prostředku není podporovaná. Když vyprší platnost tokenu prostředku, je potřeba vystavit nový token.

Přidání uživatelů a přiřazení rolí

Pokud chcete ke svému uživatelskému účtu přidat přístup čtenáře účtu Azure Cosmos DB, požádejte vlastníka předplatného, aby na webu Azure Portal provedl následující kroky.

  1. Otevřete web Azure Portal a vyberte svůj účet služby Azure Cosmos DB.

  2. Vyberte Řízení přístupu (IAM) .

  3. Výběrem možnosti Přidat>přiřazení role otevřete stránku Přidat přiřazení role.

  4. Přiřaďte následující roli. Podrobný postup najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.

    Nastavení Hodnota
    Role Čtenář účtu služby Cosmos DB
    Přiřadit přístup k Uživatel, skupina nebo instanční objekt
    Členové Uživatel, skupina nebo aplikace v adresáři, ke kterému chcete udělit přístup.

    Screenshot that shows the Add role assignment page in the Azure portal.

Entita teď může číst prostředky Azure Cosmos DB.

Odstranění nebo export uživatelských dat

Jako databázová služba umožňuje Azure Cosmos DB vyhledávat, vybírat, upravovat a odstraňovat všechna data umístěná v databázi nebo kontejnerech. Je vaší zodpovědností používat poskytnutá rozhraní API a definovat logiku potřebnou k vyhledání a vymazání osobních údajů v případě potřeby.

Každé vícemodelové rozhraní API (SQL, MongoDB, Gremlin, Cassandra nebo Table) poskytuje různé jazykové sady SDK, které obsahují metody vyhledávání a odstraňování dat na základě vlastních predikátů. Můžete také povolit funkci TTL (Time to Live) k automatickému odstranění dat po zadaném období bez jakýchkoli dalších nákladů.

Poznámka:

Informace o zobrazení nebo odstranění osobních údajů najdete v tématu věnovaném žádostem subjektů údajů Azure podle GDPR. Další informace o GDPR najdete v části GDPR v Centru zabezpečení Microsoftu a v části GDPR na portálu Service Trust Portal.

Další kroky