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:

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.

Diagram of role assignment with a condition.

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

Diagram showing read access to blobs based on tags and custom security attributes.

Í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

  1. Jelentkezzen be az Azure Portalra.

  2. Kattintson a Microsoft Entra ID>Custom biztonsági attribútumokra.

  3. Adjon hozzá egy attribútumotProject, amely az és Cascadea Baker . 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.

    Screenshot of adding a custom security attribute.

2. lépés: Az egyéni biztonsági attribútum hozzárendelése egy felhasználóhoz

  1. A Microsoft Entra ID-ban hozzon létre egy biztonsági csoportot.

  2. Adjon hozzá egy felhasználót a csoport tagjaként.

  3. Rendelje hozzá az Project attribútumot a felhasználóhoz egy értékkel Cascade . 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.

    Screenshot of assigning a custom security attribute.

  4. A feladat mentéséhez kattintson a Mentés gombra.

3. lépés: Tároló- és blobindexcímkék beállítása

  1. 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.

  2. 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).

  3. Állítsa be a hitelesítési típust Azure AD-felhasználói fiókra.

  4. 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

  1. Nyisson meg egy új lapot, és jelentkezzen be az Azure Portalra.

  2. Nyissa meg a tárfiókot tartalmazó erőforráscsoportot.

  3. Click Access control (IAM).

  4. Kattintson a Szerepkör-hozzárendelések fülre a szerepkör-hozzárendelések ebben a hatókörben való megtekintéséhez.

  5. Kattintson a Szerepkör-hozzárendelés hozzáadása elemre>.

  6. A Szerepkör lapon válassza a Storage Blob Adatolvasó szerepkört.

  7. A Tagok lapon válassza ki a korábban létrehozott biztonsági csoportot.

  8. (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.

  9. 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.

  10. 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.

  11. Kattintson a Blob olvasása, majd a Kijelölés gombra.

  12. A Kifejezés összeállítása szakaszban kattintson a Hozzáadás gombra.

  13. 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.

    Screenshot of condition using principal attribute displayed in visual editor.

  14. 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$>]
     )
    )
    
  15. A feltétel mentéséhez kattintson a Mentés gombra.

  16. 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

  1. Egy új ablakban nyissa meg az Azure Portalt.

  2. Jelentkezzen be az egyéni biztonsági attribútummal Project=Cascade létrehozott felhasználóként.

  3. Nyissa meg a létrehozott tárfiókot és tárolót.

  4. 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.

    Screenshot of storage container with test files.

  5. Kattintson a Baker szövegfájlra.

    Nem lehet megtekinteni vagy letölteni a blobot, és meg kell jelennie egy sikertelen engedélyezési üzenetnek.

  6. 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

  1. 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
    
  2. 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>
    
  3. Á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`$>]))"
    
  4. Állítsa be a ConditionVersion szerepkör-hozzárendelési objektum tulajdonságát.

    $groupRoleAssignment.ConditionVersion = "2.0"
    
  5. A Set-AzRoleAssignment használatával frissítse a szerepkör-hozzárendelést.

    Set-AzRoleAssignment -InputObject $groupRoleAssignment
    

A feltétel tesztelése

  1. Egy új PowerShell-ablakban az Csatlakozás-AzAccount paranccsal jelentkezzen be a biztonsági csoport tagjaként.

    Connect-AzAccount
    
  2. A New-AzStorageContext használatával állítsa be a tárfiók környezetét.

    $bearerCtx = New-AzStorageContext -StorageAccountName <accountName>
    
  3. 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.
    ...
    
  4. 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

  1. 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
    
  2. 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>
    
  3. 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"
    }
    
  4. 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$>]))",
    
  5. Frissítse a tulajdonságot conditionVersion .

    "conditionVersion": "2.0",
    
  6. 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

  1. Egy új parancsablakban az az login paranccsal jelentkezzen be a biztonsági csoport tagjaként.

    az login
    
  2. 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.
    ...
    
  3. 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,
    ...
    }
    

További lépések