Azure: автоматизация назначения Azure Policy для настройки Log Analytics скриптами Azure PowerShell



Обещанные «очень технические» видео по теме Azure на канале – пришло время поделиться некоторыми из личных скриптов и заложенных в них идеях и особенностях реализации той или иной функциональности Azure. В этом видео/посте – поговорим про реализацию автоматического назначения некоторых Azure Policy для конфигурации отправки различными объектами диагностики в Azure Log Analytics при помощи скриптов Azure PowerShell.


Azure: автоматизация назначения Azure Policy для настройки Log Analytics скриптами Azure PowerShell

Почему не с применением ARM Template? – да потому, что «заморочек» в работе с политиками через ARM Template, особенно если говорить о назначении имеющихся политик, да еще и в режиме «исправления» Remediation. Это и огромные нечитаемые «простыни» самого ARM Template вероятными ошибками при копи-пасте и «заморочками» при редактировании, и масса вопросов по описанию в том же (или отдельном) шаблоне всех необходимых учетных записей managed identity (principal) с раздачей им необходимых ролей в том же шаблоне, и процесс поиска и прописывания массы параметров вручную и прочие моменты типа «ручного участия» даже в назначении имен в том же шаблоне… Потому – скрипт, который управляет назначением выбранных политик – является куда меньшим «злом» с точки зрения процесса и более универсальным в работе, чем шаблоны, которые нужно потом очень внимательно править.

И напомню про пару  других моих детальных видео об автоматизации Azure с применением скриптов (с детальным разбором данных скриптов):

  • · Azure – подробный обзор универсального PowerShell скрипта для работы с Azure Log Analytics API – https://youtu.be/2AB-bIQl_4Q
  • · Закон Мерфи для кода или автоматическое копирование файлов между Azure Storage с Azure Logic Apps – https://youtu.be/jvWX6V92aCQ

Но вернемся к представленному Azure PowerShell скрипту, в задачу которого входит назначение политик (стандартных, встроенных в Azure) настройки мониторинга Azure Log Analytics для всех типов сервисов Azure, которые поддерживают данные настройки, на уровне выбранной подписки Azure (хотя в качестве области назначения политик может быть и ресурсная группа, и Management Group). В качестве политики используются встроенные политики Azure Policy, которые соответствуют шаблону имени ‘*diagnostic settings*Log Analytics*’, которые развертываются в режиме Remediation (effect = DeployIfNotExists) для своего типа сервисов.

Какие важные блоки в данном скрипте, на что обратить внимание при работе с назначением политик и использованием их в режиме Remediation (исправления) в коде Azure PowerShell:

  • · Простые операции получения списка нужных политик (или инициатив – набора политик) при помощи команды
    $mons = Get-AzPolicyDefinition | Where-Object { $_.Properties.DisplayName -like ‘*diagnostic settings*Log Analytics*’ }
    и работы с данным списком в цикле для каждого элемента.
  • · Проверка параметров для политики – напомню, что у политики есть свои параметры – большинство из которых – например, тот же режим работы политики – параметр Effect – является установленным по умолчанию в рекомендуемое значение, но вот для данного случая существует еще и параметр logAnalytics (которым назначается конкретное хранилище Log Analytics Workspace, куда направляются все логи) и который может иметь различные модификации имен. Потому – в скрипте проводится проверка точного имени параметра по шалону ‘logAnalytics*’ и формирование параметра на основе полученного имени.

    # get right name of policy’s parameter (typicaly named as logAnalytics or logAnalytics_1 or logAnalytics_param ) to setup required Log Analytics as destination storage
    $obj = $mon.Properties.Parameters
    $prop = Get-Member -InputObject $obj -MemberType NoteProperty -Name logAnalytics*
    # build parameter object
    if($prop)
    {
    $asparam = @{$($prop[0].Name)=$($logan.ResourceId)}
    }

  • · Формирование имени для назначения конкретной политики на основе строки описания политики, из которой по шаблонам извлекается название сервиса (описания для всех политик по управлению настройками диагностики стандартные и позволяют достаточно просто получить имя сервиса, для которого политика предназначена), для которого назначается политика, и после, используя полученное название – создается имя типа $name = “{0}-monitoring-assigned-byScript” -f $aname

    # Build the name of assignment based on substring with Azure service type in Policy’s description
    $aname = $mon.Properties.Description.Split(‘ for ‘)[1].Split(‘ to stream ‘)[0]
    $aname = $aname.Replace(‘ ‘, ”)
    # Workaround for some non-standard descriptions 🙂
    if($aname.Length -gt 32)
    {
    $aname = $mon.Properties.Description.Split(‘ for ‘)[1].Split(‘ and stream the logs to ‘)[0]
    $aname = $aname.Replace(‘ ‘, ”)
    }
    $name = “{0}-monitoring-assigned-byScript” -f $aname

  • · Назначение политики в режиме Remediation – обязательное указание параметров локации (параметр команды -Location) и привязки managed identity (-AssignIdentity) – $assignment = New-AzPolicyAssignment -Name $name -PolicyDefinition $mon -Scope $subsId -PolicyParameterObject $asparam -Location westeurope -AssignIdentity
  • · Ожидание создания учетной записи, привязанной к назначенной политики – требуется время, чтобы вновь созданная учетная запись была реплицирована внутри Azure AD и была доступна – поскольку без этого нельзя назначать требуемые роли на следующем шагу.

    # Assignment have to create Service Principal account and we need to check was account created before continue.
    # The new managed identity must complete replication through Azure Active Directory before it can be granted the needed roles.
    $prid = $assignment.Identity.PrincipalId
    $principal = Get-AzADServicePrincipal -ObjectId $prid
    while(!$principal -and $null -eq $principal)
    {
    Start-Sleep -s 10
    $principal = Get-AzADServicePrincipal -ObjectId $prid
    }

  • · Самая важная часть скрипта – при назначении политик через портал Azure выполняет операции по конфигурированию связанной учетной записи – назначение ролей – на фоне в автоматическом режиме, но когда используется PowerShell – команда New-AzPolicyAssignment только создает учетную запись, но не назначает для нее роли, которые потом требуются для выполнения политикой операций по исправлению конфигураций. Потому скрипт берет данные о ролях из описания политик (внутри каждой политики есть описание требуемых ролей (ID) для операций Remediation) и назначает роли для вновь созданных учетных записей. В случае, если речь идет не просто о политике, а об инициативе (наборе политик) – то тут скрипт просматривает еще и набор политик внутри каждой инициативы и уже из описания политики извлекает ID требуемых ролей (об этом вы найдете в конце видео, когда идет сравнение двух скриптов – для назначения политик и инициатив)

    # WARNING!!! workaround for assignment of the policy that requires remediation
    <#

When creating an assignment using the portal, Azure Policy both generates the managed identity and grants it the roles defined in roleDefinitionIds.

In the following conditions, steps to create the managed identity and assign it permissions must be done manually:

While using the SDK (such as Azure PowerShell)

When a resource outside the assignment scope is modified by the template

When a resource outside the assignment scope is read by the template

The following code iterates the policy definition in $policyDef for the roleDefinitionIds and uses New-AzRoleAssignment to grant the new managed identity the roles.

#>

# Get all policy’s definitions inside each policy in Initiative

$polDefs = $mon.policyDefinitionId

foreach( $polDef in $polDefs)

{

$policyDef = Get-AzPolicyDefinition -Id $polDef

# Use the $policyDef to get to the roleDefinitionIds array

$roleDefinitionIds = $policyDef.Properties.policyRule.then.details.roleDefinitionIds

if ($roleDefinitionIds.Count -gt 0)

{

$roleDefinitionIds | ForEach-Object {

$roleDefId = $_.Split(“/”) | Select-Object -Last 1

New-AzRoleAssignment -Scope $subsId -ObjectId $assignment.Identity.PrincipalId -RoleDefinitionId $roleDefId

}

}

}

  • · И, в заключение – назначение задачи по сканированию конфигурации существующих экземпляров сервисов на соответствие политике и исправлению (Remediation), если данное исправление требуется. Так же, как и в предыдущем случае, при назначении политики через интерфейс портала Azure – данная операция назначается в мастере назначения, а в случае использования скриптов – операция Remediation должна быть назначена отдельной командой явно. Кроме того, чтобы следить за ходом выполнения сканирования и исправления – скрипт выводит на экран текст команды с требуемым ID задачи.

    # Create a remediation for a specific assignment


$name = “Remediation_{0}-monitoring-assigned-byScript” -f $aname

$remtask = Start-AzPolicyRemediation -Name $name -PolicyAssignmentId $assignment.ResourceId -ResourceDiscoveryMode ReEvaluateCompliance

Start-Sleep -s 30

Get-AzPolicyRemediation -Id $remtask.Id

Write-Host “`r`nRemediation task $($remtask.Id) was configured!`r`n`t>>> Check state (ProvisioningState property) by >>> ‘Get-AzPolicyRemediation -Id $($remtask.Id)’ command`r`n”

Как я уже упоминал и в тексте, и в видео – при разработке собственных скриптов на базе данного примера рекомендую обратить внимание на то, как в скрипте автоматически генерируются имена для назначений – шаблоны будут отличаться, как формируется переменная с параметрами, которые используются для передачи политики (они, естественно, отличаются от политики к политике) и, конечно же, какие различия между скриптом, который назначает политики и тем, который назначает инициативы – там тоже есть свои нюансы.

Полный исходный код обоих скриптов, рассмотренных в видео – найдете в аттачменте к данном посту.


Другие доклады по облачным и серверным технологиям у меня на канале:

  • · ИТ-карьера – “ОТКРЫТОЕ СОБЕСЕДОВАНИЕ” – начинаем новый сезон 2021 – приглашаются все желающие – https://youtu.be/h0hk03xX_Z0
  • · Azure AZ-900 – онлайн семинар MUK – построение гибридной инфры с Azure Arc и Windows Admin Center – https://youtu.be/vJhuo7bc-Pg
  • · Azure AZ-900 – онлайн семинар MUK – Azure Security Center – обзор возможностей и конфигурирование – https://youtu.be/1Z3Z6XqJZsM
  • · Azure AZ-900-онлайн семинар MUK-Azure Infrastructure as Code IaC, ARM templates, BICEP, Azure DevOps – https://youtu.be/UOEmloeetfY
  • · Azure AZ-900 – онлайн семинар MUK – Microsoft Power Virtual Agents – создание эффективных чат-ботов – https://youtu.be/mez50o_m0oE
  • · Azure SALES – онлайн-семинар MUK – продажа сервисов Azure для различных сценариев кибербезопасности – https://youtu.be/YF7yKgCVLAA
  • · Azure AZ-900 – онлайн-семинар MUK – обзор Azure Automation, Monitor, Log Analytics, Logic Apps – https://youtu.be/a6VGeDUNYt4
  • · Azure SALES – онлайн-семинар MUK – что такое PaaS службы баз данных Azure SQL и Azure Data Platform – https://youtu.be/38Y-TxFFqT4
  • · Azure SALES – онлайн-семинар MUK – планирование миграции в Azure, стоимость и службы гибридой инфра – https://youtu.be/j_LqwHeLDPY
  • · Azure – онлайн-семинар MUK – планирование миграции в Azure с Azure Migrate, построение гибридой инфра – https://youtu.be/vnQOSPrunKc
  • · Закон Мерфи для кода или автоматическое копирование файлов между Azure Storage с Azure Logic Apps – https://youtu.be/jvWX6V92aCQ
  • · Azure Global AI Bootcamp (UAE) – рус.версия по Cognitive services с PowerShell, Functions, Logic Apps – https://youtu.be/7J4veWZqtpY
  • · Azure – онлайн-семинар MUK – использование сервисов Azure (Logic Apps, Functions, Cognitive) для RPA – https://youtu.be/YQiCfiivpBc
  • · Azure – онлайн-семинар MUK – основы Power Platform создание решений на Power Apps, Flows, Chatbots – https://youtu.be/DECMirInQ2I
  • · Что такое облачные технологии и подготовка к экзамену Microsoft AZ-900 Azure Fundamentals – http://bit.ly/Exam-Az-900

ИТ-карьера, сезон 2021-22 – открытое собеседование на позицию Azure Admin – что нужно знать, ч.01




Итак, большое спасибо Алексею за участие в первом выпуске нового сезона “Открытое собеседование 2021-22”. Кстати, напомню, что все желающие могут принять участие в данном проекте – достаточно связаться со мной в том же LinkedIn – https://www.linkedin.com/in/iwalker2000/  – или в комментариях под видео – а подробнее о проекте смотрите в этом видео – https://youtu.be/h0hk03xX_Z0 – идея данных видео – дать всем ИТшникам, желающим развиваться в направлении администрирования Azure, представление о тех знаниях и навыках, которые потребуются для работы администратором Azure, а для тех, кто уже работает с Azure – проверить свои знания и навыки и быть уверенным в прохождении реальных собеседований на подобную позицию.


ИТ-карьера, сезон 2021-22 – открытое собеседование на позицию Azure Admin – что нужно знать, ч.01


Так что смотрите и развивайтесь профессионально. Кстати, меня спрашивали, а что делать тем, кто уже гуру в “наземной инфраструктуре” – как им легче переходить в Azure, чтобы не начинать все с начала и не выглядеть “старыми джуниорами” – думаю, такие “публичные собеседования” очень помогут тоже определиться, а вообще – планирую записать отдельное видео с “мэппингом” локальных технологий в облачные технологии и куда “копать” с точки зрения миграции знаний, чтобы не начинать с нуля.



В этом видео Алексею “выпал” следующий набор вопросов (с которым он очень даже успешно справился, а вместе с темами идут и ссылки на мои доклады по данным темам):


Думаю, такой список тем, ответы на которые есть в интервью + ссылки на более подробные доклады – поможет вам подготовиться к участию в данной инициативе или к сдаче экзаменов.



Примеры записей предыдущего сезона смотрите здесь:

  • ИТ-карьера – Azure L2 support engineer – публичное собеседование на позицию, что нужно знать – ч.01 – https://youtu.be/HmpgQoahXTA
  • ИТ-карьера – Azure L2 support engineer – публичное собеседование на позицию, что нужно знать – ч.02 – https://youtu.be/cFzd62vlB9M
  • ИТ-карьера – Azure L2 support engineer – публичное собеседование на позицию, что нужно знать – ч.03 – https://youtu.be/DECMirInQ2I

ИТ-карьера–новый 2021 сезон инициативы “ОТКРЫТОЕ СОБЕСЕДОВАНИЕ”–проверь свои знания и навыки в Azure


Мой LinkedIn ►►► https://www.linkedin.com/in/iwalker2000/
Подписаться на канал ►►►
http://bit.ly/iwalker2000_subs
Открытое интервью ►►►
https://youtu.be/HmpgQoahXTA
ИТ-карьера сисадмина-2019 ►►►
https://youtu.be/eE-6AA3Cm6Q
Подготовка к AZ-900 ►►►
http://bit.ly/Exam-Az-900
ИТ карьера – что для этого нужно ►►► http://bit.ly/ITcarriera_
Еще про Azure и серверы ►►►
http://bit.ly/WindowsServer_overview

Хотите проверить свои знания по Azure? Понять, в каких разделах Azure у вас пробелы? Быть уверенными на собеседовании на новую позицию типа Azure Administrator/Engineer? Я запускаю на канале новый сезон инициативы “ОТКРЫТОЕ ИНТЕРВЬЮ” – к участию приглашаются все желающие. Шаринг виде – https://youtu.be/h0hk03xX_Z0 – приветствуется и добавляет +100500 в карму.


ИТ-карьера – “ОТКРЫТОЕ СОБЕСЕДОВАНИЕ” – начинаем новый сезон 2021 – приглашаются все желающие

Инициатива “ОТКРЫТОЕ ИНТЕРВЬЮ” – ЗАЧЕМ?

  • Обеспечить доступ ИТ-сообщества к оценке их профессиональных знаний и навыков для :
    • Пытаться понять индивидуальный уровень знаний в некоторых областях и найти «слепых пятна» в знаниях
    • Оценка перед сертификационными экзаменами
    • Имитация собеседований с реальными требованиями к реальной должности для подготовки к следующим карьерным ступеням
  • Предоставить интервьюируемому свою «карту знаний» и возможные способы дополнительного обучения, повышения уровня знаний (со ссылками на материалы).
  • Расширение знаний и навыков ИТ-сообщества путем обмена записанными сессиями «открытых интервью»


“ОТКРЫТОЕ ИНТЕРВЬЮ”– КАК?

  • «Открытое собеседование» представляет собой симуляцию реального 1–1,5-часового онлайн-собеседования (по Teams и т.п.), как типичное собеседование для какой-то «стандартной» ИТ-должности (для моего примера – L2 администратор службы поддержки Azure) с конкретными должностными обязанностями и требованиями (99 % близко к реальному)
  • «Открытое интервью» записывается и передается ИТ-сообществу любым подходящим способом.
  • Личность интервьюируемого может быть публичным или анонимным – по желанию интервьюируемого.
  • Главное условие – запись интервью будет опубликована вне зависимости от результатов и желания собеседника.
  • Собеседник не знает вопросов, только общие темы – например, ему задают только требования к должности (поскольку это имитация собеседования).
  • После самого собеседования – карта слепых пятен и личный путь обучения, ссылки, материалы будут предоставлены интервьюируемому (не для протокола, вне записи).

ИТАК, каждый желающий проверить свои знания по администрированию Azure путем прохождения “симуляции” реального собеседования на реальную должность инженера/администратора Azure уровня L2 – может связаться со мной по указанным выше профилям – в LinkedIn или YouTube – и мы договоримся об удобном времени такого “собеседования”.

Описание такой позиции Azure L2 Support Engineer (реальной) и требований к ней (также абсолютно реальные) – смотрите ниже. Все вопросы в “интервью” также взяты из реальных задач, с которыми приходится сталкиваться администратору Azure в ежедневной работе.

Job responsibilities

  • Work with presales Architects team and customer technical team to build LLD
  • Support customer migration project
  • Build ARM, DSC, Security policies based on customer requirements and reference architecture
  • Deploy Azure IaaS/PaaS solution.
  • Implement Automation, Monitoring, DR solutions in Azure.
  • Azure IaaS/PaaS (VM, network, storage, DB, security) troubleshooting
  • Continuous delivery infrastructure for managed customers as Infrastructure as Code.
  • Disaster Recovery.
  • Create new Automation solutions in respond to customer/L1/business requests.
  • Handover and train L1 team.

Required skills and experience

  • Knowledge in the recommended best practices and architectures of Azure — for example, Azure Virtual Datacenter — and the ability to tailor customer solutions to architecture and security requirements (IaaS/PaaS, O365).
  • Knowledge in networks concepts in Azure – VNET, VPN Gateways, ExpressRoute, Application Gateway/WAF, Firewall, Traffic Manager, Azure Front Door and hands on experience on planning, deploying and managing Azure Networks and Hybrid connectivity.
  • Knowledge in security concepts in Azure – Azure AD, IAM, VM / VNet hardening – and their practical application in the development of user infrastructures (IaaS/PaaS, O365) in Azure.
  • Practical knowledge and hands-on experience and skills in using Azure deployment tools – ARM template, az / PowerShell / DSC – and IaC concepts/processes. Scripting skills (powershell/DSC/cmd) for deploying IaaS and OS in virtual machines.
  • Practical knowledge, hands-on experience and skills in working with monitoring and support tools in Azure – ASC, AM, ASR, Automation. Skills and experience in developing scripts for Azure Automation runbooks.
  • Hands-on experience in the administration, support and resolution of problems in the Windows Server / Linux OS and practical experience in managing them using remote PowerShell.

Additional skills, knowledge and experience related to Azure or on-premises technologies are the big plus

  • Administer Azure AD / Active Directory on-prem
  • Windows Admin Center / Hybrid Infrastructure
  • Administer Office 365 / Exchange / SharePoint Server etc. office servers on-prem
  • DBA – Azure SQL / SQL Server etc. on-prem
  • MDM / MAM / Windows 10 using Intune / SCCM
  • Chef, Puppet, Ansible

Примеры записей предыдущего сезона смотрите здесь:

  • ИТ-карьера – Azure L2 support engineer – публичное собеседование на позицию, что нужно знать – ч.01 – https://youtu.be/HmpgQoahXTA
  • ИТ-карьера – Azure L2 support engineer – публичное собеседование на позицию, что нужно знать – ч.02 – https://youtu.be/cFzd62vlB9M
  • ИТ-карьера – Azure L2 support engineer – публичное собеседование на позицию, что нужно знать – ч.03 – https://youtu.be/DECMirInQ2I

Семинары по AZURE–фундаментальные возможности и основы управления AZURE, использования сервисов безопасности, надежности и мониторинга в AZURE


Подписаться на канал ►►►
Мой LinkedIn ►►► 
ИТ-карьера сисадмина-2019 ►►►
Подготовка к AZ-900 ►►►
Как стать системным администратором ►►►
ИТ карьера – что для этого нужно ►►►
Еще про Azure и серверы ►►►
Про производительность дисков ►►►




По приглашению компании МУК –
https://muk.ua/ – прочитал несколько семинаров по технологиям Azure, в основном в рамках того самого базового курса по Azure, который потом предполагает сдачу сертификационного экзамена Microsoft Az-900 – http://bit.ly/Exam-Az-900 – как раз для тех, кому лениво смотреть весь цикл серий (тем более, что я их так пока и не закончил). Но, если у вас есть потребность “быстренько” познакомиться с основными концепциями и технологиями Azure всего за 4 часа, а не за 15 часов (как в моем курсе http://bit.ly/Exam-Az-900) – тогда смотрите эту “короткую” серию 😉

Темы первого семинара “Основы управления AZURE и базовые сервисы AZURE”


  • Базовые концепции облаков – надежность, эластичность, масштабируемость
  • Датацентры Azure и высокая доступность
  • Утилиты управления Azure – портал, PowerShell, CLI
  • Понятие Resource Group и развертывание ресурсов
  • Основные сетевые сервисы в Azure
  • Основные сервисы хранилищ в Azure
  • Резервное копирование и DR в Azure
  • Виртуальные машины в Azure, отказоустойчивость, мониторинг
  • Вычислительные сервисы в Azure – App Services, Functions
  • Сервисы управления процессами – Power Automate
  • Сервисы контейнеров в Azure


Azure – начальный технический обзор основных сервисов Azure – мой доклад на онлайн-семинаре MUK


Кстати, в конце видео я упоминаю про так называемое “публичное собеседование” –
https://youtu.be/pyzxPupDbI8?t=12811 – эта такое себе анонимное (по желанию) собеседование под запись или сразу в прямом эфире с разбором полетов потом – чтобы желающие сразу могли оценить требования крупной компании на простую должность типа инженера/архитектора поддержки клиентов в Azure. Потом я это опубликую тут, на канале, в разделе ИТ-карьеры – http://bit.ly/ITcarriera_ – а то народ периодически спрашивает, что нужно знать и как понять, знаешь ли ты “это” и просит записать видео – а записывать абстрактно как-то не хочется – типа, перечисления – вот, это, это и это учите, а хотелось бы сделать такой вот живой диалог, плюс – можно же сразу знать, что учить, а я еще буду в конце такого “собеседования” рассказывать, как и для чего 😉 В общем, если вы вдруг хотите поучавствовать в таком эксперименте – добавляйтесь ко мне в контакты в LinkedIn –  https://www.linkedin.com/in/iwalker2000/ и при добавлении не забудьте указать в сообщении, что хотите поучавствовать в онлайн собеседовании 😉


Смотрите продолжение моего доклада по Azure Fundamentals на онлайн семинаре, который проводит по пятницам компания МУК ( https://muk.ua/ ). Первую часть семинара можете посмотреть в записи тут – https://youtu.be/pyzxPupDbI8 – а также напомню, что у меня на канале есть 13 серий базового курса по Azure, который потом предполагает сдачу сертификационного экзамена Microsoft Az-900 – http://bit.ly/Exam-Az-900 . А темами данной части семинара по Azure для технических специалистов стали следующие возможности и функции Azure:

Темы второго семинара “AZURE – основы использования сервисов безопасности, надежности и мониторинга”

  • * Безопасность Azure
    • Защита учетных записей в Azure Active Directory
    • Политики безопасности в Azure
    • Средства защиты данных, шифрование, ключи и секреты
    • Сетевая безопасность Azure
    • Безопасная конфигурация Azure VM
    • Azure Security Center
    • Best Practices для облачной и локальной инфраструктуры с сервисами безопасности Azure
  • * Средства защиты от сбоев
    • Гео-репликация данных
    • Гео-репликация служб
    • Azure Backup
    • Azure Site Recovery
  • * Архитектурные решения
    • Мониторинг инфраструктуры Azure
    • Azure Monitor/Diagnostic
    • Базовые уведомления
    • Azure Automation
    • Azure VM/Apps Insights
    • Azure Log Analytics
    • Использования API для автоматизации мониторинга


Azure – 2я часть – по основнам безопасности, надежности, мониторингу Azure – онлайн-семинар MUK


Другие доклады по облачным и серверным технологиям у меня на канале:

Microsoft Azure Functions на PowerShell–включение аутентификации пользователя для HTTP Trigger, получаем информацию об аутентификации пользователя в коде функции на PowerShell и про “поддержку” Microsoft.


Начнем с технической части повествования – чтобы народу было интересно и полезно почитать, а уже потом перейдем к «политическо-ИТшной» – это уже по желанию, но как по мне так смешно, что аж печально… 😉

Итак, в некоем решении используются Azure Functions, написанные на PowerShell Core (потому что все мои админы знакомы и легко могут модифицировать, развивать решение при необходимости) и в качестве безопасности (аутентификации пользователей) работающие со стандартной идентификацией от Azure AD при вызове того, что называется Http Trigger, т.е. функции, имеющей свой персональный URL, по которому ее и можно запустить, передав требуемые параметры.

Требуется – при развитии решения появилась потребность не только аутентифицировать пользователей, но и иметь некие аналоги аудита (кто какие функции вызывает) и ролевой модели (запрет некоторым людям вызывать функции или использовать глобальные параметры).

Аутентификация на базе Azure AD для Azure Functions включается в пару кликов и не требует какого-либо изменения кода самой Azure Functions – для функции вся аутентификация работает при описанном ниже сценарии «прозрачно», всю работу по аутентификации на себя берет «движок» Azure. Не путать, кстати, с опцией Identity, которая позволяет имперсонализировать сам исполняемый экземпляр Azure Functions в Azure и выполнять код под определенным аккаунтом в Azure, которому можно предоставлять разные права – чем, собственно, мы и пользуемся – используя Azure Functions для выполнения различных задач обслуживания, предоставляя толпе из L1 для выполнения базовых операций не доступ к порталу Azure и клиентским подпискам, а только к функциям, которые уже все сделают «как нужно и правильно»…

Но вернемся к аутентификации пользователей при вызове Azure Functions. Итак:

Заходим на основную страницу требуемой Azure Functions, переключаемся в закладку Platform Features, и там кликаем на опцию Authentication / Authorization

clip_image002

На открывшейся странице устанавливаем переключатель App Service Authentication в положение On и в появившемся ниже выпадающем списке Action to take when request is not authenticated выбираем опцию Log in with Azure Active Directory, а в следующем списке Authentication Providers кликаем на пункт Azure Active Directory / Not Configured

clip_image004

Откроется новое окно настроек – создания экземпляра приложения для аутентификации в Azure AD, где в Managed Mode выбираем опцию Express и далее, в появившихся ниже опциях, выбираем правильный каталог Azure AD (если в вашем профиле их несколько зарегистрировано), Managed Mode оставляем, как есть – Create New AD App – и оставляем имя по умолчанию.

clip_image006

Кликаем Ok в данном диалоге, ждем окончания процесса создания объекта, и в форме Authentication / Authorization, куда вас вернет портал, кликаем вверху на иконку Save. Опять таки – ждем окончания операции и получаем сконфигурированное приложение с аутентификацией от Azure AD. Теперь, при обращении к Azure Functions, которые зарегистрированы, как Http Trigger, Azure будет запрашивать у вызывающего пройти аутентификацию и предъявить аккаунт пользователя из указанной выше Azure Active Directory. Так что анонимные пользователи такую функцию теперь не вызовут.

НО! Такой сценарий достаточен только для «отсечения» анонимных пользователей, а вот если требуется какое-либо подобие RBAC внутри самих Azure Functions – например, пользователь аутентифицируется, но при этом часть параметров функции ему недоступна или доступ к данным внутри самой функции должен быть ограничен – здесь, увы, такая аутентификация не поможет. Да и вообще, у Azure нет толкового RBAC для Functions.

Т.е. после вызова функции вызов перенаправляется на аутентификацию в Azure AD и если все ок – управление передается на Azure Functions и нам надо теперь внутри исполняемой функции получить клейм пользователя и все атрибуты его учетной записи – ID в аутентифицирующей системе, имя, саму систему и прочие токены. При этом все это еще требуется получить в PowerShell.

И тут начинается самое интересное – хотя Microsoft со всех трибун кричит про внедрение Serverless решений, рассказывает про использование Azure Functions вместе с PowerShell для процессов автоматизации – в реальности никакой официальной документации от Microsoft, особенно фундаментальной, по теме Functions/PowerShell вы не найдете. В Интернете ее тоже нет, даже на любимом всеми StackOverflow – просто никто не использует решение, не смотря на громкие заявления Microsoft.

Нашел пару документов про работу с идентити/информацией аутентификации в Functions/Web Apps применительно к C#, но это нагромождение классов и вызовов было явно не релевантно для кода PowerShell. Чтобы понять всю глубину проблемы, стоит сказать, что ни я, ни моя команда – ни разу не девелоперы – только PowerShell скрипты для автоматизации процессов заказчиков и auto-healing, только хардкор, как, например, скриптик PowerShell на 1000 строк для правильного «развертывания всего» с соответствующими внутренностями VM. Для нас вообще удивительно, кстати, почему работа с тем же Azure Storage Queues в PowerShell пишется в 3 строки, а в C# сначала надо создать десяток классов при неочевидном выигрыше в производительности самой Functions. Но это уже лирика, а вывод простой – для людей, которые занимаются автоматизацией процессов на PowerShell, документации по разработке на сайте Microsoft совершенно недостаточно, приходится собирать по крупицам с разных источников, работать «методом тыка» или открыть тикет в саппорте. На том и порешили – продолжаем «копать» и обращаемся в саппорт.

Методом логического анализа кода («методом тыка») на C# обнаружилось, что чтобы работать cо всей информацией по аутентификации пользователя, вызывающего Functions с аутентификацией в Azure AD (как настроено выше) в PowerShell коде можно через Headers одной командой:

$Request.Headers

Ниже – представленный в JSON объект заголовка вызова Http Trigger в Azure Functions (тот самый $Request.Headers). Все поля, как на ладони и далее работаем с ними, как с обычным hashtable в PowerShell, т.е. получаем нужное значение по имени ключа (которым являются поля заголовка ниже).

clip_image008

Т.е., чтобы получить имя пользователя, его ID, его Access Token и т.п. в коде PowerShell – требуется максимум 1-2 команды:

$headersObj = $Request.Headers # get call’s headers

$username = $headersObj[“x-ms-client-principal-name”]   # get user account name

$userid = $headersObj[“x-ms-client-principal-id”]       # get user AAD ID

$userip = $headersObj[“x-forwarded-for”]                # get user IP

И все, далее используем переменные или обращаемся к нужному элементу по имени ключа. Все, тема закрыта, используем нужную информацию для журналирования и внутренних проверок.


И тут начинается вторая часть истории – которая смешная и печальная, особенно в разрезе предыдущей моей истории про то, как Microsoft Ukraine заблокировала и удалила мои видео по курсу для сертификации AZ-900 по Azureпродолжения истории c Microsoft Ukraine после).

Итак, открыл я кейс в Microsoft support по данной проблеме и вот выдержка переписки:

1. Я описываю проблему

clip_image010

2. И получаю от Microsoft Support ответ, что в моем сценарии (option 1, процесс конфигурирования которого и описан выше) такую информацию получить нельзя:

clip_image012

3. Причем, получив такой ответ – я уже 100% уверен в возможности получения этих данных, просто еще не имею на руках конкретного кода. И я отправляю письмо типа – «точно нельзя с опцией 1? Уверены?» и получаю от Microsoft support еще один отрицательный ответ – нет, вы не можете получить такую информацию (причем, происходит это через 5 дней, три из которых – рабочие):

clip_image014

4. И в ответ на это дело я уже пишу, что нашел сценарий, код из 2х строк работает и можно закрывать кейс.

И вот тут начинается самое интересное и «смешное». Мне сразу же перезванивает (буквально в течение 15 минут, до этого отвечал только по почте и то – через сутки) сотрудник службы поддержки Microsoft, который просит поделиться с ними решением проблемы и кодом!!! Т.е. Microsoft, который до этого активно удалял мои технические видео про Azure из принадлежащей мне группы в Facebook, а потом и удалил мой аккаунт из админов – про это читайте тут и тут – теперь вдруг другой рукой просит поделиться информацией со своей поддержкой?! Серьезно?! Я должен бесплатно делать за сотрудников Microsoft их работу? Той информацией, которую Microsoft в качестве базовой просто обязан опубликовать в документации, поскольку и продукт – платный, и везде, со всяких трибун, Microsoft кричит о важности безопасности вообще и правильного кода – в частности. И уж точно этой информацией должна владеть служба поддержки Microsoft…

Чтобы вам было еще смешнее – я и сейчас продолжаю получать письма с просьбами отдать код, последнее пришло уже сегодня, 25 декабря, через 9 дней после того, как я сообщил, что задача имеет решение. Вот реально?! За 9 дней внутри Microsoft собственный отдел поддержки не смог найти техническое решение и продолжает ждать у моря погоды – поделюсь ли я кодом?!

clip_image016

И самое смешное – Microsoft за последние 3-5 лет сократил практически весь высококвалифицированный технический персонал из своих локальных офисов ввиду того, что Azure поддержки не требует, его надо только продавать, а технической поддержкой пусть занимаются партнеры «за деньги». Azure, как показывает опыт, просто за бла-бла-бла девочек из маркетинга Microsoft не продается (про это я говорю тоже в первой серии курса AZ-900), а партнеры, при таких отношении, «экспертизе», «документации» и «поддержке» от Microsoft – точно не будут вкладываться в «прибыльный и простой бизнес Azure» и не будут развивать компетенции Azure, как и клиенты не горят желанием платить деньги «каким-то партнерам», один раз столкнувшись с подобным невежеством поддержки «самого Microsoft». И, особенно, партнерам не интересно это делать, если развитие компетенций не интересно самому Microsoft и даже поддержка Microsoft не в состоянии дать ответ на простой, как оказалось, вопрос.

И если объективно смотреть на ситуацию c поддержкой Azure, то можно смело сказать, исходя из своего опыта работы С Microsoft последние пару лет, что никакой реальной поддержки и технической компетенции «на местах» у Microsoft сейчас просто нет. Выгребайте сами. И иметь у себя классного специалиста по Azure в штате – это будет даже лучше и безопаснее, чем вам пришлют какого-то «технического консультанта» от Microsoft, который в реальности окажется «не пойми кто», как я уже писал во второй части большого поста про Microsoft.

Но и это еще не все про Microsoft и поддержку Azure… Читайте в следующем посте про развертывание Windows кластеров в Azure и про официальные скрипты от Microsoft.

Друге видео то теме Azure и ИТ-карьеры:

Microsoft Exam AZ-900 Azure Fundamentals–бесплатная подготовка к сертификационному экзамену, часть.02: экономика облачных технологий, вопросы по CapEx и OpEx в Azure


Продолжаю серию видео – http://bit.ly/Exam-Az-900 – по подготовке к сертификационному экзамену Microsoft AZ-900 Azure Fundamentals. В этой серии – сразу несколько небольших (вопросов на 4-5), но достаточно неприятных для ИТ-специалистов тем экзамена – Модель Shared Economy в облачных технологиях для снижения стоимости и главная экономическая фишка, под которой продаются любые “облака” – CapEx/OpEx в ИТ. Да-да, в AZ-900 есть такие вопросы, потому я в обзорном видео к экзамену AZ-900 – https://youtu.be/_2-txkA3Daw – и говорил, что для “простого” технического специалиста некоторые вопросы могут быть весьма “далекими” и совершенно непрактичными. Хотя, в реальности – оно так и есть – Microsoft предлагает “правильные ответы” согласно своей маркетинговой идеологии… Так что смотрите и запоминайте, не забудьте пройтись и по линкам.

Подписаться на канал ►►► http://bit.ly/iwalker2000_subs
Мой LinkedIn ►►► https://www.linkedin.com/in/iwalker2000/
Подготовка к AZ-900 ►►► http://bit.ly/Exam-Az-900
Как стать системным администратором ►►► http://bit.ly/ITProSysAdmin
ИТ карьера – что для этого нужно ►►► http://bit.ly/ITcarriera_
Обзор GPD P2 Max ►►►
https://youtu.be/HZfN_geAvQI
Все обзоры Windows 10 ►►► http://bit.ly/Windows10_review
Про производительность дисков ►►► http://bit.ly/Disk_perf_p01


Exam AZ-900 Azure Fundamentals – подготовка к экзамену, ч.02: CapEx и OpEx, экономические вопросы

Предыдущие видео данной серии про экзамен AZ-900 смотрите здесь – http://bit.ly/Exam-Az-900 :

  • Exam AZ-900 Azure Fundamentals – подготовка к экзамену, ч.01: общий обзор экзамена и как готовиться – https://youtu.be/_2-txkA3Daw

Azure и совместное потребление

  • Microsoft покупает много серверов сразу по цене, которая значительно ниже розничной (в реальности – Microsoft заказывает блоки у компаний типа QCT и собирает в стойки по своей архитектуре – Open Compute Project (OCP) – https://azure.microsoft.com/en-us/global-infrastructure/hardware-innovation/ ).
  • Microsoft собирает их облако, которое позволяет максимально плотно заполнить нагрузкой каждый физический сервер – 80% нагрузки на сервер в сравнении с 30% «обычной» нагрузки на сервер в организациях.
  • Аналогично – для хранилищ и сетевой инфраструктуры.
  • Microsoft перепродает «плотно упакованные» серверы по частям – в виде виртуальных машин и прочих сервисов.
  • Суммарная стоимость виртуальных машин, запущенных клиентами на таких серверах – выше стоимости всех серверов. Профит!
  • Чем больше клиентов и плотнее упаковка и выше нагрузка на серверы – тем выше профит… Есть возможность снижать цены или предоставлять доп.сервисы дешевле.
  • Про экономику облачных датацентров – http://cloudscaling.com/blog/cloud-computing/understanding-cloud-datacenter-economies-of-scale/
  • Клиент арендует по принципу «заплатил только за использование» и не нуждается:
    • В приобретении серверов и начальных крупных затратах
    • Помещении для хранения, средств энергопитания
    • Не нуждается в обслуживании физических серверов
    • Клиент быстро может нарастить мощности своих вычислений без дополнительных затрат


СapEx & OpEx в ИТ и облаках:

  • CapEx – разовые крупные покупка любого «железа», «софт», оплата проектов по строительство ЦОД (серверных комнат), разработка программного обеспечения и т.п.
  • OpEx – регулярные выплаты по потребностям – зарплата ИТ-специалистам, связь и коммуникации от провайдеров, электричество, обслуживание и комплектующие материалы, подписка на ПО и сервисы.
  • Облачные провайдеры сдают в аренду готовые сервисы (виртуальные машины или программные комплексы – например, Office 365 – это почта, взаимодействие в команде, хранилища и т.п.) с помесячной оплатой за услуги – по размеру ресурса или количеству пользователей и берут на себя все затраты по аппаратному и программному обеспечению, строительству и обслуживанию сервисов.
  • Таким образом – облако переводит для конечного пользователя CapEx в OpEx – пользователю не нужно тратить деньги на начальные инвестиции (CapEx) и он просто арендует те ресурсы, которые ему требуются, выплачивая помесячно стоимость только потребленных ресурсов (OpEx).
  • OpEx в облаках – фактически, рассрочка выплаты тех же денег, которые потратила бы компания на покупку железа и т.п. в течение 5 лет (обычно).
  • Эффективность переноса решения в облако Azure позволяет посчитать Total Cost Ownership (TCO) Calculator на сайте Azure.

В следующем видео – разбор вопросов AZ-900 по теме характеристики облака – эластичность, масштабируемость, высокая доступность, отказоустойчивость, аварийное восстановление.

Друге видео то теме Azure и ИТ-карьеры:

  • Доклады по серверным технологиям Microsoft Windows Server – http://bit.ly/WindowsServer_overview
  • ИТ-карьера: как стать ИТ-специалистом, основные шаги для успешной карьеры в ИТ – http://bit.ly/ITcarriera_

Microsoft Exam AZ-900 Azure Fundamentals–бесплатная подготовка к сертификационному экзамену, часть.01: общий обзор экзамена и как готовиться


Подписаться на канал ►►► http://bit.ly/iwalker2000_subs | Мой LinkedIn ►►► https://www.linkedin.com/in/iwalker2000/ | Подготовка к AZ-900 ►►► http://bit.ly/Exam-Az-900 | Как стать системным администратором ►►► http://bit.ly/ITProSysAdmin ИТ карьера – что для этого нужно ►►► http://bit.ly/ITcarriera_ | Загляните на мой блог ►►► http://iwalker2000.com | Обзор GPD P2 Max ►►► https://youtu.be/HZfN_geAvQI | Все обзоры Windows 10 ►►► http://bit.ly/Windows10_review | Про производительность дисков ►►► http://bit.ly/Disk_perf_p01
 

Я уже несколько раз начинал серию “серьёзных” видео про ИТ для системных администраторов и вообще 😉 Это была и серия про ИТ-карьеру – http://bit.ly/ITcarriera_  – в рамках которой я планировал перейти от простых рекомендаций по карьере в ИТ к техническим рекомендациям, и серия про Microsoft Azure для системных администраторов – http://bit.ly/WindowsServer_overview – где я планировал рассказать про Azure с точки зрения миграции ИТ-инфраструктур и гибридных решений. И обе эти серии тихо закрылись – ввиду малого интереса аудитории к ним и больших временных затрат на их подготовку – как бы – “если людям не интересно, то чего я буду тратить на это свое время”.

И вот, я таки снова решил начать новую серию – которая будет менее абстрактной, чем предыдущая, поскольку она будет отвечать конкретным задачам – не научить некоего “Васю-будущего админа облаков” чему-то вообще, а помочь в подготовке и сдаче достаточно специфического сертификационного экзамена Microsoft – Exam AZ-900: Microsoft Azure Fundamentals (Основы Microsoft Azure). И даже если вы не собираетесь сдавать сам экзамен, то я постараюсь построить материал так, чтобы вы могли получить современные и обширные знания по облачным технологиям вообще и технологиям Microsoft Azure в частности. И да, видео не будут иметь ограничений по уровню начальных знания – их можно (и нужно) смотреть и нетехническим людям в ИТ – для расширения кругозора и понимания того, что вы продаете и с чем каждый день сталкиваетесь в повседневной работе/жизни – например, как мне сказали “Облако – это OneDrive” 😉 Нет, это один из множества сервисов, которые предоставляет облако. И да, поскольку я пообещал этими видео помочь людям – я постараюсь оперативно создавать новые и закончить всю серию, охватив все очень обширные темы экзамена. Так что подписывайтесь на канал –http://bit.ly/iwalker2000_subs – продолжение следует. А между сериями будут другие обычные видео про гаджеты и т.п.


Exam AZ-900 Azure Fundamentals – подготовка к экзамену, ч.01: общий обзор экзамена и как готовиться



Для кого это серия видео про Azure?


  • Для всех, кто планирует сдать экзамен Exam AZ-900: Microsoft Azure Fundamentals – Основы Microsoft Azure.

      – Для тех, кто планирует подготовиться самостоятельно, но им тяжело сконцентрироваться на конкретных направлениях изучения ввиду того, что материал экзамена очень обширный.
      – Для тех, кто «не дружит» с английским языком на достаточном уровне и ищет в Интернете возможность поучиться на русском бесплатно.
      – Для тех, кто ищет в Интернете брейндампы данного экзамена бесплатно 😉 но хочет еще и понимать, что он там заучивает

  • Для моих бывших коллег из Microsoft, особенно из отделов продаж, которые ходят и рассказывают, какой классный Azure
    , но потом компания потребовала всех их сдать экзамен – и они его успешно провалили и обратились ко мне за помощью (а вы думали, я вас не потроллю? %) )

  • Для всех, кто собирается работать в ИТ (даже без экзаменов) по направлению облаков, и не обязательно Microsoft Azure
    – эта серия видео будет также идти, как часть моей серии «ИТ-карьера» –
    http://bit.ly/ITcarriera_ и http://bit.ly/itcar_post1

  • А! И для моего сына, которому нужно написать в его Slovenská technická univerzita v Bratislave (STU) курсовую по введению в облака
    😉 Останется только перевести на словацкий.

  • Планы на серию? Это примерно 20-25 роликов по 30-45 минут каждый, с детальным изложением одной из тем экзамена, с ориентировочными вопросами, практическими примерами и т.п.
    – будут выходить по 2-3 видео в неделю, т.е. в общем – около 2х месяцев 😉



Особенности экзамена AZ-900


  • Экзамен абсолютно дурацкий!

  • Это не технический в общем понимании экзамен…

  • В экзамене очень много всякого маркетингового булшита от Microsoft.

  • В экзамене много теоретических и абстрактных вопросов (типа authentication vs authorization, CapEx vs OpEx)

  • В экзамене много спорных вопросов, которые сам Microsoft озвучивает по разному, исходя из ситуации – например, снижения стоимости владения потому, что не нужно столько админов? – в жизни МС руководству рассказывает, что ДА – вы уменьшите потребность в персонале, в экзамене – он же для админов – НЕТ, админов сокращать не надо!

  • В экзамене много вопросов по подпискам, лицензированию, планам поддержки и прочим.

  • В экзамене много вопросов по международным регулятивным требованиям – типа GDPR, NIST, ISO – и сервисам для государственных учреждений.



Особенности экзамена AZ-900 – Если вы ТЕХНИЧЕСКИЙ СПЕЦИАЛИСТ, который работает с Azure, то вы имеете шанс НЕ СДАТЬ его потому, что:

az900-01-05

Особенности экзамена AZ-900 – Если вы НЕ ТЕХНИЧЕСКИЙ СПЕЦИАЛИСТ, а менеджер по продажам Microsoft, или другой «эффективный менеджер», особенно новомодный миллениал – то вы НЕ СДАДИТЕ:

az900-01-06

Основные группы вопросов на AZ-900

az900-01-07

Как подготовиться к сдаче сертификационного экзамена Microsoft AZ-900 Azure Fundamentals?

  • Набраться терпения и просмотреть все видео этой серии 😉
  • У меня на канале еще много видео по теме Azure, особенно здесь – http://bit.ly/WindowsServer_overview и здесь – http://j.mp/Azure_IaaS_2015
  • Подписаться на мой канал, поставить лайк и перешарить эти видео в соц.сетях – это +100 в карму, а карма, как известно, очень помогает на экзамене.
  • Почитать рекомендуемую литературу (см.дальше) и различные источники – я первоисточниками для подготовки буду делиться в следующих, более практических видео по AZ-900.
  • Официальные курсы? Если хотите – идите. Все зависит от самого тренера – как повезет. В мою бытность тренером я подстраивал материал курса под реальные вопросы экзаменов, потому как сам материал курса не предназначен для подготовки к экзамену.
  • Брейндампы? Да, если найдете – сейчас это очень прибыльный бизнес и «бесплатных» найти проблематично, тем более – с комментариями и рекомендациями.
  • Практическая работа – без более-менее внятного представления, как же выглядит Azure Portal и чем отличается Virtual Machine от Web App, сдать будет проблематично.
  • Начните с создания бесплатной подписки и страницы https://azure.microsoft.com/en-us/get-started/

Список книг для самоподготовки к экзамену AZ-900

  • Exam Ref AZ-900 Microsoft Azure Fundamentals – собственно, материалы официального курса Microsoft
  • Learn Microsoft Azure
  • Azure: Microsoft Azure Tutorial for Beginners
  • Microsoft Azure For Beginners: Getting Started with Microsoft Azure
  • Azure: Microsoft Azure Tutorial The Ultimate Beginners Guide
  • Hands-On Cloud Administration in Azure: Implement, monitor, and manage important Azure services and components including IaaS and PaaS