{"id":630,"date":"2018-10-15T20:21:49","date_gmt":"2018-10-15T18:21:49","guid":{"rendered":"http:\/\/cwiok.pl\/?p=630"},"modified":"2018-10-15T20:29:23","modified_gmt":"2018-10-15T18:29:23","slug":"tworzenie-azure-key-vault","status":"publish","type":"post","link":"https:\/\/cwiok.pl\/index.php\/pl\/2018\/10\/15\/tworzenie-azure-key-vault\/","title":{"rendered":"Tworzenie Azure Key Vault"},"content":{"rendered":"<p align=\"justify\">Key Vault jest to modu\u0142 Azure, kt\u00f3ry pozwala na bezpieczne przechowywanie hase\u0142, kluczy i innych sekret\u00f3w. Z jego pomoc\u0105 developerzy nie musz\u0105 zapisywa\u0107 po\u015bwiadcze\u0144 lub adres\u00f3w po\u0142\u0105cze\u0144 w kodzie. Mog\u0105 natomiast odpyta\u0107 Key Vault i pozyska\u0107 je kiedy s\u0105 potrzebne. Aplikacja b\u0119dzie w stanie potwierdzi\u0107 swoj\u0105 to\u017csamo\u015b\u0107 i uzyska\u0107 dost\u0119p do has\u0142a, nawet w sytuacji gdy developer takiego dost\u0119pu nie ma. Stw\u00f3rzmy Key Vault!<\/p>\n<p> <a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-618\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf.png\" alt=\"\" width=\"1200\" height=\"628\" srcset=\"https:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf.png 1200w, https:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf-300x157.png 300w, https:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf-768x402.png 768w, https:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf-1024x536.png 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<h1>Tworzenie Key Vault<\/h1>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb.png\" alt=\"image\" width=\"871\" height=\"200\" border=\"0\" \/><\/a><\/div>\n<p align=\"justify\">Aby stworzy\u0107 Key Vault (jak zapewne si\u0119 domy\u015blasz) zwyczajnie wyszukaj go w us\u0142ugach Azure. Podczas tworzenia modu\u0142u, mo\u017cesz zmieni\u0107 r\u00f3\u017cne polityki dost\u0119pu. Polecam zostawi\u0107 warto\u015bci domy\u015blne &#8211; mo\u017cesz to zmieni\u0107, gdy ju\u017c b\u0119dziesz wiedzia\u0142 jaki poziom zabezpiecze\u0144 jest dla Ciebie odpowiedni.<\/p>\n<h1>Rejestrowanie aplikacji w Azure Active Directory<\/h1>\n<p>Aby aplikacja mia\u0142a dost\u0119p do sekret\u00f3w, musisz zarejestrowa\u0107 j\u0105 w Azure Active Directory. Tylko tak b\u0119dzie mog\u0142a uwierzytelni\u0107 si\u0119 w Key Vault.<\/p>\n<p>Otw\u00f3rz Function App i przejd\u017a do panelu Platform features:<\/p>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-1.png\" alt=\"image\" width=\"932\" height=\"745\" border=\"0\" \/><\/a><\/div>\n<p>Kliknij na Managed service indentity i zarejestuj j\u0105 w AAD:<\/p>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-2.png\" alt=\"image\" width=\"587\" height=\"276\" border=\"0\" \/><\/a><\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Inn\u0105 metod\u0105 jest zastosowanie Powershella:<\/p>\n<pre class=\"toolbar:2 wrap:true lang:ps decode:true\">Set-AzureRmWebApp -AssignIdentity $true -Name $appname \u2013ResourceGroupName $resourcegroupname<\/pre>\n<p>&nbsp;<\/p>\n<p>Teraz, gdy aplikacja jest ju\u017c w AAD, mo\u017cesz doda\u0107 j\u0105 do Access Policies w Key Vault. Aby to zrobi\u0107 przejd\u017a do access policies:<\/p>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-3.png\" alt=\"image\" width=\"266\" height=\"304\" border=\"0\" \/><\/a><\/div>\n<p>Dodaj now\u0105, wybierz odpowiedni poziom dost\u0119pu i wyszukaj aplikacj\u0119 jej pe\u0142n\u0105 nazw\u0105:<\/p>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-4.png\" alt=\"image\" width=\"323\" height=\"226\" border=\"0\" \/><\/a><\/div>\n<p>Teraz, twoja aplikacja ma dost\u0119p do sekret\u00f3w. Nawet je\u015bli ty ich nie widzisz, mo\u017cesz z nich korzysta\u0107 przez aplikacj\u0119.<\/p>\n<h1>Tworzenie sekretu<\/h1>\n<p>Przejd\u017a do sekret\u00f3w w g\u0142\u00f3wnym menu. Tutaj mo\u017cesz wpisywa\u0107 has\u0142a, kt\u00f3re b\u0119d\u0105 dost\u0119pne tylko przez wybrane zasoby\/osoby.<\/p>\n<div align=\"center\">\n<p><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-5.png\" alt=\"image\" width=\"276\" height=\"303\" border=\"0\" \/><\/a><\/p>\n<\/div>\n<p>Kliknij na Generate\/Import i dodaj has\u0142o:<\/p>\n<p>&nbsp;<\/p>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-6.png\" alt=\"image\" width=\"239\" height=\"69\" border=\"0\" \/><\/a><\/div>\n<div align=\"center\"><\/div>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-7.png\" alt=\"image\" width=\"592\" height=\"392\" border=\"0\" \/><\/a><\/div>\n<div align=\"center\"><\/div>\n<p>&nbsp;<\/p>\n<p>Po stworzeniu sekretu, skopiuj jego URL. Znajdziesz go w menu sekretu. Ten URL mo\u017cesz doda\u0107 w aplikacji jako zmienn\u0105 \u015brodowiskow\u0105 lub wklei\u0107 jako kod, tak jak poni\u017cej.<\/p>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-8.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-8.png\" alt=\"image\" width=\"1215\" height=\"665\" border=\"0\" \/><\/a><\/div>\n<h1><\/h1>\n<h1>Dost\u0119p do sekret\u00f3w przez Function App<\/h1>\n<p>Teraz jeste\u015b gotowy, \u017ceby stworzy\u0107 funkcj\u0119, kt\u00f3ra dostanie si\u0119 do sekretu.<\/p>\n<p>Przejd\u017a do Visual Studio i stw\u00f3rz Azure Function z wyzwalaczem HTTP:<\/p>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-9.png\" alt=\"image\" width=\"910\" height=\"185\" border=\"0\" \/><\/a><\/div>\n<div align=\"center\"><\/div>\n<div align=\"center\"><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-10.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-10.png\" alt=\"image\" width=\"723\" height=\"370\" border=\"0\" \/><\/a><\/div>\n<p>Musisz doda\u0107 dwa modu\u0142y:<\/p>\n<pre class=\"toolbar:2 wrap:true lang:c# decode:true\">using Microsoft.Azure.Services.AppAuthentication;\r\nusing Microsoft.Azure.KeyVault;<\/pre>\n<p>&nbsp;<\/p>\n<p>Nast\u0119pnie dodaj te 3 linijki kodu:<\/p>\n<pre class=\"toolbar:2 wrap:true lang:c# decode:true\">var azureServiceTokenProvider = new AzureServiceTokenProvider();\r\nvar kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));\r\nstring secret = kv.GetSecretAsync(\u201c&lt;Secret URL you have copied&gt;\u201d).Result.Value;<\/pre>\n<p>&nbsp;<\/p>\n<p>Mo\u017cesz zmieni\u0107 warto\u015b\u0107, kt\u00f3r\u0105 zwraca funkcja:<\/p>\n<pre class=\"toolbar:2 wrap:true lang:default decode:true\">return (ActionResult)new OkObjectResult($\"Your secret is: \" + secret);<\/pre>\n<p>&nbsp;<\/p>\n<p>Ca\u0142y kod:<\/p>\n<pre class=\"toolbar:2 wrap:true lang:c# decode:true\">using System;\r\nusing System.IO;\r\nusing System.Threading.Tasks;\r\nusing Microsoft.AspNetCore.Mvc;\r\nusing Microsoft.Azure.WebJobs;\r\nusing Microsoft.Azure.WebJobs.Extensions.Http;\r\nusing Microsoft.AspNetCore.Http;\r\nusing Microsoft.Azure.WebJobs.Host;\r\nusing Microsoft.Extensions.Logging;\r\nusing Newtonsoft.Json;\r\nusing Microsoft.Azure.Services.AppAuthentication;\r\nusing Microsoft.Azure.KeyVault;\r\n\r\n\r\nnamespace MySecretApp\r\n{\r\n    public static class Function1\r\n    {\r\n        [FunctionName(\"Function1\")]\r\n        public static async Task&lt;IActionResult&gt; Run([HttpTrigger(AuthorizationLevel.Function, \"get\", \"post\", Route = null)]HttpRequest req, ILogger log)\r\n        {\r\n            log.LogInformation(\"C# HTTP trigger function processed a request.\");\r\n\r\n            var azureServiceTokenProvider = new AzureServiceTokenProvider();\r\n            var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));\r\n            string secret = kv.GetSecretAsync(\u201c&lt;Secret URL you have copied&gt;\u201d).Result.Value;\r\n\r\n            return (ActionResult)new OkObjectResult($\"Your secret is: \" + secret);\r\n                \r\n        }\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Po publikacji, gdy wywo\u0142asz funkcj\u0119, otrzymasz sw\u00f3j sekret:<\/p>\n<div align=\"center\">\n<p><a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image-11.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; display: inline; background-image: none;\" title=\"image\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/image_thumb-11.png\" alt=\"image\" width=\"475\" height=\"281\" border=\"0\" \/><\/a><\/p>\n<\/div>\n<p>Mam nadziej\u0119, \u017ce pomog\u0142em \ud83d\ude42<\/p>\n<p>Micha\u0142<\/p>\n","protected":false},"excerpt":{"rendered":"<p align=\"justify\">Key Vault jest to modu\u0142 Azure, kt\u00f3ry pozwala na bezpieczne przechowywanie hase\u0142, kluczy i innych sekret\u00f3w. Z jego pomoc\u0105 developerzy nie musz\u0105 zapisywa\u0107 po\u015bwiadcze\u0144 lub adres\u00f3w po\u0142\u0105cze\u0144 w kodzie. Mog\u0105 natomiast odpyta\u0107 Key Vault i pozyska\u0107 je kiedy s\u0105 potrzebne. Aplikacja b\u0119dzie w stanie potwierdzi\u0107 swoj\u0105 to\u017csamo\u015b\u0107 i uzyska\u0107 dost\u0119p do has\u0142a, nawet w sytuacji gdy developer takiego dost\u0119pu nie ma. Stw\u00f3rzmy Key Vault!<\/p>\n<p> <a href=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-618\" src=\"http:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf.png\" alt=\"\" width=\"1200\" height=\"628\" srcset=\"https:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf.png 1200w, https:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf-300x157.png 300w, https:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf-768x402.png 768w, https:\/\/cwiok.pl\/wp-content\/uploads\/2018\/10\/artyku\u0142_11_sejf-1024x536.png 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<div class=\"tech_read_more\"><a href=\"https:\/\/cwiok.pl\/index.php\/pl\/2018\/10\/15\/tworzenie-azure-key-vault\/\">Read More<\/a><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30],"tags":[],"class_list":["post-630","post","type-post","status-publish","format-standard","hentry","category-azure-pl"],"_links":{"self":[{"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/posts\/630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/comments?post=630"}],"version-history":[{"count":0,"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/posts\/630\/revisions"}],"wp:attachment":[{"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/media?parent=630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/categories?post=630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cwiok.pl\/index.php\/wp-json\/wp\/v2\/tags?post=630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}