Biztonságos hozzáférés az adatokhoz az Azure Cosmos DB-ben

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Ez a cikk áttekintést nyújt az Adathozzáférés-vezérlésről az Azure Cosmos DB-ben.

Az Azure Cosmos DB háromféleképpen szabályozhatja az adatokhoz való hozzáférést.

Hozzáférés-vezérlés típusa Jellemzők
Elsődleges/másodlagos kulcsok Megosztott titkos kód, amely lehetővé teszi az összes felügyeleti vagy adatműveletet. Írásvédett és írásvédett változatokban is megjelenik.
Szerepköralapú hozzáférés-vezérlés (RBAC) Részletes, szerepköralapú engedélymodell a Hitelesítéshez a Microsoft Entra-identitásokkal.
Erőforrás-jogkivonatok Részletes engedélymodell natív Azure Cosmos DB-felhasználók és engedélyek alapján.

Elsődleges/másodlagos kulcsok

Az elsődleges/másodlagos kulcsok hozzáférést biztosítanak az adatbázisfiók összes felügyeleti erőforrásához. Minden fiók két kulcsból áll: egy elsődleges és egy másodlagos kulcsból. A kettős kulcsok célja, hogy lehetővé teszik a kulcsok újragenerálását vagy forgását, biztosítva a fiókhoz és az adatokhoz való folyamatos hozzáférést. Az elsődleges/másodlagos kulcsokkal kapcsolatos további információkért tekintse meg az Azure Cosmos DB adatbázis-biztonságának áttekintését.

A fiókkulcsok megtekintéséhez a bal oldali menüben válassza a Kulcsok lehetőséget. Ezután kattintson az egyes kulcsok jobb oldalán található Nézet ikonra. Kattintson a Másolás gombra a kijelölt kulcs másolásához. Ezután elrejtheti őket, ha ugyanazt az ikont választja kulcsonként, amely egy Elrejtés gombra frissíti az ikont.

Screenshot of the View account key for Azure Cosmos DB.

Kulcsváltás és -regeneráció

Megjegyzés:

Az alábbi szakasz a NoSQL API kulcsainak elforgatását és újragenerálását ismerteti. Ha másik API-t használ, tekintse meg a MongoDB API-t, a Cassandra API-t, a Gremlin API-t vagy a táblaszakaszokhoz készült API-t.

A kulcsfrissítések és kulcsregenerációk figyeléséhez tekintse meg az Azure Cosmos DB-fiók monitorozását a kulcsfrissítésekről és a kulcsregenerációról.

A kulcsváltás és a regeneráció folyamata egyszerű. Először győződjön meg arról, hogy az alkalmazás következetesen az elsődleges vagy a másodlagos kulcsot használja az Azure Cosmos DB-fiók eléréséhez. Ezután kövesse a következő szakasz lépéseit.

  1. Nyissa meg Azure Cosmos DB-fiókját az Azure Portalon.

  2. Válassza a bal oldali menü Kulcsok elemét, majd a másodlagos kulcs jobb oldalán található három pontból válassza a Másodlagos kulcs újragenerálása lehetőséget.

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

  3. Ellenőrizze, hogy az új másodlagos kulcs következetesen működik-e az Azure Cosmos DB-fiókkal. A kulcsok újragenerálása az Azure Cosmos DB-fiók méretétől függően akár egy perctől akár több óráig is eltarthat.

  4. Cserélje le az elsődleges kulcsot az alkalmazás másodlagos kulcsára.

  5. Térjen vissza az Azure Portalra, és aktiválja az elsődleges kulcs újragenerálását.

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

Kódminta elsődleges kulcs használatához

Az alábbi kódminta bemutatja, hogyan használható azure Cosmos DB-fiókvégpont és elsődleges kulcs a CosmosClientkövetkezők példányosítására:

// 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);

Role-based access control

Az Azure Cosmos DB egy beépített RBAC-rendszert tesz elérhetővé, amely a következőket teszi lehetővé:

  • Az adatkérések hitelesítése Microsoft Entra-identitással.
  • Az adatkérések engedélyezése részletes, szerepköralapú engedélymodellel.

Az Azure Cosmos DB RBAC az ideális hozzáférés-vezérlési módszer olyan helyzetekben, amikor:

  • Nem szeretne olyan megosztott titkos kulcsot használni, mint az elsődleges kulcs, és inkább jogkivonatalapú hitelesítési mechanizmusra szeretne támaszkodni.
  • A kérések hitelesítéséhez Microsoft Entra-identitásokat szeretne használni.
  • Egy részletes engedélymodellre van szüksége, amely szigorúan korlátozza, hogy az identitások mely adatbázisműveleteket hajthatják végre.
  • A hozzáférés-vezérlési szabályzatokat "szerepkörökként" szeretné létrehozni, amelyeket több identitáshoz is hozzárendelhet.

Az Azure Cosmos DB RBAC-ről további információt az Azure Cosmos DB-fiók szerepköralapú hozzáférés-vezérlésének konfigurálása című témakörben talál.

Az RBAC MongoDB-hez készült Azure Cosmos DB-hez való konfigurálásához szükséges információkért és mintakódért lásd : Szerepköralapú hozzáférés-vezérlés konfigurálása a MongoDB-hez készült Azure Cosmos DB-hez.

Erőforrás-jogkivonatok

Az erőforrás-jogkivonatok hozzáférést biztosítanak az adatbázis alkalmazáserőforrásaihoz. Erőforrás-jogkivonatok:

  • Hozzáférés biztosítása adott tárolókhoz, partíciókulcsokhoz, dokumentumokhoz és mellékletekhez.
  • A rendszer akkor jön létre, ha egy felhasználó engedélyt kap egy adott erőforráshoz.
  • A rendszer akkor jön létre újra, ha egy engedélyerőforrást POST, GET vagy PUT hívás hajt végre.
  • Használjon kifejezetten a felhasználó, az erőforrás és az engedély számára létrehozott kivonaterőforrás-jogkivonatot.
  • Az idő szabható érvényességi időtartammal van kötve. Az alapértelmezett érvényes időtartam egy óra. A jogkivonat élettartama azonban explicit módon, legfeljebb 24 óráig adható meg.
  • Biztosítson biztonságos alternatívát az elsődleges kulcs megadásához.
  • Engedélyezze az ügyfelek számára, hogy a megadott engedélyeknek megfelelően olvassák, írhassák és törölhessék az erőforrásokat az Azure Cosmos DB-fiókban.

Akkor használhat erőforrás-jogkivonatot (azure Cosmos DB-felhasználók és engedélyek létrehozásával), ha hozzáférést szeretne biztosítani az Azure Cosmos DB-fiókjában lévő erőforrásokhoz egy olyan ügyfél számára, amely nem megbízható az elsődleges kulccsal.

Az Azure Cosmos DB-erőforrás-jogkivonatok olyan biztonságos alternatívát biztosítanak, amely lehetővé teszi az ügyfelek számára, hogy az Ön által megadott engedélyeknek megfelelően olvassák, írsák és töröljön erőforrásokat az Azure Cosmos DB-fiókban, és anélkül, hogy elsődleges vagy írásvédett kulcsot kellene megadniuk.

Az alábbiakban egy tipikus tervezési mintát mutatunk be, amelyben az erőforrás-jogkivonatok kérhetők, generálhatók és kézbesíthetők az ügyfeleknek:

  1. Egy középszintű szolgáltatás úgy van beállítva, hogy egy mobilalkalmazást kiszolgáljon a felhasználói fényképek megosztásához.

  2. A középszintű szolgáltatás rendelkezik az Azure Cosmos DB-fiók elsődleges kulcsával.

  3. A fényképalkalmazás telepítve van a felhasználói mobileszközökön.

  4. Bejelentkezéskor a fényképalkalmazás létrehozza a felhasználó identitását a középszintű szolgáltatással. Az identitáslétrehozás ezen mechanizmusa kizárólag az alkalmazáson múlik.

  5. Az identitás létrehozása után a középszintű szolgáltatás az identitás alapján kér engedélyeket.

  6. A középszintű szolgáltatás egy erőforrás-jogkivonatot küld vissza a telefonalkalmazásnak.

  7. A telefonos alkalmazás továbbra is használhatja az erőforrás-jogkivonatot az Azure Cosmos DB-erőforrások közvetlen elérésére az erőforrás-jogkivonat által meghatározott engedélyekkel és az erőforrás-jogkivonat által engedélyezett intervallummal.

  8. Amikor az erőforrás-jogkivonat lejár, a későbbi kérések 401 jogosulatlan kivételt kapnak. Ezen a ponton a telefonos alkalmazás újraalkotja az identitást, és új erőforrás-jogkivonatot kér.

    Screenshot that shows an Azure Cosmos DB resource tokens workflow.

Az erőforrás-jogkivonatok létrehozását és kezelését a natív Azure Cosmos DB-ügyfélkódtárak kezelik. Ha azonban REST-et használ, létre kell készítenie a kérés/hitelesítés fejléceit. A REST hitelesítési fejléceinek létrehozásáról további információt az Azure Cosmos DB-erőforrások hozzáférés-vezérlésével vagy a .NET SDK vagy a Node.js SDK forráskódjával kapcsolatban talál.

Az erőforrás-jogkivonatok létrehozásához vagy közvetítéséhez használt középső szintű szolgáltatásra példaként tekintse meg a ResourceTokenBroker alkalmazást.

Felhasználók

Az Azure Cosmos DB-felhasználók egy Azure Cosmos DB-adatbázishoz vannak társítva. Minden adatbázis tartalmazhat nulla vagy több Azure Cosmos DB-felhasználót. Az alábbi kódminta bemutatja, hogyan hozhat létre Azure Cosmos DB-felhasználót az Azure Cosmos DB .NET SDK v3 használatával.

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

Megjegyzés:

Minden Azure Cosmos DB-felhasználó rendelkezik egy ReadAsync() metódussal, amellyel lekérheti a felhasználóhoz társított engedélyek listáját.

Engedélyek

Az engedélyerőforrás egy felhasználóhoz van társítva, és egy adott erőforráshoz van hozzárendelve. Minden felhasználó tartalmazhat nulla vagy több engedélyt. Az engedélyerőforrás hozzáférést biztosít egy biztonsági jogkivonathoz, amire a felhasználónak szüksége van, amikor egy adott tárolóhoz vagy adatokhoz próbál hozzáférni egy adott partíciókulcsban. Egy engedélyerőforrás két elérhető hozzáférési szintet biztosít:

  • Minden: A felhasználó teljes engedéllyel rendelkezik az erőforráshoz.
  • Olvasás: A felhasználó csak az erőforrás tartalmát tudja olvasni, de írási, frissítési vagy törlési műveleteket nem tud végrehajtani az erőforráson.

Megjegyzés:

A tárolt eljárások futtatásához a felhasználónak rendelkeznie kell az Összes engedéllyel azon a tárolón, amelyen a tárolt eljárás futni fog.

Ha engedélyezi a diagnosztikai naplókat az adatsík-kérelmeken, a rendszer az engedélynek megfelelő két tulajdonságot naplózza:

  • resourceTokenPermissionId: Ez a tulajdonság a megadott erőforrás-jogkivonat engedélyazonosítóját jelzi.

  • resourceTokenPermissionMode: Ez a tulajdonság azt az engedélymódot jelzi, amelyet az erőforrás-jogkivonat létrehozásakor állított be. Az engedély mód olyan értékekkel rendelkezhet, mint az Összes vagy az Olvasás.

Kódminta az engedély létrehozásához

Az alábbi kódminta bemutatja, hogyan hozhat létre engedélyerőforrást, olvashatja be az engedélyerőforrás erőforrás-jogkivonatát, és hogyan társíthatja az engedélyeket az imént létrehozott felhasználóval .

// 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")));

Kódminta a felhasználó olvasási engedélyéhez

Az alábbi kódrészlet bemutatja, hogyan kérhető le a létrehozott felhasználóhoz tartozó engedély, és hogyan hozható létre új CosmosClient példány a felhasználó számára, egyetlen partíciókulcsra terjed ki.

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

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

Az RBAC és az erőforrás-jogkivonatok közötti különbségek

Tárgy RBAC Erőforrás-jogkivonatok
Authentication Microsoft Entra-azonosítóval. A natív Azure Cosmos DB-felhasználók alapján.
Az erőforrás-jogkivonatok Microsoft Entra-azonosítóval való integrálása további munkát igényel a Microsoft Entra-identitások és az Azure Cosmos DB-felhasználók áthidalásához.
Authorization Szerepköralapú: A szerepkördefiníciók megfeleltetik az engedélyezett műveleteket, és több identitáshoz is hozzárendelhetők. Engedélyalapú: Minden Azure Cosmos DB-felhasználóhoz adathozzáférési engedélyeket kell hozzárendelnie.
Jogkivonat hatóköre A Microsoft Entra-jogkivonat a kérelmező identitását hordozza. Ez az identitás megfelel az összes hozzárendelt szerepkör-definíciónak az engedélyezés végrehajtásához. Az erőforrás-jogkivonatok egy adott Azure Cosmos DB-felhasználónak adott Azure Cosmos DB-erőforrásra vonatkozó engedélyt hordoznak. A különböző erőforrások engedélyezési kérései eltérő jogkivonatokat igényelhetnek.
Jogkivonat frissítése A Microsoft Entra-jogkivonatot az Azure Cosmos DB SDK-k automatikusan frissítik, amikor lejár. Az erőforrás-jogkivonat frissítése nem támogatott. Ha egy erőforrás-jogkivonat lejár, ki kell adni egy újat.

Felhasználók hozzáadása és szerepkörök hozzárendelése

Ha Azure Cosmos DB-fiókolvasói hozzáférést szeretne hozzáadni a felhasználói fiókjához, az előfizetés tulajdonosa végezze el az alábbi lépéseket az Azure Portalon.

  1. Nyissa meg az Azure Portalt, és válassza ki az Azure Cosmos DB-fiókját.

  2. Select Access control (IAM).

  3. Válassza a Szerepkör-hozzárendelés hozzáadása>lehetőséget a Szerepkör-hozzárendelés hozzáadása lap megnyitásához.

  4. Rendelje hozzá a következő szerepkört. A részletes lépésekért lásd : Azure-szerepkörök hozzárendelése az Azure Portal használatával.

    Beállítás Value
    Role Cosmos DB-fiókolvasó.
    Hozzáférés hozzárendelése a következőhöz: Felhasználó, csoport vagy szolgáltatásnév.
    Tagok Az a felhasználó, csoport vagy alkalmazás a címtárban, amelyhez hozzáférést kíván adni.

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

Az entitás mostantól beolvassa az Azure Cosmos DB-erőforrásokat.

Felhasználói adatok törlése vagy exportálása

Adatbázis-szolgáltatásként az Azure Cosmos DB lehetővé teszi az adatbázisban vagy tárolókban található adatok keresését, kiválasztását, módosítását és törlését. Az Ön felelőssége, hogy a megadott API-kat használja, és szükség esetén meghatározza a személyes adatok kereséséhez és törléséhez szükséges logikát.

Minden többmodelles API (SQL, MongoDB, Gremlin, Cassandra vagy Table) különböző nyelvi SDK-kkal rendelkezik, amelyek egyéni predikátumokon alapuló adatkeresési és -törlési módszereket tartalmaznak. Azt is engedélyezheti, hogy az élettartam (TTL) funkció automatikusan töröljön adatokat egy adott időszak után, anélkül, hogy további költségekkel jár.

Megjegyzés:

További információ a személyes adatok megtekintésével vagy törlésével kapcsolatban: Azure érintettek kérelmei a GDPR-rel kapcsolatban. A GDPR-ról további információt a Microsoft Adatvédelmi központ GDPR-szakaszában és a Szolgáltatásmegbízhatósági portál GDPR szakaszában talál.

Következő lépések