Нажмите "Enter", чтобы перейти к содержанию

Ресурс заблокирован: Ресурс заблокирован

Содержание

Что делать если сайт заблокирован провайдером

Главная » Интернет

Интернет

Автор Neutronfan Просмотров 62к. Опубликовано

В один “прекрасный” день при попытке зайти на какой-либо сайт, вы можете увидеть вместо этого сайта страницу с таким сообщением: “Уважаемые пользователи! Мы приносим свои извинения, но доступ к запрашиваемому ресурсу ограничен”, или с таким: “Заблокировано по решению федеральных органов исполнительной власти”, и таким: “Ресурс по данному IP-адресу заблокирован по решению органов государственной власти”.

Если ваш провайдер Beeline, то это сообщение может выглядеть так:

Если у вас

ЭрТелеком или Дом. ру, то можете увидеть что-то подобное:

Ростелеком выдает вот такое:

Чаще всего это означает, что данный сайт каким-либо образом нарушил законодательство РФ, и по требованию Роскомнадзора ваш интернет-провайдер  заблокировал доступ к нему.

Но может быть и такое, что этот сайт блокируется неправомерно. Возможно он находится на одном сервере с “сайтом-нарушителем закона” и у них один IP-адрес. А Роскомнадзор или ваш провайдер, не разбираясь кто прав, а кто виноват – просто заблокировали доступ к этому IP.

Если вы хотите узнать причину блокировки, то нужно зайти на сайт Роскомнадзора, где находится Единый реестр запрещенных сайтов.

Здесь мы вводим в поисковую строку название заблокированного сайта, затем набираем капчу и жмем кнопку “Найти”:
[adsense1]

Если просто по доменному имени заблокированный ресурс не будет найден – не спешите радоваться. Проверить нужно и по

URL-адресу, и по IP-адресу (как узнать IP-адрес сайта смотрите здесь).

В моем случае, когда я ввел полный URL-адрес сайта (это когда с http://www.), то оказалось, что он действительно внесен в реестр. По IP-адресу он также был найден.
[adsense2]
Это означает, что провайдер совершенно справедливо заблокировал доступ к данному ресурсу. В конкретных причинах блокировки должен уже разбираться сам владелец этого сайта – ваши полномочия на этом заканчиваются.

В том случае, если вы проверили сайт всеми способами (и по доменному имени, и по IP-адресу, и по URL-адресу), а его в реестре запрещенных сайтов не оказалось – тогда нужно обращаться к вашему интернет-провайдеру. Это можно сделать, позвонив по телефону тех. поддержки, а лучше написать на официальный форум для абонентов. Практически у всех провайдеров, даже у самых мелких, есть свой форум. Пусть вам объяснят причину блокировки сайта.

[stextbox]Если будете писать на форум, то вас там могут попросить сделать трассировку до этого сайта и прислать им результат. Если не знаете, что такое трассировка и как ее сделать – ознакомьтесь с этой статьей и вам сразу всё станет понятно.[/stextbox]

Если провайдер не реагирует, то на него даже можно пожаловаться, написав обращение в Роскомнадзор вот на этом сайте.

Но я рекомендую не тратить свои нервы и время, т.к. обойти блокировку любого сайта совсем не сложно. И при этом не имеет значения: законно его заблокировали или это произвол провайдера. Я написал отдельную статью, в которой перечислил Основные способы обхода блокировки сайтов. Всем рекомендую с ней ознакомиться – когда-нибудь обязательно пригодится.

IP Роскомнадзор сайты

Защита ресурсов Azure с помощью блокировки — Azure Resource Manager

  • Статья

Администратор может заблокировать подписку, группу ресурсов или ресурс Azure, чтобы защитить их от случайного удаления или изменения пользователем. Блокировка переопределяет любые разрешения пользователя.

Примечание

Эта статья была частично создана с помощью искусственного интеллекта. Перед публикацией автор проверил и отредактировал содержимое по мере необходимости. Ознакомьтесь с нашими принципами использования содержимого, созданного ИИ, в Microsoft Learn.

Вы можете задать блокировки, которые препятствуют удалению или изменению. На портале эти блокировки называются Delete и Read-only. В командной строке эти блокировки называются CanNotDelete и ReadOnly.

  • CanNotDelete означает, что авторизованные пользователи могут читать и изменять ресурс, но не могут удалить его.
  • ReadOnly означает, что авторизованные пользователи смогут читать ресурс, но не смогут удалить или обновить его. Применение этой блокировки похоже на ограничение авторизованных пользователей, когда у них остаются только разрешения, предоставляемые ролью Читатель.

В отличие от управления доступом на основе ролей блокировки управления используются для применения ограничения для всех пользователей и ролей. Сведения о настройке разрешений для пользователей и ролей см. в статье Azure RBAC.

Наследование блокировки

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

Ресурсы расширения наследуют блокировки от ресурса, к которому они применяются. Например, Microsoft.Insights/diagnosticSettings — это тип ресурса расширения. Если вы примените параметр диагностики к BLOB-объекту хранилища и заблокируете учетную запись хранения, вы не сможете удалить параметр диагностики. Это наследование имеет смысл, так как полный идентификатор ресурса диагностического параметра:

/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}/blobServices/default/providers/microsoft.
insights/diagnosticSettings/{setting-name}"

Что соответствует области идентификатора ресурса заблокированного ресурса:

/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}

Если к ресурсу применена блокировка Delete, то при попытке удалить группу ресурсов эта функция заблокирует всю операцию удаления. Удаление не будет выполнено, даже если группа ресурсов или другие ресурсы в группе ресурсов не заблокированы. Операция удаления не выполняется частично.

При отмене подписки Azure:

  • Блокировка ресурса не запрещает отмену подписки.
  • Azure сохраняет ресурсы, деактивируя их вместо немедленного удаления.
  • Безвозвратное удаление ресурсов выполняется только после истечения времени ожидания.

Общие сведения об области блокировок

Примечание

Блокировки применяются только к операциям Azure уровня управления, а не к операциям плоскости данных.

Операции уровня управления Azure направляются в раздел https://management. azure.com. Операции плоскости данных Azure направляются экземпляру службы, например, https://myaccount.blob.core.windows.net/. См. раздел Уровень управления и плоскость данных Azure. Чтобы узнать, какие операции используют URL-адрес уровня управления, см. статью REST API Azure.

Различие означает, что блокировка защищает ресурс от изменений, но не ограничивает то, как ресурс выполняет свои функции. Например, блокировка ReadOnly на логическом сервере Базы данных SQL защищает этот сервер от удаления и изменения. Она разрешает создавать, обновлять и удалять данные в базе данных сервера. Операции плоскости данных разрешают транзакции данных. Эти запросы не направляются в раздел https://management.azure.com.

Моменты, которые следует учесть перед применением блокировок

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

Блокировки не позволяют методу POST отправлять данные в API Azure Resource Manager (ARM). Ниже приведены некоторые распространенные примеры заблокированных операций:

  • Блокировка «только для чтения» учетной записи хранения запрещает пользователям получать списки ключей учетных записей. Запрос POST обрабатывает операцию отображения списка ключей службы хранилища Azure для защиты доступа к ключам учетной записи. Ключи учетной записи обеспечивают полный доступ к данным в учетной записи хранения. Если для учетной записи хранения настроена блокировка «только для чтения», пользователи, у которых нет ключей учетной записи, должны использовать учетные данные Azure AD для доступа к данным BLOB-объектов или очередей. Блокировка «только для чтения» также запрещает назначать роли RBAC Azure, областью действия которых является учетная запись хранения или контейнер данных (контейнер BLOB-объектов или очередь).

  • Блокировка «только для чтения» учетной записи хранения защищает назначения управления доступом на основе ролей (RBAC) Azure, областью действия которых является учетная запись хранения или контейнер данных (контейнер BLOB-объектов или очередь).

  • Блокировка только для чтения в учетной записи хранения предотвращает создание контейнера BLOB-объектов.

  • Блокировка только для чтения или не удается удалить блокировку в учетной записи хранения не препятствует удалению или изменению ее данных. Он также не защищает данные в большом двоичном объекте, очереди, таблице или файле.

  • API учетной записи хранения предоставляет операции плоскости данных и уровня управления . Если запрос использует операции

    плоскости данных , блокировка учетной записи хранения не защищает данные BLOB-объектов, очередей, таблиц или файлов в этой учетной записи хранения. Однако если запрос использует операции уровня управления , блокировка защищает эти ресурсы.

    Например, если в запросе используются общие папки — удаление, которая является операцией уровня управления, удаление завершается ошибкой. а если он использует операцию плоскости данных Удаление общего ресурса, удаление выполнится успешно. Рекомендуется использовать операции уровня управления.

  • Блокировка только для чтения или блокировка не удается удалить в группе безопасности сети (NSG) предотвращает создание журнала потоков трафика для группы безопасности сети.

  • Кроме того, применение блокировки «только для чтения» к ресурсу

    службы приложений не позволит обозревателю сервера Visual Studio отображать файлы для ресурса, так как для их взаимодействия требуется доступ на запись.

  • Блокировка «только для чтения» группы ресурсов, которая содержит план службы приложений, запрещает увеличивать масштаб плана горизонтально или вертикально.

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

  • Блокировка только для чтения в группе ресурсов, которая содержит учетную запись автоматизации, предотвращает запуск любых runbook. Для этих операций требуется запрос, использующий метод POST.

  • Блокировка «не удается удалить» группы ресурсов запрещает Azure Resource Manager автоматически удалять развертывания в журнале. При достижении 800 развертываний в журнале ваши развертывания начнут завершаться сбоем.

  • Блокировка «не удается удалить» в группе ресурсов, созданной службой Azure Backup, приводит к сбою резервного копирования. Служба поддерживает не более 18 точек восстановления. При наличии блокировки служба резервного копирования не может удалять точки восстановления. Более подробные сведения см. в разделе Часто задаваемые вопросы о резервном копировании виртуальных машин Azure.

  • Блокировка удаления для группы ресурсов, содержащей рабочие области Машинного обучения Azure, нарушает правильную работу автомасштабирования вычислительных кластеров Машинного обучения Azure. При блокировке автомасштабирование не может удалить неиспользуемые узлы. Решение потребляет больше ресурсов, чем требуется для рабочей нагрузки.

  • Блокировка только для чтения в рабочей области Log Analytics не позволяет включить аналитику поведения пользователей и сущностей (UEBA).

  • Блокировка не удается удалить в рабочей области Log Analytics не препятствует операциям очистки данных. Вместо этого удалите роль очистки данных у пользователя.

  • Блокировка «только для чтения» в подписке не позволяет Azure Advisor работать корректно. Advisor не удается сохранять результаты запросов.

  • Блокировка «только для чтения» шлюза приложений не позволяет получить сведения о работоспособности серверной части шлюза приложений. Эта операция использует метод POST, который запрещается блокировкой «только для чтения».

  • Блокировка «только для чтения» в кластере Azure Kubernetes Service (AKS) ограничивает доступ к ресурсам кластера через портал. Блокировка «только для чтения» не позволяет использовать раздел «Ресурсы Kubernetes» кластера AKS на портале Azure для выбора ресурса кластера. Для выполнения этих операций требуется запрос проверки подлинности, использующий метод POST.

  • Блокировка с запретом на удаление виртуальной машины, защищенной Site Recovery, не позволяет правильно удалить определенные ссылки на ресурсы, связанные с Site Recovery, при удалении защиты или отключении репликации. Если вы планируете снова защитить виртуальную машину позже, необходимо снять блокировку перед отключением защиты. Если вы не снимите блокировку, необходимо выполнить определенные действия, чтобы очистить устаревшие ссылки, прежде чем можно будет защитить виртуальную машину. Дополнительные сведения можно найти в статье Устранение неполадок репликации виртуальных машин Azure.

Кто может создавать или удалять блокировки

Для создания или удаления блокировок управления необходим доступ к действию Microsoft. Authorization/* или Microsoft.Authorization/locks/*. Создавать и удалять блокировки управления могут только пользователи со встроенными ролями Владелец и Администратор доступа пользователей. Вы также можете создать настраиваемую роль с необходимыми разрешениями.

Управляемые приложения и блокировки

Некоторые службы Azure, например Azure Databricks, используют для реализации этой службы управляемые приложения. В этом случае служба создает две группы ресурсов. Одна из них — это разблокированная группа ресурсов, содержащая общие сведения о службе. Другая — заблокированная группа ресурсов, содержащая инфраструктуру службы.

При попытке удалить инфраструктурную группу ресурсов отображается ошибка с уведомлением о том, что группа ресурсов заблокирована. Если попытаться удалить блокировку инфраструктурной группы ресурсов, отображается ошибка с уведомлением о том, что удалить блокировку невозможно, так как она принадлежит системному приложению.

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

В случае с управляемыми приложениями выбирайте развернутую вами службу.

Обратите внимание, что служба содержит ссылку на группу управляемых ресурсов. Эта группа ресурсов содержит инфраструктуру и заблокирована. Удалить ее можно только косвенно.

Чтобы удалить все данные для службы, включая заблокированную инфраструктурную группу ресурсов, выберите Удалить для этой службы.

Настройка блокировок

Портал

На панели навигации слева находятся функция блокировки подписки (Блокировки ресурсов) и функция блокировки группы ресурсов (Блокировки).

  1. В колонке параметров для ресурса, группы ресурсов или подписки, которые необходимо заблокировать, выберите Блокировки.

  2. Чтобы добавить блокировку, выберите Добавить. Если вы хотите создать блокировку на родительском уровне, выберите родительский ресурс. Выбранный ресурс наследует блокировку от родительского ресурса. Например, можно заблокировать группу ресурсов, чтобы применить блокировку ко всем ее ресурсам.

  3. Присвойте блокировке имя и уровень блокировки. При необходимости можно добавить примечания, описывающие блокировку.

  4. Нажмите кнопку Удалить, чтобы удалить выбранную блокировку.

Шаблон

При использовании шаблона ARM или файла Bicep для развертывания блокировки необходимо понимать, как область развертывания и область блокировки взаимодействуют друг с другом. Чтобы применить блокировку в области развертывания, например, чтобы заблокировать группу ресурсов или подписку, не устанавливайте свойство области действия. При блокировке ресурса в области развертывания установите свойство области действия для блокировки.

Следующий шаблон применяет блокировку к группе ресурсов, в которой она развернута. Обратите внимание, что в ресурсе блокировки нет свойства области действия, так как область блокировки соответствует области развертывания. Разверните этот шаблон на уровне группы ресурсов.

  • JSON
  • Bicep
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/locks",
      "apiVersion": "2016-09-01",
      "name": "rgLock",
      "properties": {
        "level": "CanNotDelete",
        "notes": "Resource group should not be deleted."
      }
    }
  ]
}

Чтобы создать группу ресурсов и заблокировать ее, разверните следующий шаблон на уровне подписки.

  • JSON
  • Bicep
{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate. json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "rgName": {
      "type": "string"
    },
    "rgLocation": {
      "type": "string"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "name": "[parameters('rgName')]",
      "location": "[parameters('rgLocation')]",
      "properties": {}
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "lockDeployment",
      "resourceGroup": "[parameters('rgName')]",
      "dependsOn": [
        "[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {},
          "variables": {},
          "resources": [
            {
              "type": "Microsoft. Authorization/locks",
              "apiVersion": "2016-09-01",
              "name": "rgLock",
              "properties": {
                "level": "CanNotDelete",
                "notes": "Resource group and its resources should not be deleted."
              }
            }
          ],
          "outputs": {}
        }
      }
    }
  ],
  "outputs": {}
}

При применении блокировки к ресурсу в группе ресурсов добавьте свойство «Scope». Введите имя ресурса в качестве области блокировки.

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

  • JSON
  • Bicep
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "hostingPlanName": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup(). location]"
    }
  },
  "variables": {
    "siteName": "[concat('ExampleSite', uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2020-12-01",
      "name": "[parameters('hostingPlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "tier": "Free",
        "name": "f1",
        "capacity": 0
      },
      "properties": {
        "targetWorkerCount": 1
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2020-12-01",
      "name": "[variables('siteName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
      ],
      "properties": {
        "serverFarmId": "[parameters('hostingPlanName')]"
      }
    },
    {
      "type": "Microsoft.Authorization/locks",
      "apiVersion": "2016-09-01",
      "name": "siteLock",
      "scope": "[concat('Microsoft.Web/sites/', variables('siteName'))]",
      "dependsOn": [
        "[resourceId('Microsoft. Web/sites', variables('siteName'))]"
      ],
      "properties": {
        "level": "CanNotDelete",
        "notes": "Site should not be deleted."
      }
    }
  ]
}

Azure PowerShell

Вы можете заблокировать развернутые ресурсы с помощью Azure PowerShell, выполнив команду New-AzResourceLock.

Чтобы заблокировать ресурс, укажите имя и тип ресурса, а также имя группы ресурсов.

New-AzResourceLock -LockLevel CanNotDelete -LockName LockSite -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup

Чтобы заблокировать группу ресурсов, укажите ее имя.

New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName exampleresourcegroup

Для получения информации о блокировке используйте команду Get-AzResourceLock. Чтобы получить все блокировки в подписке, выполните следующую команду:

Get-AzResourceLock

Чтобы получить все блокировки для ресурса, выполните следующую команду:

Get-AzResourceLock -ResourceName examplesite -ResourceType Microsoft. Web/sites -ResourceGroupName exampleresourcegroup

Чтобы получить все блокировки для группы ресурсов, выполните следующую команду:

Get-AzResourceLock -ResourceGroupName exampleresourcegroup

Чтобы удалить блокировку для ресурса, используйте:

$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup -ResourceName examplesite -ResourceType Microsoft.Web/sites).LockId
Remove-AzResourceLock -LockId $lockId

Чтобы удалить блокировку для группы ресурсов, используйте:

$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup).LockId
Remove-AzResourceLock -LockId $lockId

Azure CLI

Вы можете заблокировать развернутые ресурсы с помощью Azure CLI, выполнив команду az lock create.

Чтобы заблокировать ресурс, укажите имя и тип ресурса, а также имя группы ресурсов.

az lock create --name LockSite --lock-type CanNotDelete --resource-group exampleresourcegroup --resource-name examplesite --resource-type Microsoft. Web/sites

Чтобы заблокировать группу ресурсов, укажите ее имя.

az lock create --name LockGroup --lock-type CanNotDelete --resource-group exampleresourcegroup

Чтобы получить сведения о блокировке, выполните команду az lock list. Чтобы получить все блокировки в подписке, выполните следующую команду:

az lock list

Чтобы получить все блокировки для ресурса, выполните следующую команду:

az lock list --resource-group exampleresourcegroup --resource-name examplesite --namespace Microsoft.Web --resource-type sites --parent ""

Чтобы получить все блокировки для группы ресурсов, выполните следующую команду:

az lock list --resource-group exampleresourcegroup

Чтобы удалить блокировку для ресурса, используйте:

lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --resource-type Microsoft.Web/sites --resource-name examplesite --output tsv --query id)
az lock delete --ids $lockid

Чтобы удалить блокировку для группы ресурсов, используйте:

lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup  --output tsv --query id)
az lock delete --ids $lockid

Python

Вы блокируете развернутые ресурсы с помощью Python с помощью команды ManagementLockClient. management_locks.create_or_update_at_resource_group_level .

Чтобы заблокировать ресурс, укажите имя и тип ресурса, а также имя группы ресурсов.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_result = lock_client.management_locks.create_or_update_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite",
    {
        "level": "CanNotDelete"
    }
)

Чтобы заблокировать группу ресурсов, укажите ее имя.

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_result = lock_client.management_locks. create_or_update_at_resource_group_level(
    "exampleGroup",
    "lockGroup",
    {
        "level": "CanNotDelete"
    }
)

Чтобы получить сведения обо всех блокировках в подписке, используйте ManagementLockClient.management_locks.get. Чтобы получить все блокировки в подписке, выполните следующую команду:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_result = lock_client.management_locks.list_at_subscription_level()
for lock in lock_result:
    print(f"Lock name: {lock.name}")
    print(f"Lock level: {lock.level}")
    print(f"Lock notes: {lock.notes}")

Чтобы получить блокировку для ресурса, используйте:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os. environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_result = lock_client.management_locks.get_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite"
)
print(f"Lock ID: {lock_result.id}")
print(f"Lock Name: {lock_result.name}")
print(f"Lock Level: {lock_result.level}")

Чтобы получить блокировку для группы ресурсов, используйте:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_result = lock_client.management_locks.get_at_resource_group_level(
    "exampleGroup",
    "lockGroup"
)
print(f"Lock ID: {lock_result.id}")
print(f"Lock Level: {lock_result.level}")

Чтобы удалить блокировку для ресурса, используйте:

import os
from azure.identity import AzureCliCredential
from azure. mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_client.management_locks.delete_at_resource_level(
    "exampleGroup",
    "Microsoft.Web",
    "",
    "sites",
    "examplesite",
    "lockSite"
)

Чтобы удалить блокировку для группы ресурсов, используйте:

import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ManagementLockClient
credential = AzureCliCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient(credential, subscription_id)
lock_client.management_locks.delete_at_resource_group_level("exampleGroup", "lockGroup")

REST API

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

Чтобы создать блокировку, выполните следующую команду:

PUT https://management. azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}

Областью может быть подписка, группа ресурсов или ресурс. Вы можете назначить блокировке любое имя. Для версии API укажите значение 2016-09-01.

В запросе включите объект JSON, который задает свойства блокировки.

{
  "properties": {
  "level": "CanNotDelete",
  "notes": "Optional text notes."
  }
}

Дальнейшие действия

  • Сведения о том, как логично упорядочить свои ресурсы, см. в разделе Использование тегов для организации ресурсов.
  • Ограничения и соглашения можно применять внутри подписки с помощью настраиваемых политик. Дополнительные сведения см. в статье Что такое служба «Политика Azure».
  • Инструкции по использованию Resource Manager для эффективного управления подписками в организациях см. в статье Корпоративный каркас Azure: рекомендуемая система управления подписками.

Защитите свои ресурсы Azure с помощью замка — Azure Resource Manager

  • Статья

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

Примечание

Эта статья была частично создана с помощью искусственного интеллекта. Перед публикацией автор просматривал и редактировал содержание по мере необходимости. Ознакомьтесь с нашими принципами использования контента, созданного ИИ, в Microsoft Learn.

Вы можете установить блокировки, которые предотвратят удаление или изменение. На портале эти блокировки называются Удалить и Только для чтения . В командной строке эти блокировки называются CanNotDelete и ReadOnly 9.0020 .

  • CanNotDelete означает, что авторизованные пользователи могут читать и изменять ресурс, но не могут его удалить.
  • ReadOnly означает, что авторизованные пользователи могут читать ресурс, но не могут его удалять или обновлять. Применение этой блокировки аналогично ограничению всех авторизованных пользователей разрешениями, предоставляемыми ролью Reader .

В отличие от управления доступом на основе ролей (RBAC), вы используете блокировки управления, чтобы применить ограничение ко всем пользователям и ролям. Чтобы узнать о настройке разрешений для пользователей и ролей, см. Azure RBAC.

Наследование блокировки

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

Ресурсы расширения наследуют блокировки от ресурса, к которому они применены. Например, Microsoft.Insights/diagnosticSettings — это тип ресурса расширения. Если вы примените параметр диагностики к большому двоичному объекту хранилища и заблокируете учетную запись хранения, вы не сможете удалить параметр диагностики. Это наследование имеет смысл, поскольку полный идентификатор ресурса параметра диагностики:

 /subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}/blobServices/default/providers/microsoft.insights/diagnosticSettings/{setting-name} "
 

Что соответствует области действия идентификатора заблокированного ресурса:

 /subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}
 

Если у вас есть блокировка Удалить для ресурса и вы пытаетесь удалить его группу ресурсов, функция блокирует всю операцию удаления. Даже если группа ресурсов или другие ресурсы в группе ресурсов разблокированы, удаление не происходит. У вас никогда не будет частичного удаления.

При отмене подписки Azure:

  • Блокировка ресурсов не блокирует отмену подписки.
  • Azure сохраняет ваши ресурсы, деактивируя их, а не сразу удаляя.
  • Azure окончательно удаляет ваши ресурсы только после периода ожидания.

Понимание области блокировок

Примечание

Блокировки применяются только к операциям плоскости управления Azure, но не к операциям плоскости данных.

Операции плоскости управления Azure переходят к https://management.azure.com . Операции плоскости данных Azure передаются вашему экземпляру службы, например https://myaccount.blob.core.windows.net/ . См. раздел Плоскость управления Azure и плоскость данных. Чтобы узнать, какие операции используют URL-адрес плоскости управления, см. Azure REST API.

Различие означает, что блокировки защищают ресурс от изменений, но не ограничивают выполнение ресурсом своих функций. Например, блокировка только для чтения на логическом сервере базы данных SQL защищает его от удаления или модификации. Он позволяет создавать, обновлять или удалять данные в базе данных сервера. Операции плоскости данных позволяют выполнять транзакции данных. Эти запросы не идут в https://management. azure.com .

Рекомендации перед применением блокировок

Применение блокировок может привести к неожиданным результатам. Некоторые операции, которые не изменяют ресурс, требуют заблокированных действий. Блокировки не позволяют методу POST отправлять данные в API Azure Resource Manager (ARM). Некоторые распространенные примеры заблокированных операций:

  • Блокировка только для чтения учетной записи хранения не позволяет пользователям перечислять ключи учетной записи. Запрос POST обрабатывает операцию ключей списка хранилища Azure для защиты доступа к ключам учетной записи. Ключи учетной записи обеспечивают полный доступ к данным в учетной записи хранения. Если для учетной записи хранения настроена блокировка только для чтения, пользователям, у которых нет ключей учетной записи, необходимо использовать учетные данные Azure AD для доступа к данным BLOB-объектов или очередей. Блокировка только для чтения также предотвращает назначение ролей Azure RBAC, которые ограничены учетной записью хранения или контейнером данных (контейнер больших двоичных объектов или очередь).

  • Блокировка только для чтения в учетной записи хранения защищает назначения RBAC, относящиеся к учетной записи хранения или контейнеру данных (контейнеру BLOB-объектов или очереди).

  • Блокировка только для чтения учетной записи хранения предотвращает создание контейнера больших двоичных объектов.

  • Блокировка только для чтения или запрета на удаление в учетной записи хранения не препятствует удалению или изменению ее данных. Он также не защищает данные в большом двоичном объекте, очереди, таблице или файле.

  • API учетной записи хранения предоставляет операции плоскости данных и плоскости управления. Если запрос использует операций плоскости данных , блокировка учетной записи хранения не защищает данные BLOB-объектов, очередей, таблиц или файлов в этой учетной записи хранения. Однако если запрос использует операций плоскости управления , блокировка защищает эти ресурсы.

    Например, если в запросе используются общие файловые ресурсы — удаление, то есть операция плоскости управления, удаление завершится ошибкой. Если в запросе используется Удалить общий ресурс, который является операцией плоскости данных, удаление завершается успешно. Мы рекомендуем вам использовать операцию плоскости управления.

  • Блокировка только для чтения или невозможность удаления в группе безопасности сети (NSG) препятствует созданию журнала потока трафика для NSG.

  • Блокировка только для чтения ресурса Службы приложений не позволяет Visual Studio Server Explorer отображать файлы для ресурса, поскольку для этого взаимодействия требуется доступ для записи.

  • Блокировка только для чтения в группе ресурсов , которая содержит план службы приложений запрещает масштабирование или выход из плана.

  • Блокировка только для чтения в группе ресурсов , которая содержит виртуальную машину , запрещает всем пользователям запускать или перезапускать виртуальную машину. Эти операции требуют запроса метода POST.

  • Блокировка только для чтения в группе ресурсов , которая содержит учетную запись автоматизации , предотвращает запуск всех модулей Runbook. Эти операции требуют запроса метода POST.

  • Невозможность удаления блокировки для группы ресурсов не позволяет Azure Resource Manager автоматически удалять развертывания в журнале. Если вы достигнете 800 развертываний в истории, ваши развертывания завершатся ошибкой.

  • Невозможность удаления блокировки группы ресурсов , созданной Службой резервного копирования Azure , приводит к сбою резервного копирования. Сервис поддерживает не более 18 точек восстановления. В заблокированном состоянии служба резервного копирования не может очищать точки восстановления. Дополнительные сведения см. в разделе часто задаваемые вопросы — резервное копирование виртуальных машин Azure.

  • Невозможность удаления блокировки для группы ресурсов , которая содержит рабочих областей Машинного обучения Azure , препятствует правильной работе автоматического масштабирования вычислительных кластеров Машинного обучения Azure. При блокировке автомасштабирование не может удалить неиспользуемые узлы. Ваше решение потребляет больше ресурсов, чем требуется для рабочей нагрузки.

  • Блокировка только для чтения в рабочей области Log Analytics предотвращает User and Entity Behavior Analytics (UEBA) от включения.

  • Невозможность удаления блокировки рабочей области Log Analytics не предотвращает операции очистки данных, вместо этого удалите роль очистки данных от пользователя.

  • Блокировка только для чтения подписки препятствует правильной работе Azure Advisor . Советник не может сохранять результаты своих запросов.

  • Блокировка только для чтения на шлюзе приложений не позволяет получить информацию о работоспособности серверной части шлюза приложений. Эта операция использует метод POST, который блокируется блокировкой только для чтения.

  • Блокировка только для чтения в кластере службы Azure Kubernetes (AKS) ограничивает доступ к ресурсам кластера через портал. Блокировка только для чтения не позволяет использовать раздел ресурсов Kubernetes кластера AKS на портале Azure для выбора ресурса кластера. Эти операции требуют запроса метода POST для аутентификации.

  • Невозможность удаления блокировки на виртуальной машине , защищенной с помощью Site Recovery , препятствует правильному удалению определенных ссылок на ресурсы, связанных с Site Recovery, при снятии защиты или отключении репликации. Если вы планируете снова защитить виртуальную машину позже, вам необходимо снять блокировку перед отключением защиты. Если вы не снимете блокировку, вам потребуется выполнить определенные шаги, чтобы очистить устаревшие ссылки, прежде чем вы сможете защитить виртуальную машину. Дополнительные сведения см. в статье Устранение неполадок репликации виртуальных машин Azure.

Кто может создавать или удалять блокировки

Чтобы создавать или удалять блокировки управления, вам необходим доступ к действиям Microsoft.Authorization/* или Microsoft.Authorization/locks/* . Только встроенные роли Owner и User Access Administrator могут создавать и удалять блокировки управления. Вы можете создать пользовательскую роль с необходимыми разрешениями.

Управляемые приложения и блокировки

Некоторые службы Azure, такие как Azure Databricks, используют управляемые приложения для реализации службы. В этом случае служба создает две группы ресурсов. Одна из них — разблокированная группа ресурсов, содержащая обзор службы. Другая — заблокированная группа ресурсов, содержащая инфраструктуру службы.

При попытке удалить группу ресурсов инфраструктуры появляется сообщение об ошибке, указывающее, что группа ресурсов заблокирована. Если вы попытаетесь удалить блокировку для группы ресурсов инфраструктуры, вы получите сообщение об ошибке, указывающее, что блокировку нельзя удалить, так как она принадлежит системному приложению.

Вместо этого удалите службу, что также удалит группу ресурсов инфраструктуры.

Для управляемых приложений выберите развернутую службу.

Обратите внимание, что служба включает ссылку для Группа управляемых ресурсов . Эта группа ресурсов содержит инфраструктуру и заблокирована. Вы можете удалить его только косвенно.

Чтобы удалить все для службы, включая заблокированную группу ресурсов инфраструктуры, выберите Удалить для службы.

Настройка блокировок

Портал

На левой панели навигации имя функции блокировки подписки — Блокировка ресурсов , а имя функции блокировки группы ресурсов — Замки .

  1. В колонке Параметры для ресурса, группы ресурсов или подписки, которую вы хотите заблокировать, выберите Блокирует .

  2. Чтобы добавить замок, выберите Добавить . Если вы хотите создать блокировку на родительском уровне, выберите родительский. Текущий выбранный ресурс наследует блокировку от родителя. Например, вы можете заблокировать группу ресурсов, чтобы применить блокировку ко всем ее ресурсам.

  3. Дайте замку имя и уровень блокировки. При желании вы можете добавить примечания, описывающие замок.

  4. Чтобы удалить блокировку, нажмите кнопку Удалить .

Шаблон

При использовании шаблона ARM или файла Bicep для развертывания блокировки полезно понимать, как область развертывания и область блокировки работают вместе. Чтобы применить блокировку в области развертывания, например блокировку группы ресурсов или подписки, оставьте свойство области не заданным. При блокировке ресурса в области развертывания задайте свойство области для блокировки.

Следующий шаблон применяет блокировку к группе ресурсов, в которой он развернут. Обратите внимание, что в ресурсе блокировки нет свойства области, поскольку область блокировки соответствует области развертывания. Разверните этот шаблон на уровне группы ресурсов.

  • JSON
  • Бицепс
 {
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "Версия содержания": "1.0.0.0",
  "параметры": {
  },
  "Ресурсы": [
    {
      "type": "Microsoft.Авторизация/блокировки",
      "апиВерсия": "2016-09-01",
      "имя": "rgLock",
      "характеристики": {
        "уровень": "CanNotDelete",
        "notes": "Группа ресурсов не должна быть удалена."
      }
    }
  ]
}
 

Чтобы создать группу ресурсов и заблокировать ее, разверните следующий шаблон на уровне подписки.

  • JSON
  • Бицепс
 {
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "Версия содержания": "1.0.0.0",
  "параметры": {
    "rgName": {
      "тип": "строка"
    },
    "rgLocation": {
      "тип": "строка"
    }
  },
  "переменные": {},
  "Ресурсы": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "имя": "[параметры('rgName')]",
      "местоположение": "[параметры('rgLocation')]",
      "характеристики": {}
    },
    {
      "type": "Microsoft.Ресурсы/развертывания",
      "apiVersion": "2021-04-01",
      "имя": "блокировкаразвертывания",
      "resourceGroup": "[параметры('rgName')]",
      "зависит от": [
        "[resourceId('Microsoft.Resources/resourceGroups/', параметры('rgName'))]"
      ],
      "характеристики": {
        "режим": "Инкрементный",
        "шаблон": {
          "$schema": "https://schema. management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "Версия содержания": "1.0.0.0",
          "параметры": {},
          "переменные": {},
          "Ресурсы": [
            {
              "type": "Microsoft.Авторизация/блокировки",
              "apiVersion": "2016-09-01",
              "имя": "rgLock",
              "характеристики": {
                "уровень": "CanNotDelete",
                "notes": "Группа ресурсов и ее ресурсы не должны быть удалены."
              }
            }
          ],
          "выход": {}
        }
      }
    }
  ],
  "выход": {}
}
 

При применении блокировки к ресурсу в группе ресурсов добавьте свойство области действия. Задайте для области имя ресурса, который необходимо заблокировать.

В следующем примере показан шаблон, который создает план обслуживания приложений, веб-сайт и блокировку на веб-сайте. Область блокировки установлена ​​на веб-сайте.

  • JSON
  • Бицепс
 {
  "$schema": "https://schema. management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "Версия содержания": "1.0.0.0",
  "параметры": {
    "hostingPlanName": {
      "тип": "строка"
    },
    "расположение": {
      "тип": "строка",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "переменные": {
    "siteName": "[concat('ExampleSite', uniqueString(resourceGroup().id))]"
  },
  "Ресурсы": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2020-12-01",
      "name": "[параметры('hostingPlanName')]",
      "местоположение": "[параметры('местоположение')]",
      "арт": {
        "уровень": "Бесплатно",
        "имя": "f1",
        "емкость": 0
      },
      "характеристики": {
        "целевойворкеркаунт": 1
      }
    },
    {
      "type": "Microsoft.Web/сайты",
      "apiVersion": "2020-12-01",
      "имя": "[переменные('имя_сайта')]",
      "местоположение": "[параметры('местоположение')]",
      "зависит от": [
        "[resourceId('Microsoft.Web/serverfarms', параметры('hostingPlanName'))]"
      ],
      "характеристики": {
        "serverFarmId": "[параметры('hostingPlanName')]"
      }
    },
    {
      "type": "Microsoft. Авторизация/блокировки",
      "апиВерсия": "2016-09-01",
      "имя": "сайтЛокк",
      "scope": "[concat('Microsoft.Web/sites/', переменные('siteName'))]",
      "зависит от": [
        "[resourceId('Microsoft.Web/sites', переменные('siteName'))]"
      ],
      "характеристики": {
        "уровень": "CanNotDelete",
        "notes": "Сайт нельзя удалять."
      }
    }
  ]
}
 

Azure PowerShell

Вы блокируете развернутые ресурсы с помощью Azure PowerShell с помощью команды New-AzResourceLock.

Чтобы заблокировать ресурс, укажите имя ресурса, его тип ресурса и имя его группы ресурсов.

 New-AzResourceLock -LockLevel CanNotDelete -LockName LockSite -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup
 

Чтобы заблокировать группу ресурсов, укажите имя группы ресурсов.

 New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName пример группы ресурсов
 

Чтобы получить сведения о блокировке, используйте Get-AzResourceLock. Чтобы получить все блокировки в подписке, используйте:

 Get-AzResourceLock
 

Чтобы получить все блокировки для ресурса, используйте:

 Get-AzResourceLock -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup
 

Чтобы получить все блокировки для группы ресурсов, используйте:

 Get-AzResourceLock -ResourceGroupName exampleresourcegroup
 

Чтобы удалить блокировку ресурса, используйте:

 $lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup -ResourceName examplesite -ResourceType Microsoft.Web/sites).LockId
Remove-AzResourceLock-LockId $lockId
 

Чтобы удалить блокировку для группы ресурсов, используйте:

 $lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup). LockId
Remove-AzResourceLock-LockId $lockId
 

Azure CLI

Вы блокируете развернутые ресурсы с помощью Azure CLI с помощью команды az lock create.

Чтобы заблокировать ресурс, укажите имя ресурса, его тип ресурса и имя его группы ресурсов.

 az lock create --name LockSite --lock-type CanNotDelete --resource-group exampleresourcegroup --resource-name examplesite --resource-type Microsoft.Web/sites
 

Чтобы заблокировать группу ресурсов, укажите имя группы ресурсов.

 az lock create --name LockGroup --lock-type CanNotDelete --resource-group exampleresourcegroup
 

Чтобы получить информацию о блокировке, используйте список блокировок az. Чтобы получить все блокировки в вашей подписке, используйте:

 список блокировок az
 

Чтобы получить все блокировки для ресурса, используйте:

 список блокировок az --resource-group exampleresourcegroup --resource-name examplesite --namespace Microsoft.Web --resource-type sites --parent ""
 

Чтобы получить все блокировки для группы ресурсов, используйте:

 az lock list --resource-group exampleresourcegroup
 

Чтобы удалить блокировку ресурса, используйте:

 lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --resource-type Microsoft. Web/sites --resource-name examplesite --output tsv --идентификатор запроса)
az lock удалить --ids $lockid
 

Чтобы удалить блокировку для группы ресурсов, используйте:

 lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --output tsv --query id)
az lock удалить --ids $lockid
 

Python

Вы блокируете развернутые ресурсы с помощью Python с помощью команды ManagementLockClient.management_locks.create_or_update_at_resource_group_level.

Чтобы заблокировать ресурс, укажите имя ресурса, его тип ресурса и имя его группы ресурсов.

 импорт ОС
из azure.identity импортировать AzureCliCredential
из azure.mgmt.resource импорта ManagementLockClient
учетные данные = AzureCliCredential()
subscribe_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient (учетные данные, идентификатор подписки)
lock_result = lock_client.management_locks.create_or_update_at_resource_level(
    "группа примеров",
    "Майкрософт. Веб",
    "",
    "места",
    "пример",
    "блокировка сайта",
    {
        "уровень": "CanNotDelete"
    }
)
 

Чтобы заблокировать группу ресурсов, укажите имя группы ресурсов.

 импорт ОС
из azure.identity импортировать AzureCliCredential
из azure.mgmt.resource импорта ManagementLockClient
учетные данные = AzureCliCredential()
subscribe_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient (учетные данные, идентификатор подписки)
lock_result = lock_client.management_locks.create_or_update_at_resource_group_level(
    "группа примеров",
    "замковая группа",
    {
        "уровень": "CanNotDelete"
    }
)
 

Чтобы получить информацию обо всех блокировках в вашей подписке, используйте ManagementLockClient.management_locks.get. Чтобы получить все блокировки в вашей подписке, используйте:

 import os
из azure.identity импортировать AzureCliCredential
из azure.mgmt.resource импорта ManagementLockClient
учетные данные = AzureCliCredential()
subscribe_id = os. environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient (учетные данные, идентификатор подписки)
lock_result = lock_client.management_locks.list_at_subscription_level()
для блокировки в lock_result:
    print(f"Имя замка: {lock.name}")
    print(f"Уровень блокировки: {lock.level}")
    print(f"Заблокировать заметки: {lock.notes}")
 

Чтобы получить блокировку ресурса, используйте:

 import os
из azure.identity импортировать AzureCliCredential
из azure.mgmt.resource импорта ManagementLockClient
учетные данные = AzureCliCredential()
subscribe_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient (учетные данные, идентификатор подписки)
lock_result = lock_client.management_locks.get_at_resource_level(
    "группа примеров",
    "Майкрософт.Веб",
    "",
    "места",
    "пример",
    "блокировка сайта"
)
print(f"Идентификатор блокировки: {lock_result.id}")
print(f"Имя блокировки: {lock_result.name}")
print(f"Уровень блокировки: {lock_result. level}")
 

Чтобы получить блокировку для группы ресурсов, используйте:

 import os
из azure.identity импортировать AzureCliCredential
из azure.mgmt.resource импорта ManagementLockClient
учетные данные = AzureCliCredential()
subscribe_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient (учетные данные, идентификатор подписки)
lock_result = lock_client.management_locks.get_at_resource_group_level(
    "группа примеров",
    "замковая группа"
)
print(f"Идентификатор блокировки: {lock_result.id}")
print(f"Уровень блокировки: {lock_result.level}")
 

Чтобы удалить блокировку ресурса, используйте:

 import os
из azure.identity импортировать AzureCliCredential
из azure.mgmt.resource импорта ManagementLockClient
учетные данные = AzureCliCredential()
subscribe_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient (учетные данные, идентификатор подписки)
lock_client.management_locks.delete_at_resource_level(
    "группа примеров",
    "Майкрософт. Веб",
    "",
    "места",
    "пример",
    "блокировка сайта"
)
 

Чтобы удалить блокировку группы ресурсов, используйте:

 импорт ОС
из azure.identity импортировать AzureCliCredential
из azure.mgmt.resource импорта ManagementLockClient
учетные данные = AzureCliCredential()
subscribe_id = os.environ["AZURE_SUBSCRIPTION_ID"]
lock_client = ManagementLockClient (учетные данные, идентификатор подписки)
lock_client.management_locks.delete_at_resource_group_level ("exampleGroup", "lockGroup")
 

REST API

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

Чтобы создать блокировку, выполните:

 PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}
 

Областью может быть подписка, группа ресурсов или ресурс. Имя замка может быть любым, которое вы хотите назвать. Для версии API используйте 2016-09-01 .

Включите в запрос объект JSON, указывающий свойства блокировки.

 {
  "характеристики": {
  "уровень": "CanNotDelete",
  "notes": "Необязательные текстовые заметки."
  }
}
 

Следующие шаги

  • Чтобы узнать о логической организации ресурсов, см. раздел Использование тегов для организации ресурсов.
  • Вы можете применять ограничения и соглашения к своей подписке с помощью настраиваемых политик. Дополнительные сведения см. в статье Что такое политика Azure?.
  • Руководство по тому, как предприятия могут использовать Resource Manager для эффективного управления подписками, см. в статье Корпоративный шаблон Azure — предписывающее управление подпиской.

Понимание блокировки ресурсов — Azure Blueprints

  • Статья

Создание согласованных сред в масштабе действительно ценно только при наличии механизма для поддерживать эту последовательность. В этой статье объясняется, как работает блокировка ресурсов в Azure Blueprints. К см. пример блокировки ресурсов и применения запрета назначений , см. туториал по защите новых ресурсов.

Примечание

Блокировки ресурсов, развернутые Azure Blueprints, применяются только к ресурсы без расширений развертывается по назначению плана. Существующие ресурсы, например в группах ресурсов, которые уже существуют, не добавляйте к ним замки.

Режим блокировки применяется к назначению чертежа и имеет три варианта: Не блокировать , Чтение Только или Не удалять . Режим блокировки настраивается во время развертывания артефакта во время задание по чертежу. Другой режим блокировки можно установить, обновив назначение схемы. Однако режимы блокировки нельзя изменить за пределами Azure Blueprints.

Ресурсы, созданные артефактами в назначении схемы, имеют четыре состояния: Не заблокировано , Прочитано Только , Невозможно изменить/удалить или Невозможно удалить . Каждый тип артефакта может быть в Not Состояние блокировки . Для определения состояния ресурса можно использовать следующую таблицу:

Режим Тип ресурса артефакта Состояние Описание
Не блокировать * Не заблокирован Ресурсы не защищены Azure Blueprints. Это состояние также используется для ресурсов, добавленных в артефакт группы ресурсов Только для чтения или Не удалять из-за пределов назначения схемы.
Только чтение Группа ресурсов Невозможно изменить/удалить Группа ресурсов доступна только для чтения, и теги в группе ресурсов не могут быть изменены. Не заблокировано Ресурсы можно добавлять, перемещать, изменять или удалять из этой группы ресурсов.
Только чтение Нересурсная группа Только чтение Ресурс нельзя никак изменить. Никаких изменений и удалить нельзя.
Не удалять * Невозможно удалить Ресурсы можно изменить, но нельзя удалить. Не заблокировано Ресурсы можно добавлять, перемещать, изменять или удалять из этой группы ресурсов.

Обычно это возможно для кого-то с соответствующим доступом на основе ролей Azure. управление (Azure RBAC) в подписке, например Роль «Владелец», позволяющая изменять или удалять любой ресурс. Этот доступ не тот случай, когда Azure Blueprints применяет блокировку как часть развернутого задания. Если задание было задано с помощью Только чтение или Не удалять параметр, даже владелец подписки не может выполнить блокировку действие на защищаемом ресурсе.

Эта мера безопасности защищает согласованность определенного плана и среды, в которой он был предназначен для создания из случайного или программного удаления или изменения.

Назначить в группе управления

Единственный способ запретить владельцам подписки удалять назначение схемы — это назначить план группе управления. В этом случае только Владельцы управления группа имеет разрешения, необходимые для удаления назначения схемы.

Чтобы назначить схему группе управления вместо подписки, вызов REST API изменяется выглядеть так:

 PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{assignmentMG}/providers/Microsoft.Blueprint/blueprintAssignments/{assignmentName}?api-version=2018-11- 01-превью
 

Группа управления, определенная {assignmentMG} должен быть либо в группе управления иерархии или быть той же группой управления, в которой сохранено определение схемы.

Тело запроса назначения схемы выглядит следующим образом:

 {
    "личность": {
        "тип": "Система назначена"
    },
    "местоположение": "истус",
    "характеристики": {
        "description": "применить предопределенный simpleBlueprint к этой подписке XXXXXXXX. ",
        "blueprintId": "/providers/Microsoft.Management/managementGroups/{blueprintMG}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
        "scope": "/subscriptions/{targetSubscriptionId}",
        "параметры": {
            "storageAccountType": {
                "значение": "Стандарт_LRS"
            },
            "центр затрат": {
                "value": "Contoso/Интернет/Покупки/Производство"
            },
            "владельцы": {
                "ценить": [
                    "[email protected]",
                    "[email protected]"
                ]
            }
        },
        "группы ресурсов": {
            "ХранилищеРГ": {
                "имя": "по умолчаниюRG",
                "местоположение": "истус"
            }
        }
    }
}
 

Ключевое отличие этого тела запроса от тела запроса, назначенного подписке, заключается в properties.scope свойство. Это обязательное свойство должно быть установлено для подписки, которую задание чертежа относится к. Подписка должна быть прямым дочерним элементом группы управления. иерархия, в которой хранится назначение схемы.

Примечание

Схема, назначенная области группы управления, по-прежнему работает как схема на уровне подписки. назначение. Единственная разница заключается в том, где хранится назначение чертежа, чтобы предотвратить владельцы подписки не могут удалить назначение и связанные с ним блокировки.

Если возникает необходимость изменить или удалить ресурс, защищенный назначением, есть два способы сделать это.

  • Обновление назначения схемы для режима блокировки Не блокировать
  • Удалить назначение чертежей

При удалении назначения блокировки, созданные Azure Blueprints, удаляются. Однако ресурс остался позади, и его необходимо будет удалить обычными способами.

Как работают замки чертежей

Отказ в назначении Azure RBAC запрещает действие. применяется к ресурсам артефакта во время назначения схемы, если в назначении выбран параметр Чтение Только или Не удалять параметр . Действие отказа добавляется управляемым удостоверением назначение схемы и может быть удалено из ресурсов артефакта только одним и тем же управляемым личность. Эта мера безопасности обеспечивает блокировку механизма и предотвращает удаление чертежа. заблокировать за пределами Azure Blueprints.

запретить свойства назначения каждого режима:

Режим Разрешения. Действия Разрешения.NotActions Руководители[i].Type ExcludePrincipals[i].Id DoNotApplyToChildScopes
Только чтение * */read
Microsoft.Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnets/join/action
SystemDefined (для всех) назначение чертежей и определяется пользователем в excludePrincipals Группа ресурсов — true ; Ресурс — ложь
Не удалять */удалить Microsoft. Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnets/join/action
SystemDefined (для всех) назначение чертежей и определяется пользователем в исключеноДиректора Группа ресурсов — true ; Ресурс — ложь

Важно

Azure Resource Manager кэширует сведения о назначении ролей на срок до 30 минут. В результате отказать Запрещение назначений на ресурсах схемы может не сразу вступить в силу. В течение этот период времени может быть возможно удалить ресурс, предназначенный для защиты замки по чертежам.

В некоторых сценариях проектирования или безопасности может потребоваться исключить принципала из отказать в назначении создает. Этот шаг выполняется в REST API путем добавления до пяти значений к исключеноОсновные массив в блокирует свойство , когда создание задания. Следующее задание определение является примером тела запроса, включающего excludePrincipals :

 {
  "личность": {
    "тип": "Система назначена"
  },
  "местоположение": "истус",
  "характеристики": {
    "description": "применить предопределенный simpleBlueprint к этой подписке XXXXXXXX. ",
    "blueprintId": "/providers/Microsoft.Management/managementGroups/{mgId}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
    "замки": {
        "mode": "AllResourcesDoNotDelete",
        "исключенные принципы": [
            "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
            "38833б56-194d-420b-90ce-cff578296714"
        ]
    },
    "параметры": {
      "storageAccountType": {
        "значение": "Стандарт_LRS"
      },
      "центр затрат": {
        "value": "Contoso/Интернет/Покупки/Производство"
      },
      "владельцы": {
        "ценить": [
          "[email protected]",
          "[email protected]"
        ]
      }
    },
    "группы ресурсов": {
      "ХранилищеРГ": {
        "имя": "по умолчаниюRG",
        "местоположение": "истус"
      }
    }
  }
}
 

Аналогично исключению принципала из отклонить назначение в назначении чертежа, Вы можете исключить определенные Операции поставщика ресурсов Azure. В рамках 9Блок 0019 properties.locks , там же, где excludePrincipals , блок excludeActions . можно добавить:

 "замки": {
    "mode": "AllResourcesDoNotDelete",
    "исключенные принципы": [
        "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
        "38833b56-194d-420b-90ce-cff578296714"
    ],
    "исключенные действия": [
        "Microsoft.ContainerRegistry/registries/push/write",
        "Microsoft.Авторизация/*/чтение"
    ]
},
 

В то время как исключены Принципы должен быть явным, excludeActions записи могут использовать * для сопоставление подстановочных знаков операций поставщика ресурсов.

Следующие шаги

  • Следуйте указаниям руководства по защите новых ресурсов.
  • Узнайте о жизненном цикле чертежа.
  • Понять, как использовать статические и динамические параметры.
  • Научитесь настраивать порядок следования чертежей.
  • Узнайте, как обновить существующие задания.
  • Решить проблемы во время назначения чертежа с помощью общее устранение неполадок.

Ваш комментарий будет первым

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *