Blobok olvasási hozzáférésének engedélyezése címkék és egyéni biztonsági attribútumok alapján (előzetes verzió)

Fontos

Az egyéni biztonsági attribútumok jelenleg előzetes verzióban állnak rendelkezésre. A bétaverziójú, előzetes verziójú vagy másként még általánosan nem elérhető Azure-szolgáltatások jogi feltételeit lásd: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Ebből a cikkből 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ételekkel. Ez megkönnyítheti a blobok hozzáférésének 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 az Azure AD-bérlőhöz, a következőre lesz szüksége:

Fontos

Alapértelmezés szerint a globális rendszergazda és más rendszergazdai szerepkörök nem olvasási, definiáló vagy hozzárendelt egyéni biztonsági attribútumokkal rendelkezik. Ha nem teljesíti ezeket az előfeltételeket, a feltételszerkesztőben nem fognak látni rendszerbiztonsági tag/felhasználó attribútumokat.

Feltétel

Ebben a cikkben olvasási hozzáférést engedélyez a blobok számára, ha a felhasználó olyan egyéni biztonsági attribútummal rendelkezik, amely megfelel a blobindex címkének. Ehhez hozzá kell ad egy feltételt a szerepkör-hozzárendeléshez.

Diagram of role assignment with a condition.

Ha például Ön rendelkezik a attribútummal, csak a blobindex címkével Project=BakerProject=Baker rendelkezik a blobok olvasásához. Hasonlóképpen, a Chandra csak a használatával tudja olvasni a Project=Cascade blobokat.

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

A feltétel így néz ki a kódban:

(
 (
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.Read.WithTagConditions'})
 )
 OR 
 (
  @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Engineering_Project] StringEquals @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>]
 )
)

További információ a feltételekről: Mi az az Azure attribútumalapú hozzáférés-vezérlés (Azure ABAC)? (előzetes verzió).

1. lépés: Új egyéni biztonsági attribútum hozzáadása

  1. Jelentkezzen be az Azure Portalra.

  2. Kattintson Azure Active Directory(előzetes verzió) egyéni biztonsági attribútumok lehetőségre.

  3. Adjon hozzá egy nevű Project attribútumot és BakerCascade értékekkel. 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 az Azure AD-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. Az Azure AD-ban hozzon létre egy biztonsági csoportot.

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

  3. Rendelje hozzá Project a attribútumot értékkel a Cascade felhasználóhoz. További információ: Felhasználó egyéni biztonsági attribútumainak hozzárendelése vagy eltávolítása.

    Screenshot of assigning a custom security attribute.

  4. A hozzárendelés mentéshez 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 blobindex-címkék funkcióval. További információ: Blobindex-címkékkel és Azure Blob-adatok kezelése és megkeresése.

  2. Hozzon létre egy új tárolót a tárfiókban, és állítsa a Nyilvános hozzáférési szintet Privát (nincs névtelen hozzáférés) beállításra.

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

  4. Töltse fel a szövegfájlokat a tárolóba, és állítsa be a következő blobindexcímkéket.

    Fájl Kulcs Érték
    Szövegfájl Project Baker
    Kaszkádolt szövegfájl Project Cascade

4. lépés: Storage blobadat-olvasó szerepkör hozzárendelése feltétellel

  1. Nyisson meg egy új lapot, és jelentkezzen be a Azure Portal.

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

  3. Kattintson a Hozzáférés-vezérlés (IAM) elemre.

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

  5. Kattintson aSzerepkör-hozzárendelés hozzáadása elemre.

  6. A Szerepkör lapon válassza a Blobadatok Storage 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őbe írja be a Blobok olvasási hozzáférése mezőt, ha a felhasználó olyan egyéni biztonsági attribútummal rendelkezik, amely megfelel a blobindex címkének.

  9. A Feltételek (nem kötelező) lapon kattintson a Feltétel hozzáadása elemre.

    Megjelenik a Szerepkör-hozzárendelési feltétel hozzáadása lap.

  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élja lesz.

  11. Kattintson a Tartalom olvasása címkefeltételekkel egy blobból lehetőségre, majd kattintson a Kijelölés elemre.

  12. A Build expression (Buildkifejezés) szakaszban kattintson az Add (Hozzáadás) gombra.

  13. Adja meg a következő beállításokat:

    Beállítás Érték
    Attribútumforrás Rendszerbiztonsági tag
    Attribútum <attribútumkészlet > _Project
    Operátor StringEquals
    Beállítás Attribútum
    Attribútumforrás Erőforrás
    Attribútum Blobindex-címkék [Értékek a kulcsban]
    Kulcs Project

    Megjegyzés

    Ha a Rendszerbiztonsági tag nem szerepel beállításként az Attribútumforrásban, győződjön meg arról, hogy az 1. lépés:Új egyéni biztonsági attribútum hozzáadásacímű korábbi, egyéni biztonsági attribútumot adott meg.

    Screenshot of condition using principal attribute displayed in visual editor.

  14. Görgessen fel a Szerkesztő típushoz, és kattintson a Kód elemre.

    A feltételnek az alábbihoz hasonlóan kell kinéznie:

    (
     (
      !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.Read.WithTagConditions'})
     )
     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éshez kattintson a Mentés gombra.

  16. Az Áttekintés + hozzárendelés lapon kattintson az Áttekintés + hozzárendelés elemre a blobadatok Storage szerepkör feltétellel való hozzárendeléséhez.

5. lépés: Olvasó szerepkör hozzárendelése

  • Ismételje meg az előző lépéseket, és rendelje hozzá az Olvasó szerepkört a biztonsági csoporthoz az erőforráscsoport hatókörében.

    Megjegyzés

    Általában nem kell hozzárendelni az Olvasó szerepkört. Ez azonban azért van így, hogy tesztelni tudja a feltételt a Azure Portal.

6. lépés: A feltétel tesztelése

  1. Egy új ablakban nyissa meg a Azure Portal.

  2. Jelentkezzen be az egyéni biztonsági attribútummal létrehozott Project=Cascade 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 az Azure AD felhasználói fiókra van beállítva, és nem a hozzáférési kulcsra.

    Screenshot of storage container with test files.

  5. Kattintson a Szövegfájlra.

    NE tudja megtekinteni vagy letölteni a blobot, és egy engedélyezési sikertelen üzenetet kell megjelenítenie.

  6. Kattintson a Cascade text file (Szövegfájl kaszkádolt) gombjára.

    Most már megtekintheti és letöltheti a blobot.

Azure PowerShell

A szerepkör-hozzárendelési feltételek Azure PowerShell is használhatók. Az alábbi parancsok a feltételek hozzáadását mutatják be. További információ: Oktatóanyag: Szerepkör-hozzárendelési feltétel hozzáadása a blobok hozzáférésének korlátozásához a Azure PowerShell (előzetes verzió) használatával.

Feltétel hozzáadása

  1. Használja a Csatlakozás-AzAccount parancsot, és kövesse a megjelenő utasításokat a címtárba felhasználói hozzáférés-rendszergazdaként vagy tulajdonosként való bejelentkezéshez.

    Connect-AzAccount
    
  2. A Get-AzRoleAssignment használatával szerezze be a biztonsági csoporthoz rendelt szerepkör-hozzárendelést.

    $groupRoleAssignment = Get-AzRoleAssignment -ObjectId <groupObjectId> -Scope <scope>
    
  3. Állítsa be Condition a szerepkör-hozzárendelési objektum tulajdonságát. Győződjön meg arról, hogy az attribútumkészlet nevét használja.

    $groupRoleAssignment.Condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.Read.WithTagConditions' })) 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 ConditionVersion a szerepkör-hozzárendelési objektum tulajdonságát.

    $groupRoleAssignment.ConditionVersion = "2.0"
    
  5. A Szerepkör-hozzárendelés frissítése a Set-AzRoleAssignment használatával.

    Set-AzRoleAssignment -InputObject $groupRoleAssignment
    

A feltétel tesztelése

  1. Egy új PowerShell-ablakban a 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 File-t.

    Get-AzStorageBlob -Container <containerName> -Blob <blobNameBaker> -Context $bearerCtx
    

    Nem olvashatja el a blobot, és megjelenik egy sikertelen engedélyezési üzenet.

    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 Cascade 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-t szerepkör-hozzárendelési feltételek hozzáadására is használhatja. Az alábbi parancsok a feltételek hozzáadását mutatják be. További információ: Oktatóanyag: Szerepkör-hozzárendelési feltétel hozzáadása a blobok hozzáférésének korlátozásához az Azure CLI (előzetes verzió) használatával.

Feltétel hozzáadása

  1. Használja az az login parancsot, és kövesse a megjelenő utasításokat, hogy felhasználói hozzáférés-rendszergazdaként vagy tulajdonosként jelentkezzen be a címtárba.

    az login
    
  2. Az az role assignment list használatával lekérte a biztonsági csoporthoz 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 condition tulajdonságot. Győződjön meg arról, hogy az attribútumkészlet nevét használja.

    "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND SubOperationMatches{'Blob.Read.WithTagConditions' })) 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 conditionVersion tulajdonságot.

    "conditionVersion": "2.0",
    
  6. Az az role assignment update használatával 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 parancs használatával próbálja meg beolvasni a Tulajdonság fájl tulajdonságait.

    az storage blob show --account-name <storageAccountName> --container-name <containerName> --name <blobNameBaker> --auth-mode login
    

    Nem olvashatja el a blobot, és megjelenik egy sikertelen engedélyezési üzenet.

    You do not have the required permissions needed to perform this operation.
    ...
    
  3. Az az storage blob show parancs használatával próbálja meg beolvasni a Cascade 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,
    ...
    }
    

Következő lépések