Развертывание политики, которую можно исправить в рамках делегированной подписки
Azure Lighthouse позволяет поставщикам служб создавать и редактировать определения политики в рамках делегированной подписки. Для развертывания политик, использующих задачу исправления (т. е. политики с эффектом deployIfNotExists или modify), в арендаторе клиента необходимо создать управляемое удостоверение. Это управляемое удостоверение может использоваться политикой Azure для развертывания шаблона в политике. В этой статье описаны шаги, необходимые для включения этого сценария, как при подключении клиента для Azure Lighthouse, так и при развертывании самой политики.
Совет
Хотя в этом разделе мы будем упоминать поставщиков услуг и их заказчиков, предприятия, управляющие несколькими клиентами, могут использовать такие же процессы.
Создание пользователя, который может назначать роли управляемому удостоверению в клиенте клиента
При подключении клиента к Azure Lighthouse вы определяете авторизацию, которая предоставляет доступ к делегированным ресурсам в клиенте клиента. Каждая авторизация указывает субъект-идентификатор , соответствующий пользователю Microsoft Entra, группе или субъекту-службе в управляющем клиенте, а также ролиDefinitionId , соответствующей встроенной роли Azure, которая будет предоставлена.
Чтобы разрешить субъекту-субъекту назначать роли управляемому удостоверению в клиенте клиента, необходимо задать рольDefinitionId администратору доступа пользователей. Хотя эта роль обычно не поддерживается для Azure Lighthouse, ее можно использовать в этом конкретном сценарии. Предоставление этой роли этому субъекту-идентификатору позволяет назначать определенные встроенные роли управляемым удостоверениям. Эти роли определяются в свойстве delegatedRoleDefinitionIds и могут включать все поддерживаемые встроенные роли Azure, за исключением администратора доступа пользователей или владельца.
После подключения клиента principalId, созданный в этой авторизации, сможет назначать эти встроенные роли управляемым удостоверениям в клиенте клиента. Обычно это не будет связано с ролью администратора доступа пользователей.
Примечание.
Назначения ролей для клиентов в настоящее время должны выполняться через API, а не на портале Azure.
В этом примере показан субъект-идентификатор с ролью администратора доступа пользователей. Этот пользователь будет иметь возможность назначать две встроенные роли управляемым удостоверениям в клиенте клиента: участник и участник Log Analytics.
{
"principalId": "00000000-0000-0000-0000-000000000000",
"principalIdDisplayName": "Policy Automation Account",
"roleDefinitionId": "18d7d88d-d35e-4fb5-a5c3-7773c20a72d9",
"delegatedRoleDefinitionIds": [
"b24988ac-6180-42a0-ab88-20f7382dd24c",
"92aaf0da-9dab-42b6-94a3-d43ce8d16293"
]
}
Развертывание политик, которые можно исправить
После создания пользователя с необходимыми разрешениями этот пользователь может развернуть политики, использующие задачи исправления в делегированных подписках клиента.
Например, предположим, что вы хотите включить диагностику для ресурсов Azure Key Vault в клиенте клиента, как показано в этом примере. Пользователь в управляющем клиенте с соответствующими разрешениями (как описано выше) развернет шаблон Azure Resource Manager, чтобы включить этот сценарий.
Создание назначения политики для использования с делегированной подпиской должно выполняться через API, а не в портал Azure. При этом для apiVersion следует задать 2019-04-01-preview или более позднюю версию, чтобы включить новое свойство delegatedManagedIdentityResourceId. Это свойство позволяет включать управляемое удостоверение, которое находится в арендаторе клиента (в подписке или группе ресурсов, подключенной к Azure Lighthouse).
В следующем примере показано назначение роли с delegatedManagedIdentityResourceId.
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2019-04-01-preview",
"name": "[parameters('rbacGuid')]",
"dependsOn": [
"[variables('policyAssignment')]"
],
"properties": {
"roleDefinitionId": "[concat(subscription().id, '/providers/Microsoft.Authorization/roleDefinitions/', variables('rbacContributor'))]",
"principalType": "ServicePrincipal",
"delegatedManagedIdentityResourceId": "[concat(subscription().id, '/providers/Microsoft.Authorization/policyAssignments/', variables('policyAssignment'))]",
"principalId": "[toLower(reference(concat('/providers/Microsoft.Authorization/policyAssignments/', variables('policyAssignment')), '2018-05-01', 'Full' ).identity.principalId)]"
}
Совет
Доступен аналогичный пример, демонстрирующий, как развернуть политику, которая добавляет или удаляет тег (используя эффект изменения) в делегированной подписке.
Следующие шаги
- Сведения о службе Политика Azure.
- Сведения об управляемых удостоверениях для ресурсов Azure.