Blobok olvasási hozzáférésének engedélyezése címkék és egyéni biztonsági attribútumok alapján
Ebben a cikkben megtudhatja, hogyan engedélyezheti a blobok olvasási hozzáférését blobindex-címkék és egyéni biztonsági attribútumok alapján attribútumalapú hozzáférés-vezérlési (ABAC- ) feltételek használatával. Ez megkönnyíti a blobokhoz való hozzáférés kezelését.
Előfeltételek
Ha egyéni biztonsági attribútumokat szeretne hozzárendelni, és szerepkör-hozzárendelési feltételeket szeretne hozzáadni a Microsoft Entra-bérlőhöz, a következőkre van szüksége:
- Attribútumdefiníciós Rendszergazda istrator és attribútum-hozzárendelés Rendszergazda istrator
- Szerepköralapú hozzáférés-vezérlési Rendszergazda istrator
Fontos
Alapértelmezés szerint a globális Rendszergazda istrator és más rendszergazdai szerepkörök nem rendelkeznek egyéni biztonsági attribútumok olvasására, definiálására vagy hozzárendelésére vonatkozó engedélyekkel. Ha nem felel meg ezeknek az előfeltételeknek, nem fogja látni az egyszerű/felhasználói attribútumokat a feltételszerkesztőben.
Feltétel
Ebben a cikkben engedélyezi a blobok olvasási elérését, ha a felhasználó egyéni biztonsági attribútummal rendelkezik, amely megfelel a blobindex címkéjének. Ez úgy érhető el, hogy hozzáad egy feltételt a szerepkör-hozzárendeléshez.
Ha például Brenda rendelkezik az attribútummal Project=Baker
, akkor csak a Project=Baker
blobindex címkével rendelkező blobokat tudja olvasni. Hasonlóképpen, a Chandra csak a blobokat tudja olvasni a következővel Project=Cascade
: .
Így néz ki a feltétel a kódban:
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})
)
OR
(
@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
)
)
A feltételekkel kapcsolatos további információkért lásd : Mi az Azure attribútumalapú hozzáférés-vezérlés (Azure ABAC)?.
1. lépés: Új egyéni biztonsági attribútum hozzáadása
Jelentkezzen be az Azure Portalra.
Kattintson a Microsoft Entra ID>Custom biztonsági attribútumokra.
Adjon hozzá egy attribútumot
Project
, amely az ésCascade
aBaker
. Vagy használjon egy meglévő attribútumot. További információ: Egyéni biztonsági attribútumok hozzáadása vagy inaktiválása a Microsoft Entra-azonosítóban.
2. lépés: Az egyéni biztonsági attribútum hozzárendelése egy felhasználóhoz
A Microsoft Entra ID-ban hozzon létre egy biztonsági csoportot.
Adjon hozzá egy felhasználót a csoport tagjaként.
Rendelje hozzá az
Project
attribútumot a felhasználóhoz egy értékkelCascade
. További információ: Felhasználó egyéni biztonsági attribútumainak hozzárendelése, frissítése, listázása vagy eltávolítása.A feladat mentéséhez kattintson a Mentés gombra.
3. lépés: Tároló- és blobindexcímkék beállítása
Hozzon létre egy tárfiókot, amely kompatibilis a blobindexcímkék funkcióval. További információ: Azure Blob-adatok kezelése és megkeresése blobindexcímkékkel.
Hozzon létre egy új tárolót a tárfiókon belül, és állítsa a nyilvános hozzáférési szintet privátra (névtelen hozzáférés nélkül).
Állítsa be a hitelesítési típust Azure AD-felhasználói fiókra.
Töltsön fel szöveges fájlokat a tárolóba, és állítsa be a következő blobindex-címkéket.
Fájl Key Érték Baker-szövegfájl Project Baker Kaszkádolt szövegfájl Project Cascade Tipp.
A blobindexcímkékhez engedélyezett karakterekről további információt a Blob indexcímkék beállítása című témakörben talál.
4. lépés: Storage Blob-adatolvasó szerepkör hozzárendelése feltétellel
Nyisson meg egy új lapot, és jelentkezzen be az Azure Portalra.
Nyissa meg a tárfiókot tartalmazó erőforráscsoportot.
Click Access control (IAM).
Kattintson a Szerepkör-hozzárendelések fülre a szerepkör-hozzárendelések ebben a hatókörben való megtekintéséhez.
Kattintson a Szerepkör-hozzárendelés hozzáadása elemre>.
A Szerepkör lapon válassza a Storage Blob Adatolvasó szerepkört.
A Tagok lapon válassza ki a korábban létrehozott biztonsági csoportot.
(Nem kötelező) A Leírás mezőben adja meg a blobok olvasási hozzáférését, ha a felhasználó egyéni biztonsági attribútummal rendelkezik, amely megfelel a blobindex címkéjének.
A Feltételek (nem kötelező) lapon kattintson a Feltétel hozzáadása elemre.
Megjelenik a Szerepkör-hozzárendelés hozzáadása feltétellap.
A Művelet hozzáadása szakaszban kattintson a Művelet hozzáadása elemre.
Megjelenik a Művelet kiválasztása panel. Ez a panel az adatműveletek szűrt listája azon szerepkör-hozzárendelés alapján, amely a feltétel célhelye lesz.
Kattintson a Blob olvasása, majd a Kijelölés gombra.
A Kifejezés összeállítása szakaszban kattintson a Hozzáadás gombra.
Adja meg a következő beállításokat:
Beállítás Value Attribútumforrás Rendszerbiztonsági tag Attribútum <attribútumkészlet>_Project Operator StringEquals Lehetőség Attribútum Attribútumforrás Resource Attribútum Blobindex-címkék [Értékek a kulcsban] Kulcs Project Megjegyzés:
Ha az Egyszerű elem nem szerepel az attribútumforrásban lehetőségként, győződjön meg arról, hogy az 1. lépésben ismertetett egyéni biztonsági attribútumot definiálta: Új egyéni biztonsági attribútum hozzáadása.
Görgessen fel a Szerkesztő típusához, és kattintson a Kód gombra.
A feltételnek a következőhöz hasonlóan kell kinéznie:
( ( !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'}) ) OR ( @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] ) )
A feltétel mentéséhez kattintson a Mentés gombra.
A Véleményezés + hozzárendelés lapon kattintson a Véleményezés + hozzárendelés gombra a Storage Blob-adatolvasó szerepkör feltételhez való hozzárendeléséhez.
5. lépés: Olvasói szerepkör hozzárendelése
Ismételje meg az előző lépéseket a biztonsági csoport Olvasó szerepkörének erőforráscsoport-hatókörhöz való hozzárendeléséhez.
Megjegyzés:
Általában nem kell hozzárendelnie az Olvasó szerepkört. Ez azonban azért történik, hogy tesztelhesse a feltételt az Azure Portalon.
6. lépés: A feltétel tesztelése
Jelentkezzen be az egyéni biztonsági attribútummal
Project=Cascade
létrehozott felhasználóként.Nyissa meg a létrehozott tárfiókot és tárolót.
Győződjön meg arról, hogy a hitelesítési módszer Azure AD-felhasználói fiókra van állítva, és nem hozzáférési kulcsra.
Kattintson a Baker szövegfájlra.
Nem lehet megtekinteni vagy letölteni a blobot, és meg kell jelennie egy sikertelen engedélyezési üzenetnek.
Kattintson a Kaszkádolt szövegfájl elemre.
Meg kell tudnia tekinteni és letölteni a blobot.
Azure PowerShell
Az Azure PowerShell használatával szerepkör-hozzárendelési feltételeket is hozzáadhat. Az alábbi parancsok bemutatják, hogyan adhat hozzá feltételeket. További információ : Oktatóanyag: Szerepkör-hozzárendelési feltétel hozzáadása a blobokhoz való hozzáférés korlátozásához az Azure PowerShell használatával.
Feltétel hozzáadása
Használja az Csatlakozás-AzAccount parancsot, és kövesse a megjelenő utasításokat a címtárba szerepköralapú hozzáférés-vezérlési Rendszergazda istratorként való bejelentkezéshez.
Connect-AzAccount
A Get-AzRoleAssignment használatával lekérheti a biztonsági csoporthoz hozzárendelt szerepkör-hozzárendelést.
$groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>
Állítsa be a
Condition
szerepkör-hozzárendelési objektum tulajdonságát. Mindenképpen használja az attribútumkészlet nevét.$groupRoleAssignment.Condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>]))"
Állítsa be a
ConditionVersion
szerepkör-hozzárendelési objektum tulajdonságát.$groupRoleAssignment.ConditionVersion = "2.0"
A Set-AzRoleAssignment használatával frissítse a szerepkör-hozzárendelést.
Set-AzRoleAssignment -InputObject $groupRoleAssignment
A feltétel tesztelése
Egy új PowerShell-ablakban az Csatlakozás-AzAccount paranccsal jelentkezzen be a biztonsági csoport tagjaként.
Connect-AzAccount
A New-AzStorageContext használatával állítsa be a tárfiók környezetét.
$bearerCtx = New-AzStorageContext -StorageAccountName <accountName>
A Get-AzStorageBlob használatával próbálja meg beolvasni a Baker-fájlt.
Get-AzStorageBlob -Container <containerName> -Blob <blobNameBaker> -Context $bearerCtx
NEM lehet olvasni a blobot, és meg kell jelennie egy sikertelen engedélyezési üzenetnek.
Get-AzStorageBlob : This request is not authorized to perform this operation using this permission. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation using this permission. ...
A Get-AzStorageBlob használatával próbálja meg beolvasni a Kaszkádolt fájlt.
Get-AzStorageBlob -Container <containerName> -Blob <blobNameCascade> -Context $bearerCtx You should be able to read the blob. AccountName: <storageAccountName>, ContainerName: <containerName> Name BlobType Length ContentType LastModified AccessTier SnapshotT ime ---- -------- ------ ----------- ------------ ---------- --------- CascadeFile.txt BlockBlob 7 text/plain 2021-04-24 05:35:24Z Hot
Azure CLI
Az Azure CLI-vel szerepkör-hozzárendelési feltételeket is hozzáadhat. Az alábbi parancsok bemutatják, hogyan adhat hozzá feltételeket. További információ : Oktatóanyag: Szerepkör-hozzárendelési feltétel hozzáadása a blobokhoz való hozzáférés korlátozásához az Azure CLI használatával.
Feltétel hozzáadása
Használja az az login parancsot, és kövesse a megjelenő utasításokat a címtárba szerepköralapú hozzáférés-vezérlési Rendszergazda istratorként való bejelentkezéshez.
az login
Az az role assignment list használatával lekérheti a biztonsági csoporthoz hozzárendelt szerepkör-hozzárendelést.
az role assignment list --assignee <groupObjectId> --scope <scope>
Hozzon létre egy JSON-fájlt az alábbi formátumban.
{ "canDelegate": null, "condition": "", "conditionVersion": "", "description": "", "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}", "name": "{roleAssignmentId}", "principalId": "{groupObjectId}", "principalName": "{principalName}", "principalType": "Group", "resourceGroup": "{resourceGroup}", "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1", "roleDefinitionName": "Storage Blob Data Reader", "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}", "type": "Microsoft.Authorization/roleAssignments" }
Frissítse a tulajdonságot
condition
. Mindenképpen használja az attribútumkészlet nevét."condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]))",
Frissítse a tulajdonságot
conditionVersion
."conditionVersion": "2.0",
A szerepkör-hozzárendelés frissítésével adja hozzá a feltételt a szerepkör-hozzárendeléshez.
az role assignment update --role-assignment "./path/roleassignment.json"
A feltétel tesztelése
Egy új parancsablakban az az login paranccsal jelentkezzen be a biztonsági csoport tagjaként.
az login
Az az storage blob show használatával próbálja meg beolvasni a Baker-fájl tulajdonságait.
az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameBaker> --auth-mode login
NEM lehet olvasni a blobot, és meg kell jelennie egy sikertelen engedélyezési üzenetnek.
You do not have the required permissions needed to perform this operation. ...
Az az storage blob show használatával próbálja meg beolvasni a Kaszkádolt fájl tulajdonságait.
az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameCascade> --auth-mode login You should be able to read the blob. { "container": "<containerName>", "content": "", "deleted": false, "encryptedMetadata": null, "encryptionKeySha256": null, "encryptionScope": null, ... }