Windows Azure a RBAC

Pokud často pracujete s grafickým rozhraním Windows Azure, konkrétně s původním portálem https://manage.windowsazure.com ,nebo i s „Azure PowerShellem“, pak dříve nebo později jste mohly narazit na problém související s delegováním práv pro zprávu Windows Azure subskripce na jiného uživatele či správce. Původní Windows Azure portál totiž dovoluje přidat pouze jednu úroveň oprávnění a tím je „Co-administrator“. Ten má v podstatě takřka totožné práva jako „Service administrator“ a tedy může dělat vše. Klidně i smazat všechna produkční data! Níže na obrázku pak vidíte ukázku definovaných práv v původním Windows Azure portálu.

Nicméně mnozí z vás jistě znáte i jiné produkty firmy Microsoft, jako je například rodinu produktů Systém Center. Pro příklad si vezmeme Virtual Machine Manager 2012 R2. Ten slouží ke komplexní administraci on-premise virtuálního prostředí. A právě například tento produkt podporuje tzv. RBAC. Tedy přesněji řečenoRole-Based Access Control. Velmi obecně řečeno umožnuje RBAC definovat role. Pak na základě této role lze říci, jaká specifická práva ke konkrétním zdrojům v daném prostředí budou mít, nebo nebudou mít uživatele, nebo skupiny. A těmito zdroji mohou být například: virtuální stroje, diskové kapacity, virtuální sítě apod. Na obrázku pak vidíte příklad definice role ve Virtual Machine Manageru 2012 R2.

A Windows Azure není výjimkou. I zde chcete mít možnost řídit Přístup k jednotlivých zdrojům. A právě proto, zakomponovala firma Microsoft „RBAC“ i do prostředí Windows Azure. Obrovským přínosem RBAC v případě Windows Azure je ta skutečnost, že nyní můžete například pro váš vývojový tým přesně vydefinovat jejich práva na zdroje ve Windows Azure a to aniž byste ohrozily produkční data/zdroje. Poznámka: RBAC je možné nastavit jen v novém preview portálu na adrese http://portal.azure.com Nicméně jak si dále ukážeme, lze RBAC aplikovat i na zdroje vytvořené v původním portálu.


Jak na to? Nejprve musíte mít k dispozici účty, nebo skupiny, kterým pak přiřazujete konkrétní role, na konkrétní zdroje. Těmito účty mohou být například účty z jiné Azure Active Directory, a to například z Office 365, nebo to pak mohou být účty založené v interní Azure Active Directory, která je automaticky součástí každé Windows Azure Subskripce. V tomto článku si ukážeme, jak vytvořit účty ve výchozí interní Azure Active Directory s názvem „Default Directory“. Poznámka: Ve výchozím stavu má právo vytvářet a editovat objekty v „Default Directory“ pouze „Service administrator“! Nicméně je zde možné delegovat práva na jiného uživatele. Dále je důležité vědět, že administrace Azure Active Directory je aktuálně možná pouze z původního portálu https://manage.windowsazure.com Nejprve se přihlásíme se do původního portálu a přejdeme v pravém menu na položku „Active Directory“. V horním menu vybereme položku „DIRECTORY“ a následně klikneme na položku „Default Directory

Zde se pak dostáváme do samotného administrativního rozhranní konkrétní Azure Active Directory. V horním menu vybereme položku „USERS“ a ve spodní části klikneme na tlačítko „ADD USER

Dojde ke spuštění průvodce přidaním nového účtu v “Default Directory”. U první volby, jak jsem již dříve naznačil, je možné vybrat, typ uživatele. Tedy uživatelský účet může být existující účet Microsoft (např. uzivatel@outlook.cz), nebo třeba účet z jiného Azure Active Directory. V našem případě zvolíme možnost „New user in your organization

V poli „USER NAME“ pak vyplňte přihlašovací jméno nového uživatele. Za „USER NAME“ následuje sufix, definující společně plné přihlašovací jméno. Je důležité vědět, že přihlášení probíhá pomocí plného přihlašovacího jména. V tomto případě je plným přihlašovacím jménem:managevm**@heinzjakuboutlook.onmicrosoft.com Nejspíše se shodneme na tom, že přihlašovat se pomocí tak dlouhého jména není příliš uživatelsky přívětivé. Proto si na konci článku ukážeme, jak přidat další doménu, a to konkrétně doménu „azurecloudservice.net“. A umožníme tak uživateli „managevm“ se přihlásit k portálu plným přihlašovacím jménem:managevm@azurecloudservice.net** Pro pokračováni v průvodci klikněte na šipku v dolní části okna průvodce.

Na další kartě je pak možné vyplnit dodatečné údaje, jako jsou například: Jméno, Příjmení, Zobrazované jméno. Ale především je pak možné definovat roli uživatele v rámci dané Azure Active Directory. Tedy kupříkladu, pokud uživateli přiřadíte roli “User Admin”, bude moci tento uživatel kupříkladu vytvářet účty v konkrétní Azure Active Directory. V tomto případě v “Default Directory”. Upozornění: Neplést si tyto role s RBAC. Samotný RBAC bude popsán až později v článku. Tyto role čistě souvisejí jen s Azure Active Directory.

Vyplnily jsme údaje a uživateli a přiřadily mu Azure AD roli “User”. Poznámka: Popis „MULTI-FACTOR AUTHENTICATION“ je mimo rozsah tohoto článku. Pro pokračováni v průvodci klikněte na šipku v dolní části okna průvodce.

Dostáváme se na třetí a poslední záložku, kde je možné vygenerovat pomocí tlačítka “create” dočasné heslo, které bude pak použito pro první přihlášení k tomuto nově vytvořenému Azure AD účtu.

Dojde tedy k vygenerování dočasného hesla, které si zkopírujte! Dokončete vytvoření účtu pomocí tlačítka ve spodní části průvodce.

Výsledkem je vytvoření Azure AD účtu.

Upozornění: Jelikož původní portál nepodporuje RBAC, je nutné se pomocí nového účtu přihlásit do nového portálu https://portal.azure.com Poté jste vyzvání k zadání přihlašovacích údajů. Vyplňte tedy přihlašovací jméno a jako heslo použijte dočasné generované heslo. A klikněte na tlačítko „Přihlásit se“ (V anglické verzi jiný název).

Jste vyzváni ke změně hesla. Po zadání nového hesla (poslední dvě pole) klikněte na tlačítko “Aktualizovat heslo a přihlásit se” (V anglické verzi jiný název).

Nyní by mělo dojít k úspěšnemu přihlášení do nového portálu Windows Azure.

Jak je v detailu vidět, došlo k úspěšnému přihlášení pomocí nově vytvořeného uživatele „managevm“.

Ovšem po přihlášení je patrné, že tento uživatel nemá žádná práva a v novém portálu uživatel neuvidí žádné zdroje a nemůže rovněž provádět žádné operace! Zde pro ukázku se uživatel „managevm“ pokusil zobrazit seznam virtuálních počítačů. Poznámka: Popisy jednotlivých položek závisí na jazykové verzi, kterou zvolíte v rámci nastavení nového portálu Windows Azure. V tomto případě vidíte popisky a názvy v českém jazyce.

Nastavení RBAC Pro ukázku nastavení RBAC, tedy definování role a tím i práv na konkrétní zdroje jsem se přesunul do nového portálu. Zde jsem přihlášen pomocí uživatele, který má právaService Administrator. V rozhraní nového portálu jsem pak vybral zobrazení všech Virtuálních strojů a to klasických virtuálních strojů. Poznámka: Klasické virtuální stroje jsou virtuální stroje první generace. Tedy všechny virtuální stroje vytvořené v rámci původního portálu https://manage.windowsazure.com jsou to virtuální stroje první generace. V novém portálu pak vyberu virtuální stroj, u kterého provedu přidělení role/práv pro nově vytvořeného uživatele „managevm“ v interní Azure AD s názvem „Default Directory“.

Po vybrání stroje jsem vybral položku “All Settings”. Na záložceSettings pak „Users“ a na záložce „Users“ jsem kliknul na tlačítko „Add“.

V detailu obrázku vidíte “podstatu” RBAC ve Windows Azure. V průvodci přidáním uživatele nejprve vyberu roli uživatele. Přičemž každá role představuje určitou kolekci práv, které je možné aplikovat na daný zdroj/objekt a to je v tomto případě virtuální stroj. Jinak je třeba počítat s tím, že pro různé zdroje/objekty je případně k dispozici jiná „sada“ rolí. Poznámka: Podstata základních rolí, alespoň pro virtuální stroj bude popsána dále v textu. V tomto případě jsem vybral roli „Owner“. Obecně tato role dává uživateli veškerá práva, na vybraný virtuální stroj.

A logicky po vybrání role je nutné vybrat uživatele, kterému přiřadíme roli/práva k danému zdroji/objektu. Jak je patrné z obrázku, napsal jsem plné přihlašovací jméno nově vytvořeného uživatele v Azure AD. A dále je patrné, že systém kontroly uživatele akceptoval, protože se jedná o interního uživatele, založeného v interní „Default Directory“.

Po vybrání uživatele jsem výběr potvrdil pomocí tlačítka “Select” a následně tlačítkem “OK

Po dokončení této operace, která trvá jen malou chvíli je vidět, že uživatel má v tuto chvíli přiřazenu roli “Owner” k danému virtuálnímu stroji.



RBAC z pohledu uživatele s definovanou rolí/rolemi: Po úspěšném přiřazení role jsem se vrátil zpět do nového portálu, kde jsem byl stále přihlášen jako nově vytvořený uživatel „managevm“ a provedl jsem “refresh” pomocí tlačítka “Aktualizovat”. Poté se v seznamu virtuálních strojů zobrazil virtuální stroj, ke kterému dostal uživatel práva, díky přiřazení role.

Detail, dokazující, že jsem příhlášen jako uživatel “managevm”. clip_image028[1] Po vybrání virtuálního stroje se zobrazily možnosti/práva, které dává uživateli „managevm“ přiřazená role. Jelikož jsem mu přiřadil roliOwner, má tento uživatel veškerá práva na daný virtuální stroj. A z možností je vidět, že uživatel může virtuální stroj například: vypnout, zapnout, změnit jeho nastavení, nebo jej dokonce odstranit.

Zde je pak ukázka fungování práv, kdy jsem pod uživatelem “managevm” úspěšně vypnul virtuální stroj.

Definice základních rolí:**(virtuální stroj)

Role Práva umožnují**
Owner Může dělat vše, včetně přiřazení přístupů - Vyvářet a spravovat zdroje všech typů
Contributor Může dělat vše, kromě přiřazení přístupů - Vyvářet a spravovat zdroje všech typů
Reader Může si zobrazit vše, ale nemůže provádět změny – Číst zdroje všech typů, vyjma “secrects” (například uložená hesla apod.)
Classic Virtual Machine Contributor Čelá řada práv jejichž výčet zde není možné rozvést. Ale je možné se o nich dočíst v článku viz. odkaz.
Security Manager Čelá řada práv jejichž výčet zde není možné rozvést. Ale je možné se o nich dočíst v článku viz. odkaz.
User Access Administrator Může spravovat uživatelské přístupy ke zdrojům - Číst zdroje všech typů, vyjma “secrects” (například uložená hesla apod.), číst autorizace, vytvářet a spravovat “support tickets”

Detailnější informace o definici jednotlivých rolí lze získat zde: https://azure.microsoft.com/cs-cz/documentation/articles/role-based-access-built-in-roles/#user-access-administrator** Ukázka změny role: Jako další ukázku fungování jednotlivých rolí jsem uživateli „managevm“ odebral jeho původní práva „Owner“ a ponechal mu pouze roli „Reader**“

Po auktualizaci stavu v novém portálu pod přihlášeným uživatelem “managevm” je patrné, že změna role zafungovala a jako uživatel “managevm” mohu pouze data číst a nikoli měnit. Zde je vidět, kdy po vybrání disku, nemám možnost na diskem provádět žádné akce, a mohu pouze číst informace.



RBAC a PowerShell Dále si ukážeme, jak se projevuje nastavení rolí v PowerShellu. Po spuštění Azure PowerShell okna je nutné nejprve přidat Azure účet/přihlášení. A to pomocí příkazuAdd-AzureAccount

Jak je patrné, přihlásil jsem se jako uživatel „managevm“, který má stále přiřazenu jedinou roli a to roli „Reader“**! V dalším kroku po úspěšném přihlášení je nutné vybrat správnou subskripci. To v případě, že by daný účet měl práva ve více subskripcích. Pomocí příkazuSelect-AzureSubscription –SubscriptionID „<ID>“**vyberte správnou subskripci.

Poté je možné začit provádět jednotlivé příkazy. Například zde jsem zadal příkazGet-AzureVM, který má zobrazit seznam všech virtuálních strojů v celé subskripci. A zde narazíte na první problém**.Pomocí PowerShellu nelze spravovat virtuální stroje první generace, tedy stroje vytvořené například pomocí původního portálu!**

RBAC, PowerShell a virtuální stroje druhé generace V případě, že vytváříte virtuální stroje v novém portálu, máte možnost vybrat, zda vytvoříte v rámci deployment modelu „Classic“ virtuální stroj, tedy stroj první generace, nebo výběrem možnosti „Resource Manager“ virtuální stroj druhé generace.

Pro možnost spravovat virtuální stroje druhé generace je nutné se přepnout do módu Resource Managera. A to pomocí příkazuSwitch-AzureMode –Name AzureResourceManager

Až nyní je možné provést příkazGet-AzureVM,

Poznámka: Stále jsem přihlášem jako uživatel „managevm“, který má stále přiřazenu jedinou roli a to roli „Reader“**! Provedu pokus o zastavení virtuálního stroje pomocí příkazuGet-AzureVM –ResourceGroupName <Resource Group> -Name <nazev_vm> | Stop-AzureVM**. Jak je vidět tak pokus nevyšel a PowerShell vygeneroval chybu, která jasně říká, že nemám dostatečná práva na provedení dané akce.



Následně pod administrátorem subskripce jsem provedl změnu nastavení rolí a uživateli “managevm” jsem kromě role “Reader” přiřadil navíc roli “Owner” **

**








Poznámka: Chvíli trvá, než se změna v samotném PowerShellu projeví**! Jak je patrné, po nějaké době a opakování daného příkazu se mi již podařilo s právy uživatele „managevm**“ provést vypnutí virtuálního stroje.






A to je vše? Zdaleka ne. Jistě se ptáte. No dobrá, ale co když chci poskytnou pravá někomu jinému a to například práva na vytváření nových zdrojů ve Windows Azure. A navíc aniž by byl ten uživatel třeba Co-Administrator. Dobrá. Jsem přihlášen do nového portálu jako uživatel „managevm“ A pokusil jsem se pomocí průvodce vytvořit nový virtuální stroj. Okamžitě došlo k vygenerování chyby. A samozřejmě operace se nezdařila. Co tedy s tím? **

**















Odpověd je jednoduchá – Resource Group Jak název napovídá je Resource Group skupinou zdrojů. Tedy jakákoli Resource Group „zastřešuje“ všechny zdroje. A přiřazením práv/rolí k existující, nebo nové Resource group, přidělíte práva jak ke všem stávajícím, tak případně i budoucím zdrojům. **

**








Zde pak vidíte ukázku vytvoření nové resource group s názvem “delegateresourcegroup” **

**






Po úspěšném vytvoření Resource Group je možné opět přistoupit k delegaci práv pro konkrétního uživatele, nebo skupinu pomocí přiřazení role/rolí. **

**



Jak je z obrázku patrné, uživateli “managevm” jsem přiřadil roliOwner nad celou Resource Group. **

**




V další fázi provedu opakování předchozíko pokusu a pokusím se pod uživatelem “managevm” vytvořit nový virtuální stroj druhé generace. Tedy nejprve v průvodci vytváření nového virtuální stroje přejdeme na záložku „Basic“ (Konfigurace základních nastavení)**

**








V této fázi je velmi podstatné, spíše nezbytné vybrat již existující Resource Group, na kterou má uživatele “managevm” práva. V našem případě se jedná o Resource Group s názvem „delegateresourcegroup“. **

**







V kroku “2” jsem vybral budoucí velikost virtuálního stroje. V kroku „3“ lze definovat „Storage Account“, „Network“, případně jiná nastavení. Povšimněte si, že u nastavení „Network“, tedy sítě lze vybrat v jaké Resource Group bude síť vytvořena. U „Storage Accountto definovat nelze**!**Tedy v případě vytváření virtuálního stroje přes nový portál. **

**


Jak jsem již tedy naznačil, skončilo vytvoření virtuálního stroje opět chybou. Důvodem bylo právě to, že u “Storage Account” nebylo možné definovat v jaké Resource Group má být vytvořen.













Řešení tohoto drobného problému je velmi jednoduché. Je nutné nejprve v dané Resource Group vytvořit “Storage account”. Přičmž platí, že práva na nově vytvořený “Storage Account”není nutné znovu uživateli “managevm” přiřazovat, protože práva se automaticky dědí směrem dolů a to díky pravům definovaným nad Resource Group. **

**



Po výše uvedené korekci a opakování pokusu o vytvoření virtuálního stroje, tentokrát deployment proběhl v pořádku. **

**





CUSTOM DOMAIN Custom Domain mám dává možnost použít/přiřadit ke kterékoli Azure Active Directory vlastní doménu. A mít tak možnost se přihlásit pomocí účtu s uživatelsky přívětivějším přihlašovacím jménem. Přihlásíme se tedy do původního portálu https://manage.windowsazure.com , přejdeme v pravém menu na položku „Active Directory“. V horním menu vybereme položku „DIRECTORY“ a dále klikneme na položku „Default Directory“ Zde se pak dostáváme do samotného administrativního rozhraní konkrétní Azure Active Directory. V horním menu vybereme položku „DOMAINS“ a pak klikneme na tlačítko „ADD A CUSTOM DOMAIN


**

**


Zobrazí se průvodce přidáním naši vlastní domény. Do pole “DOMAIN NAME” zadejte název vaší domény. V mém případě jsem vlastníkem domény “azurecloudservice.net”. Pro pokračováni v průvodci klikněte na tlačítko „add“. **

Pokud již nemáte vaši domému definovánu jinde, mělo by dojít k úspěšnému přidání. Pokračujte dále kliknutím na šipku v dolní části průvodce.

**









Na další kartě průvodce dojde k vygenerování pokynů a DNS údajů, důležitých pro asociaci vaší domény s Azure Active Directory. **

**



Zde pak vidíte ukázku přidání TXT DNS záznamu na stránkách registrátora, u kterého jste si zaregistrovaly vaši doménu. Většinou bývá pravidlem, že registrátorři domén poskytují zákazníkům management portál, kde si mohou zákaznící provádět úpravy DNS záznamu pro jejich doménu/domény. Zde přidávám TXT záznam. **

Dále vidíte ukázku vyplnění TXT záznamu.

**


Po úspěšném přidání TXT záznamu. **

V tuto cvhíli pak nezbývá než čekat a čekat a čekat….Propagace DNS záznamů může trvat až 72 hodin. Ale obvykle to trvá podstatně kratši dobu. V ném případě byl záznam zpropagován do 45 minut. Pro úspěšně dokončení průvodce přidání vaší domény je nutné kliknout na tlačítko „verify“, kde Windows Azure prověří, zda existuje v DNS níže uvedený TXT záznam. V případě, že se verifikace nezdaří, je vygenerována chyba.

**







Dokud není verifikace provedena, není možné vaši doménu využít o čemž vás informuje status “Unverified” **

**


Pokud později chcete znovu provést verifikaci a zkontrolovat tak, zda propagace změny DNS záznamu se projevila, klikněte v dolní části na tlačítko “VERIFY” **

**


















V případě, že se později verifikace podaří, je možné začít vaši doménu využívat. **

**


Ukázka povrzení úspěšné verifikace vaší domény **

**


Dále v horním menu vybereme položku „USERS“ a klikněte na uživatele, jehož parametry chcete modifikovat. **

**


Na kartě parametrů uživatele nyní máte možnost vybrat sufix odpovídající vaši doméně, a to u položky “USER NAME” **

**


Proveďte změnu a uložte nastavení v dolní části pomocí tlačítka “SAVE” **

**



Ve finále se můžete k Windows Azure přihlásit pomocí uživatelského jména se sufixem vaší domény. **

**


Ukázka následného úspěšného přihlášení do nového portálu Windows Azure. **

**

Autor: Jakub Heinz

Next Post Previous Post