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


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