Każde zapytanie do magazynu wymaga identyfikacji użytkownika. Istnieje wiele technik kontroli dostępu do obiektów w storage.
Jednym z typów identyfikacji użytkownika próbującego uzyskać dostęp do magazynu są klucze identyfikacyjne. Klucze do każdego magazynu można odnaleźć w portalu Azure:
[Storage Account] -> Settings -> Access Keys
Każde konto storage ma dwa klucze: primary i secondary. Klucze są dwa ponieważ w czasie resetu i ponownego generowania (New-AzureRmSttorageAccountKey
) klucza primary możemy korzystać z klucza secondary i tym samym mieć nieprzerwany dostęp do zasobów magazynu.
1 |
PS C:\> New-AzureRmStorageKey -ResourceGroupName "MyResourceGroup" -Name "mystorageaccount" -KeyName "key1" |
Encrypt keys by using Azure Key Vault integration
Mechanizmem, który pozwala szyfrować klucze, pliki .pfx oraz hasła jest Azure Key Vault. Poniżej przykład jak utworzyć Azure Key Vault i bezpiecznie składować w nim w klucze.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$vaultName="MyKeyVault001" $rgName="RG01" $location="West Europe" $keyName="Key01" $secretName="Miro" $storageAccount="mystorageaccount0002" # Creating key vault New-AzureRmKeyVault -VaultName $vaultName -ResourceGroupName $rgName -Location $location # Creating software managed key $key=Add-AzureKeyVaultKey -VaultName $vaultName -Name $keyName -Destination 'Software' # Retrieve the storage accounnt key $storageKey = Get-AzureRmStorageAccountKey -ResourceGroupName $rgName -Name $storageAccount # Convert the secret to a secure string $secretValue = ConvertTo-SecureString $storageKey[0].Value -AsPlainText -Force # Set the secret value $secret = Set-AzureKeyVaultSecret -VaultName $vaultName -Name $secretName -SecretValue $secretvalue |
Creating, and using, shared access signatures
Shared Access Signatures (SAS) to mechanizm przyznawania dostępu do konkrentnych zasobów (konternerów, blobsów, kolejek i tabel) konta storage zamiast do całego konta. Przez przekazanie URLa SAS można pozwolić klientom na uzyskanie przez nich dostępu do zasobu przez określony czas i określonymi prawami dostępu.
Tokeny SAS można wygenerować w Azure Storage Explorerze klikając prawym przyciskiem myszy na wybranym kontenerze i wybierając z menu kontekstowego Get Shared Access Signature.
To samo można także zrobić w PoweShellu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$storageAccount = "mystorageaccount0002" $rgName="RG01" $container="mycontainer02" $storageKey = Get-AzureRmStorageAccountKey -ResourceGroupName $rgName -Name $storageAccount $context = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageKey[0].Value $startTime = Get-Date $endTime = $startTime.AddHours(4) New-AzureStorageBlobSASToken -Container $container ` -Blob "document.txt" ` -Permission "rwd" ` -StartTime $startTime ` -ExpiryTime $endTime ` -Context $context |
Wygenerowany token SAS:
1 |
?sv=2017-07-29&sr=b&sig=s1IN7v163Lgu91hvBx%2BTFJr3q%2FWBp9Glb08VJmgI4cI%3D&st=2018-08-22T16%3A24%3A56Z&se=2018-08-22T20%3A24%3A56Z&sp=rwd |
Adres URL do bloba “document.txt”
https://mystorageaccount0002.blob.core.windows.net/mycontainer02/document.txt
Adresu URL z dodanym tokenem:
https://mystorageaccount0002.blob.core.windows.net/mycontainer02/document.txt?sv=2017-07-29&sr=b&sig=s1IN7v163Lgu91hvBx%2BTFJr3q%2FWBp9Glb08VJmgI4cI%3D&st=2018-08-22T16%3A24%3A56Z&se=2018-08-22T20%3A24%3A56Z&sp=rwd
Using a stored access policy
Stored access policies pozwalają na jeszcze większą kontrolę przyznawania dostępu do magazynu przy użyciu tokenów SAS. Przy użyciu stored access policy po wygenerowaniu tokena SAS możesz dodatkowo:
- Zmienić początek i koniec ważności sygnatury
- Kontrolować uprawnienia przyznane dla sygnatury
- Odwołać dostęp
Reguły polityki dostępu można kreować w portalu Azure klikając:
[storage account] -> [blobs] -> Wybieramy kontener -> Access policy -> Add policy
Zamiast blobs można wybrać też inną usługę (np. Files).
Reguły polityki dostępu można także dodawać w Azure Storage Explorerze klikając prawym przyciskiem myszy na wybranym kontenerze i wybierając z menu kontekstowego Manage Access Policies.
Więcej o SAS i stored access policy:
https://docs.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1