Tárfiókkulcsok kezelése a Key Vault és az Azure PowerShell használatával (örökölt)

Fontos

A Key Vault felügyelt tárfiókkulcsai (örökölt) támogatottak, és nincs több tervezett frissítés. Csak a fiók sasa támogatott az SAS-definíciók aláírt tárolási szolgáltatásának legkésőbb 2018.03.28-i verziójával.

Fontos

Javasoljuk, hogy használja az Azure Storage-integrációt a Microsoft Entra ID-val, a Microsoft felhőalapú identitás- és hozzáférés-kezelési szolgáltatásával. A Microsoft Entra-integráció azure-blobokhoz és üzenetsorokhoz érhető el, és OAuth2-jogkivonat-alapú hozzáférést biztosít az Azure Storage-hoz (csakúgy, mint az Azure Key Vaulthoz). A Microsoft Entra ID lehetővé teszi az ügyfélalkalmazás hitelesítését egy alkalmazás vagy egy felhasználói identitás használatával a tárfiók hitelesítő adatai helyett. Az Azure-ban való futtatáskor Microsoft Entra által felügyelt identitást is használhat. A felügyelt identitások nem igénylik az ügyfél-hitelesítést és a hitelesítő adatok tárolását az alkalmazásban vagy az alkalmazással. Ezt a megoldást csak akkor használja, ha a Microsoft Entra-hitelesítés nem lehetséges.

Az Azure Storage-fiókok egy fióknevet és egy kulcsot tartalmazó hitelesítő adatokat használnak. A kulcs automatikusan jön létre, és nem titkosítási kulcsként, hanem jelszóként szolgál. A Key Vault úgy kezeli a tárfiók kulcsait, hogy rendszeresen újragenerálja őket a tárfiókban, és megosztott hozzáférésű aláírási jogkivonatokat biztosít a tárfiók erőforrásaihoz való delegált hozzáféréshez.

A Key Vault által felügyelt tárfiók kulcsfunkciójával listázhatja (szinkronizálhatja) a kulcsokat egy Azure-tárfiókkal, és rendszeresen újragenerálhatja (elforgathatja) a kulcsokat. A tárfiókok és a klasszikus tárfiókok kulcsait is kezelheti.

A felügyelt tárfiók kulcs funkciójának használatakor vegye figyelembe a következő szempontokat:

  • A rendszer soha nem ad vissza kulcsértékeket hívó válaszként.
  • Csak a Key Vault kezelje a tárfiókkulcsokat. Ne kezelje saját maga a kulcsokat, és ne zavarja a Key Vault-folyamatokat.
  • Csak egyetlen Key Vault-objektum kezelje a tárfiókkulcsokat. Ne engedélyezze a kulcskezelést több objektumból.
  • Kulcsok újragenerálása csak a Key Vault használatával. Ne hozza létre manuálisan a tárfiókkulcsokat.

Fontos

A kulcs közvetlenül a tárfiókban való újragenerálása megszakítja a felügyelt tárfiókok beállítását, és érvénytelenítheti a használatban lévő SAS-jogkivonatokat, és leállást okozhat.

Megjegyzés:

We recommend that you use the Azure Az PowerShell module to interact with Azure. See Install Azure PowerShell to get started. To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Egyszerű szolgáltatásalkalmazás azonosítója

A Microsoft Entra-bérlő minden regisztrált alkalmazást szolgáltatásnévvel biztosít. A szolgáltatásnév az alkalmazásazonosító, amelyet az engedélyezési beállítás során használnak más Azure-erőforrások Azure RBAC-en keresztüli eléréséhez.

A Key Vault egy Olyan Microsoft-alkalmazás, amely minden Microsoft Entra-bérlőben elő van regisztrálva. A Key Vault minden Azure-felhőben ugyanazzal az alkalmazásazonosítóval van regisztrálva.

Bérlők Felhőbeli Application ID
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Azure – nyilvános cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Egyéb Bármelyik cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Előfeltételek

Az útmutató elvégzéséhez először a következőket kell tennie:

Manage storage account keys

Csatlakozás az Azure-fiókhoz

Hitelesítse a PowerShell-munkamenetet az Csatlakozás-AzAccount parancsmaggal.

Connect-AzAccount

Ha több Azure-előfizetéssel rendelkezik, listázhatja őket a Get-AzSubscription parancsmaggal, és megadhatja a Set-AzContext parancsmaggal használni kívánt előfizetést.

Set-AzContext -SubscriptionId <subscriptionId>

Változók beállítása

Először állítsa be a PowerShell-parancsmagok által használandó változókat az alábbi lépésekben. Frissítse a "YourResourceGroupName", a "YourStorageAccountName" és a "YourKeyVaultName" helyőrzőket, és állítsa $keyVaultSpAppId cfa8b339-82a2-471a-a3c9-0fc0be7a4093 (a szolgáltatásnév alkalmazásazonosítójában megadottak szerint).

Az Azure PowerShell Get-AzContext és a Get-AzStorageAccount parancsmagokkal is lekérhetjük a felhasználói azonosítót és az Azure Storage-fiók környezetét.

$resourceGroupName = <YourResourceGroupName>
$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>
$keyVaultSpAppId = "cfa8b339-82a2-471a-a3c9-0fc0be7a4093"
$storageAccountKey = "key1" #(key1 or key2 are allowed)

# Get your User Id
$userId = (Get-AzContext).Account.Id

# Get a reference to your Azure storage account
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName

Megjegyzés:

Klasszikus tárfiók esetén használja az "elsődleges" és a "másodlagos" $storageAccountKey
A Get-AzResource -Name "ClassicStorageAccountName" -ResourceGroupName $resourceGroupName" helyett használja a "Get-AzStorageAccount" kifejezést a klasszikus tárfiókhoz

Key Vault-hozzáférés biztosítása a tárfiókhoz

Ahhoz, hogy a Key Vault hozzáférhessen a tárfiók kulcsaihoz és kezelje azt, engedélyeznie kell a tárfiókhoz való hozzáférést. A Key Vault-alkalmazás engedélyekkel rendelkezik a tárfiók kulcsainak listázásához és újragenerálásához . Ezeket az engedélyeket az Azure beépített szerepköre, a Storage-fiókkulcs-kezelő szolgáltatásszerepköre engedélyezi.

Rendelje hozzá ezt a szerepkört a Key Vault szolgáltatásnévhez, és korlátozza a tárfiók hatókörét az Azure PowerShell New-AzRoleAssignment parancsmag használatával.

# Assign Azure role "Storage Account Key Operator Service Role" to Key Vault, limiting the access scope to your storage account. For a classic storage account, use "Classic Storage Account Key Operator Service Role."
New-AzRoleAssignment -ApplicationId $keyVaultSpAppId -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope $storageAccount.Id

Sikeres szerepkör-hozzárendelés esetén a következő példához hasonló kimenetnek kell megjelennie:

RoleAssignmentId   : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso/providers/Microsoft.Authorization/roleAssignments/189cblll-12fb-406e-8699-4eef8b2b9ecz
Scope              : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
DisplayName        : Azure Key Vault
SignInName         :
RoleDefinitionName : storage account Key Operator Service Role
RoleDefinitionId   : 81a9662b-bebf-436f-a333-f67b29880f12
ObjectId           : 93c27d83-f79b-4cb2-8dd4-4aa716542e74
ObjectType         : ServicePrincipal
CanDelegate        : False

Ha a Key Vault már hozzá lett adva a tárfiókhoz tartozó szerepkörhöz, "A szerepkör-hozzárendelés már létezik" . Hiba. A szerepkör-hozzárendelést az Azure Portal "Hozzáférés-vezérlés (IAM)" lapján is ellenőrizheti.

Felhasználói fiók engedélyének megadása felügyelt tárfiókokhoz

Az Azure PowerShell Set-AzKeyVaultAccessPolicy parancsmaggal frissítse a Key Vault hozzáférési szabályzatát, és adjon tárfiók-engedélyeket a felhasználói fiókjának.

# Give your user principal access to all storage account permissions, on your Key Vault instance

Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -UserPrincipalName $userId -PermissionsToStorage get, list, delete, set, update, regeneratekey, getsas, listsas, deletesas, setsas, recover, backup, restore, purge

A tárfiókokra vonatkozó engedélyek nem érhetők el az Azure Portal tárfiókjának "Hozzáférési szabályzatok" lapján.

Felügyelt tárfiók hozzáadása a Key Vault-példányhoz

Az Azure PowerShell Add-AzKeyVaultManagedStorageAccount parancsmaggal hozzon létre egy felügyelt tárfiókot a Key Vault-példányban. A -DisableAutoRegenerateKey kapcsoló nem adja meg a tárfiók kulcsainak újragenerálását.

# Add your storage account to your Key Vault's managed storage accounts

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -DisableAutoRegenerateKey

A tárfiók kulcsregenerálás nélküli sikeres hozzáadásakor a következő példához hasonló kimenetnek kell megjelennie:

Id                  : https://kvcontoso.vault.azure.net:443/storage/sacontoso
Vault Name          : kvcontoso
AccountName         : sacontoso
Account Resource Id : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
Active Key Name     : key1
Auto Regenerate Key : False
Regeneration Period : 90.00:00:00
Enabled             : True
Created             : 11/19/2018 11:54:47 PM
Updated             : 11/19/2018 11:54:47 PM
Tags                :

Kulcsregeneráció engedélyezése

Ha azt szeretné, hogy a Key Vault rendszeresen újragenerálja a tárfiókkulcsokat, az Azure PowerShell Add-AzKeyVaultManagedStorageAccount parancsmaggal beállíthat egy újragenerálási időszakot. Ebben a példában egy 30 napos regenerációs időszakot állítunk be. Amikor el kell forgatni, a Key Vault újragenerálja az inaktív kulcsot, majd aktívként állítja be az újonnan létrehozott kulcsot. Az SAS-jogkivonatok kiállításához használt kulcs az aktív kulcs.

$regenPeriod = [System.Timespan]::FromDays(30)

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -RegenerationPeriod $regenPeriod

A tárfiók kulcsregenerálással történő sikeres hozzáadása után a következő példához hasonló kimenetnek kell megjelennie:

Id                  : https://kvcontoso.vault.azure.net:443/storage/sacontoso
Vault Name          : kvcontoso
AccountName         : sacontoso
Account Resource Id : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
Active Key Name     : key1
Auto Regenerate Key : True
Regeneration Period : 30.00:00:00
Enabled             : True
Created             : 11/19/2018 11:54:47 PM
Updated             : 11/19/2018 11:54:47 PM
Tags                :

Közös hozzáférésű jogosultságkód-jogkivonatok

Megkérheti a Key Vaultot is, hogy hozzon létre közös hozzáférésű jogosultságkód-jogkivonatokat. A megosztott hozzáférésű jogosultságkód delegált hozzáférést biztosít a tárfiók erőforrásaihoz. A fiókkulcsok megosztása nélkül hozzáférést biztosíthat az ügyfeleknek a tárfiók erőforrásaihoz. A megosztott hozzáférésű jogosultságkódokkal biztonságos módon oszthatja meg a tárerőforrásokat anélkül, hogy a fiókkulcsokat veszélyeztetné.

Az ebben a szakaszban található parancsok a következő műveleteket hajtják végre:

  • Fiók közös hozzáférésű jogosultságkód-definíciójának beállítása.
  • Állítsa be a Key Vault által felügyelt tár megosztott hozzáférésű jogosultságkód-definícióját a tárolóban. A definíció tartalmazza a létrehozott közös hozzáférésű jogosultságkód jogkivonatának sablon URI-ját. A definíció a közös hozzáférésű jogosultságkód típusával account rendelkezik, és N napig érvényes.
  • Ellenőrizze, hogy a közös hozzáférésű jogosultságkód titkos kulcsként lett-e mentve a kulcstartóban.

Változók beállítása

Először állítsa be a PowerShell-parancsmagok által használandó változókat az alábbi lépésekben. Mindenképpen frissítse a YourStorageAccountName> és <a <YourKeyVaultName> helyőrzőket.

$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>

Közös hozzáférésű jogosultságkód definíciós sablonjának definiálása

A Key Vault SAS-definíciós sablonnal hoz létre jogkivonatokat az ügyfélalkalmazásokhoz.

PÉLDA SAS-definíciós sablonra:

$sasTemplate="sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

A Key Vault sasdefiníciós sablonjában szükséges fiók SAS-paraméterek

SAS-lekérdezési paraméter Leírás
SignedVersion (sv) Szükséges. Megadja a társzolgáltatás aláírt verzióját, amellyel engedélyezheti a fiók SAS-jével érkező kéréseket. A 2015-04-05-ös vagy újabb verzióra kell állítani. A Key Vault legkésőbb 2018.03.28-ra támogatja a verziókat
SignedServices (ss) Szükséges. Megadja a fiók SAS-jével elérhető aláírt szolgáltatásokat. Lehetséges értékek:

- Blob (b)
- Üzenetsor (q)
- Táblázat (t)
- Fájl (f)

Az értékeket kombinálva több szolgáltatáshoz is hozzáférést biztosíthat. Megadja például a ss=bf blob- és fájlvégpontokhoz való hozzáférést.
SignedResourceTypes (srt) Szükséges. Megadja a fiók SAS-jével elérhető aláírt erőforrástípusokat.

- Szolgáltatás (s): Hozzáférés a szolgáltatásszintű API-khoz (például szolgáltatástulajdonságok lekérése/beállítása, szolgáltatásstatisztikák lekérése, tárolók listázása/üzenetsorok/táblák/megosztások)
- Tároló (c): Hozzáférés a tárolószintű API-khoz (például Tároló létrehozása/törlése, Üzenetsor létrehozása/törlése, Tábla létrehozása/törlése, Megosztás létrehozása/törlése, Blobok/fájlok és könyvtárak listázása)
- Objektum (o): Hozzáférés az objektumszintű API-khoz blobokhoz, üzenetsor-üzenetekhez, táblaentitásokhoz és fájlokhoz (például Blob elhelyezése, Lekérdezési entitás, Üzenetek lekérése, Fájl létrehozása stb.)

Az értékeket kombinálva több erőforrástípushoz is hozzáférést biztosíthat. Megadja például a srt=sc szolgáltatás- és tárolóerőforrásokhoz való hozzáférést.
SignedPermission (sp) Szükséges. Megadja a fiók SAS-azonosítójához tartozó aláírt engedélyeket. Az engedélyek csak akkor érvényesek, ha megfelelnek a megadott aláírt erőforrástípusnak; ellenkező esetben a rendszer figyelmen kívül hagyja őket.

- Olvasás (r): Az összes aláírt erőforrástípusra (szolgáltatás, tároló és objektum) érvényes. Engedélyezi az olvasási engedélyeket a megadott erőforrástípushoz.
- Írás (w): Érvényes az összes aláírt erőforrástípusra (szolgáltatás, tároló és objektum). Engedélyezi az írási engedélyeket a megadott erőforrástípushoz.
- Törlés (d): Tároló- és objektumerőforrás-típusok esetén érvényes, kivéve az üzenetsor-üzeneteket.
- Végleges törlés (y): Csak a Blob objektumerőforrás-típusára érvényes.
- Lista (l): Csak a szolgáltatás- és tárolóerőforrás-típusokra érvényes.
- Hozzáadás (a): Csak a következő objektumerőforrás-típusokra érvényes: üzenetsor-üzenetek, táblaentitások és hozzáfűző blobok.
- Létrehozás (c): Csak a következő objektumerőforrás-típusokra érvényes: blobok és fájlok. A felhasználók új blobokat vagy fájlokat hozhatnak létre, de nem írhatják felül a meglévő blobokat vagy fájlokat.
- Frissítés (u): Csak a következő objektumerőforrás-típusokra érvényes: üzenetsor-üzenetek és táblaentitások.
- Folyamat (p): Csak a következő objektumerőforrás-típusra érvényes: üzenetsor-üzenetek.
- Címke (t): Csak a következő objektumerőforrás-típusra érvényes: blobok. Engedélyezi a blobcímkék műveleteit.
- Szűrő (f): Csak a következő objektumerőforrás-típusra érvényes: blob. Engedélyezi a blobcímke szerinti szűrést.
- Módosíthatatlansági szabályzat beállítása (i): Csak a következő objektumerőforrás-típusra érvényes: blob. Engedélyezi a nem módosíthatósági szabályzat beállítását és törlését, valamint a blobok jogi visszatartást.
SignedProtocol (spr) Opcionális. Megadja az SAS-fiókkal küldött kérésekhez engedélyezett protokollt. Lehetséges értékek a HTTPS és a HTTP (https,http) vagy a HTTPS (httpscsak). The default value is https,http.

A HTTP csak nem engedélyezett érték.

További információ a fiók SAS-járól: Fiók SAS létrehozása

Megjegyzés:

A Key Vault figyelmen kívül hagyja az olyan élettartam-paramétereket, mint az "Aláírt lejárat", az "Aláírt kezdés" és a 2018-03-28-s verzió után bevezetett paraméterek

Közös hozzáférésű jogosultságkód definíciójának beállítása a Key Vaultban

Az Azure PowerShell Set-AzKeyVaultManagedStorageSasDefinition parancsmaggal hozzon létre egy közös hozzáférésű jogosultságkód-definíciót. A paraméterhez megadhatja a választott -Name nevet.

Set-AzKeyVaultManagedStorageSasDefinition -AccountName $storageAccountName -VaultName $keyVaultName -Name <YourSASDefinitionName> -TemplateUri $sasTemplate -SasType 'account' -ValidityPeriod ([System.Timespan]::FromDays(1))

A közös hozzáférésű jogosultságkód definíciójának ellenőrzése

Az Azure PowerShell Get-AzKeyVaultSecret parancsmaggal ellenőrizheti, hogy a megosztott hozzáférésű jogosultságkód definíciója a kulcstartóban lett-e tárolva.

Először keresse meg a közös hozzáférésű jogosultságkód definícióját a kulcstartóban.

Get-AzKeyVaultSecret -VaultName <YourKeyVaultName>

Az SAS-definíciónak megfelelő titkos kód a következő tulajdonságokkal rendelkezik:

Vault Name   : <YourKeyVaultName>
Name         : <SecretName>
...
Content Type : application/vnd.ms-sastoken-storage
Tags         :

Mostantól a Get-AzKeyVaultSecret parancsmaggal és Name paraméterekkel VaultName megtekintheti a titkos kód tartalmát.

$secretValueText = Get-AzKeyVaultSecret -VaultName <YourKeyVaultName> -Name <SecretName> -AsPlainText
Write-Output $secretValueText

A parancs kimenete megjeleníti az SAS-definíciós sztringet.

Következő lépések