{"id":2321,"date":"2018-08-22T11:48:29","date_gmt":"2018-08-22T09:48:29","guid":{"rendered":"http:\/\/miroslaw.borodziuk.eu\/?p=2321"},"modified":"2018-08-22T20:57:50","modified_gmt":"2018-08-22T18:57:50","slug":"zarzadzanie-dostepem","status":"publish","type":"post","link":"http:\/\/miro.borodziuk.eu\/index.php\/2018\/08\/22\/zarzadzanie-dostepem\/","title":{"rendered":"Zarz\u0105dzanie dost\u0119pem do magazynu"},"content":{"rendered":"<p>Ka\u017cde zapytanie do magazynu wymaga identyfikacji u\u017cytkownika. Istnieje wiele technik kontroli dost\u0119pu do obiekt\u00f3w w storage.<\/p>\n<p><!--more--><\/p>\n<p>Jednym z typ\u00f3w identyfikacji u\u017cytkownika pr\u00f3buj\u0105cego uzyska\u0107 dost\u0119p do magazynu s\u0105 klucze identyfikacyjne. Klucze do ka\u017cdego magazynu mo\u017cna odnale\u017a\u0107 w portalu Azure:<\/p>\n<p><em><code>[Storage Account] -&gt; Settings -&gt; Access Keys<\/code><\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2326\" src=\"http:\/\/miroslaw.borodziuk.eu\/wp-content\/uploads\/Azure-Storage-keys.jpg\" alt=\"\" width=\"973\" height=\"388\" srcset=\"http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/Azure-Storage-keys.jpg 973w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/Azure-Storage-keys-300x120.jpg 300w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/Azure-Storage-keys-768x306.jpg 768w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Ka\u017cde konto storage ma dwa klucze:\u00a0 primary i secondary. Klucze s\u0105 dwa poniewa\u017c w czasie resetu i ponownego generowania (<code>New-AzureRmSttorageAccountKey<\/code>) klucza primary mo\u017cemy korzysta\u0107 z klucza secondary i tym samym mie\u0107 nieprzerwany dost\u0119p do zasob\u00f3w magazynu.<\/p>\n<pre class=\"lang:ps decode:true\">PS C:\\&gt; New-AzureRmStorageKey -ResourceGroupName \"MyResourceGroup\" -Name \"mystorageaccount\" -KeyName \"key1\"<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Encrypt keys by using Azure Key Vault integration<\/span><\/p>\n<p>Mechanizmem, kt\u00f3ry pozwala szyfrowa\u0107 klucze, pliki .pfx oraz has\u0142a jest <em>Azure Key Vault.<\/em>\u00a0 Poni\u017cej przyk\u0142ad jak utworzy\u0107 <em>Azure Key Vault<\/em> i bezpiecznie sk\u0142adowa\u0107 w nim w klucze.<\/p>\n<pre class=\"lang:ps decode:true \">$vaultName=\"MyKeyVault001\"\r\n$rgName=\"RG01\"\r\n$location=\"West Europe\"\r\n$keyName=\"Key01\"\r\n$secretName=\"Miro\"\r\n$storageAccount=\"mystorageaccount0002\"\r\n\r\n# Creating key vault\r\nNew-AzureRmKeyVault -VaultName $vaultName -ResourceGroupName $rgName -Location $location\r\n\r\n# Creating software managed key\r\n$key=Add-AzureKeyVaultKey -VaultName $vaultName -Name $keyName -Destination 'Software'\r\n\r\n# Retrieve the storage accounnt key\r\n$storageKey = Get-AzureRmStorageAccountKey -ResourceGroupName $rgName -Name $storageAccount\r\n\r\n# Convert the secret to a secure string\r\n$secretValue = ConvertTo-SecureString $storageKey[0].Value -AsPlainText -Force\r\n\r\n# Set the secret value\r\n$secret = Set-AzureKeyVaultSecret -VaultName $vaultName -Name $secretName -SecretValue $secretvalue<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\"> Creating, and using, shared access signatures<\/span><\/p>\n<p>Shared Access Signatures (SAS) to mechanizm przyznawania dost\u0119pu do konkrentnych zasob\u00f3w (konterner\u00f3w, blobs\u00f3w, kolejek i tabel) konta storage zamiast do ca\u0142ego konta. Przez przekazanie URLa SAS mo\u017cna pozwoli\u0107 klientom na uzyskanie przez nich dost\u0119pu do zasobu przez okre\u015blony czas i okre\u015blonymi prawami dost\u0119pu.<\/p>\n<p>Tokeny SAS mo\u017cna wygenerowa\u0107 w <em>Azure Storage Explorerze<\/em> klikaj\u0105c prawym przyciskiem myszy na wybranym kontenerze i wybieraj\u0105c z menu kontekstowego <code>Get Shared Access Signature.<\/code><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2332 aligncenter\" src=\"http:\/\/miroslaw.borodziuk.eu\/wp-content\/uploads\/SAS-1.jpg\" alt=\"\" width=\"488\" height=\"543\" srcset=\"http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/SAS-1.jpg 488w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/SAS-1-270x300.jpg 270w\" sizes=\"(max-width: 488px) 100vw, 488px\" \/><\/p>\n<p>To samo mo\u017cna tak\u017ce zrobi\u0107 w PoweShellu.<\/p>\n<pre class=\"lang:ps decode:true\">$storageAccount = \"mystorageaccount0002\"\r\n$rgName=\"RG01\"\r\n$container=\"mycontainer02\"\r\n$storageKey = Get-AzureRmStorageAccountKey -ResourceGroupName $rgName -Name $storageAccount\r\n$context = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageKey[0].Value\r\n\r\n$startTime = Get-Date\r\n$endTime = $startTime.AddHours(4)\r\nNew-AzureStorageBlobSASToken -Container $container `\r\n-Blob \"document.txt\" `\r\n-Permission \"rwd\" `\r\n-StartTime $startTime `\r\n-ExpiryTime $endTime `\r\n-Context $context<\/pre>\n<p>Wygenerowany token SAS:<\/p>\n<pre class=\"lang:sh decode:true\">?sv=2017-07-29&amp;sr=b&amp;sig=s1IN7v163Lgu91hvBx%2BTFJr3q%2FWBp9Glb08VJmgI4cI%3D&amp;st=2018-08-22T16%3A24%3A56Z&amp;se=2018-08-22T20%3A24%3A56Z&amp;sp=rwd<\/pre>\n<p>Adres URL do bloba &#8220;document.txt&#8221;<\/p>\n<p><a href=\"https:\/\/mystorageaccount0002.blob.core.windows.net\/mycontainer02\/document.txt\"><code>https:\/\/mystorageaccount0002.blob.core.windows.net\/mycontainer02\/document.txt<\/code><\/a><\/p>\n<p>Adresu URL z dodanym tokenem:<\/p>\n<p><code>https:\/\/mystorageaccount0002.blob.core.windows.net\/mycontainer02\/document.txt?sv=2017-07-29&amp;sr=b&amp;sig=s1IN7v163Lgu91hvBx%2BTFJr3q%2FWBp9Glb08VJmgI4cI%3D&amp;st=2018-08-22T16%3A24%3A56Z&amp;se=2018-08-22T20%3A24%3A56Z&amp;sp=rwd<\/code><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Using a stored access policy<\/span><\/p>\n<p>Stored access policies pozwalaj\u0105 na jeszcze wi\u0119ksz\u0105 kontrol\u0119 przyznawania dost\u0119pu do magazynu przy u\u017cyciu token\u00f3w SAS. Przy u\u017cyciu stored access policy po wygenerowaniu tokena SAS mo\u017cesz dodatkowo:<\/p>\n<ul>\n<li>Zmieni\u0107 pocz\u0105tek i koniec wa\u017cno\u015bci sygnatury<\/li>\n<li>Kontrolowa\u0107 uprawnienia przyznane dla sygnatury<\/li>\n<li>Odwo\u0142a\u0107 dost\u0119p<\/li>\n<\/ul>\n<p>Regu\u0142y polityki dost\u0119pu mo\u017cna kreowa\u0107 w portalu Azure klikaj\u0105c:<\/p>\n<p><em><code>[storage account] -&gt; [blobs] -&gt; Wybieramy kontener -&gt; Access policy -&gt; Add policy<\/code><\/em><\/p>\n<p>Zamiast blobs mo\u017cna wybra\u0107 te\u017c inn\u0105 us\u0142ug\u0119 (np. Files).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2339 aligncenter\" src=\"http:\/\/miroslaw.borodziuk.eu\/wp-content\/uploads\/AddAccessPolicy.jpg\" alt=\"\" width=\"803\" height=\"474\" srcset=\"http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/AddAccessPolicy.jpg 803w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/AddAccessPolicy-300x177.jpg 300w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/AddAccessPolicy-768x453.jpg 768w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Regu\u0142y polityki dost\u0119pu mo\u017cna tak\u017ce dodawa\u0107 w <em>Azure Storage Explorerze<\/em> klikaj\u0105c prawym przyciskiem myszy na wybranym kontenerze i wybieraj\u0105c z menu kontekstowego <code>Manage Access Policies.<\/code><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2337 aligncenter\" src=\"http:\/\/miroslaw.borodziuk.eu\/wp-content\/uploads\/StoredAccessPolicy.jpg\" alt=\"\" width=\"936\" height=\"567\" srcset=\"http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/StoredAccessPolicy.jpg 936w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/StoredAccessPolicy-300x182.jpg 300w, http:\/\/miro.borodziuk.eu\/wp-content\/uploads\/StoredAccessPolicy-768x465.jpg 768w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Wi\u0119cej o SAS i stored access policy:<\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/storage\/common\/storage-dotnet-shared-access-signature-part-1\">https:\/\/docs.microsoft.com\/en-us\/azure\/storage\/common\/storage-dotnet-shared-access-signature-part-1<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ka\u017cde zapytanie do magazynu wymaga identyfikacji u\u017cytkownika. Istnieje wiele technik kontroli dost\u0119pu do obiekt\u00f3w w storage.<\/p>\n","protected":false},"author":1,"featured_media":2322,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[],"_links":{"self":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2321"}],"collection":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/comments?post=2321"}],"version-history":[{"count":16,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2321\/revisions"}],"predecessor-version":[{"id":2344,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2321\/revisions\/2344"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media\/2322"}],"wp:attachment":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media?parent=2321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/categories?post=2321"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/tags?post=2321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}