Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
При регистрации в построителе образов виртуальных машин Azure это предоставляет службе разрешение на создание, управление и удаление промежуточной группы ресурсов. Служба также имеет права добавлять ресурсы, необходимые для сборки образа, в группу ресурсов. Во время успешной регистрации ваша подписка получает доступ к имени субъекта службы создания образов виртуальных машин (SPN).
Замечание
Если вы используете пользовательскую промежуточную группу ресурсов, назначенная пользователем управляемая идентичность также требует дополнительных разрешений участника для этой группы ресурсов, для развертывания шаблонной виртуальной машины в процессе.
Если вы хотите, чтобы построитель образов виртуальных машин распространял образы, необходимо создать удостоверение, назначаемое пользователем в Azure, с разрешениями на чтение и запись изображений. Например, может потребоваться распространить образы на управляемые образы или Галерею вычислений Azure. Если вы обращаетесь к службе хранилища Azure, то удостоверение, назначаемое пользователем, требует разрешений для чтения частных или общедоступных контейнеров.
Перед созданием образа необходимо настроить разрешения и привилегии. В следующих разделах описано, как настроить возможные сценарии с помощью PowerShell.
Создание управляемой идентичности, назначаемой пользователем
Конструктор образов виртуальных машин требует создания управляемого удостоверения Azure, назначаемого пользователем. Построитель образов виртуальных машин использует это удостоверение для чтения образов, записи образов и доступа к учетным записям хранения Azure. Вы предоставляете идентификации разрешение на выполнение определенных действий в рамках подписки.
Замечание
Управляемое удостоверение, назначаемое пользователем, является правильным способом предоставления разрешений ресурсным группам изображений. SPN больше не поддерживается для этой цели.
В следующем примере показано, как создать управляемое удостоверение, назначаемое пользователем Azure. Замените настройки заполнителей, чтобы установить значения переменных.
| Setting | Description |
|---|---|
| <Группа ресурсов> | Группа ресурсов, в которой требуется создать управляемое удостоверение, назначаемое пользователем. |
## Add AZ PS module to support AzUserAssignedIdentity
Install-Module -Name Az.ManagedServiceIdentity
$parameters = @{
Name = 'aibIdentity'
ResourceGroupName = '<Resource group>'
}
# create identity
New-AzUserAssignedIdentity @parameters
Дополнительные сведения см. в статье об управляемом удостоверении, назначаемом пользователем Azure.
Разрешить построителю образов виртуальных машин распространять образы
Чтобы построитель образов виртуальных машин мог распространять образы, службе должно быть разрешено внедрять образы в группы ресурсов. Чтобы предоставить необходимые разрешения, создайте управляемое удостоверение, назначаемое пользователем, и предоставьте ему права на группу ресурсов, в которой создается образ. Конструктор образов виртуальной машины не имеет разрешения на доступ к ресурсам в других группах ресурсов в подписке. Необходимо выполнить явные действия, чтобы разрешить доступ, чтобы не допустить сбоя ваших сборок.
Вам не нужно предоставлять права участника на управляемое удостоверение, назначаемое пользователем, в группе ресурсов для распространения изображений. Однако управляемое удостоверение, назначаемое пользователем, требует следующих разрешений Azure Actions в группе ресурсов распространения:
Microsoft.Compute/images/write
Microsoft.Compute/images/read
Microsoft.Compute/images/delete
Если вы хотите распространить данные в коллекцию вычислений Azure, вам также потребуется:
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Microsoft.Compute/galleries/images/versions/write
Разрешение на настройку существующих образов
Чтобы построитель образов виртуальных машин создавал образы из исходных пользовательских образов, служба должна быть разрешена читать образы в этих группах ресурсов. Чтобы предоставить необходимые разрешения, создайте управляемое удостоверение, назначаемое пользователем, и предоставьте ему права на группу ресурсов, в которой находится образ.
Вот как вы создаете на основе существующего пользовательского образа:
Microsoft.Compute/images/read
Вот как можно создать версию из существующей версии галереи вычислительных ресурсов Azure:
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Разрешение на настройку образов в виртуальных сетях
В построителе образов виртуальных машин есть возможность развернуть и использовать существующую виртуальную сеть в подписке, что позволяет настраивать доступ к подключенным ресурсам.
Для развертывания виртуальной машины в существующей виртуальной сети не нужно предоставлять права участника управляемой идентификации, назначаемой пользователем, на группу ресурсов. Однако назначаемое пользователем управляемое удостоверение должно иметь следующие разрешения Azure Actions в группе ресурсов виртуальной сети.
Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/join/action
Создание определения роли Azure
В следующих примерах создается определение роли Azure из действий, описанных в предыдущих разделах. Примеры применяются на уровне группы ресурсов. Оцените и проверьте, достаточно ли детализация примеров для ваших требований.
Действия изображения позволяют читать и записывать. Определите, что подходит для вашей среды. Например, создайте роль, чтобы разрешить построителю образов виртуальных машин считывать изображения из группы ресурсов example-rg-1 и записывать образы в группу ресурсов example-rg-2.
Пример роли настраиваемого образа Azure
В следующем примере создается роль Azure для использования пользовательского исходного образа и его распространения. Затем вы предоставляете настраиваемую роль управляемому удостоверению, назначенному пользователем, для VM Image Builder.
Чтобы упростить замену значений в примере, сначала задайте следующие переменные. Замените параметры заполнителя, чтобы задать переменные.
| Setting | Description |
|---|---|
| <Идентификатор подписки> | Идентификатор вашей подписки Azure. |
| <Группа ресурсов> | Группа ресурсов для пользовательского образа. |
$sub_id = "<Subscription ID>"
# Resource group - image builder will only support creating custom images in the same Resource Group as the source managed image.
$imageResourceGroup = "<Resource group>"
$identityName = "aibIdentity"
# Use a web request to download the sample JSON description
$sample_uri="https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json"
$role_definition="aibRoleImageCreation.json"
Invoke-WebRequest -Uri $sample_uri -Outfile $role_definition -UseBasicParsing
# Create a unique role name to avoid clashes in the same Azure Active Directory domain
$timeInt=$(get-date -UFormat "%s")
$imageRoleDefName="Azure Image Builder Image Def"+$timeInt
# Update the JSON definition placeholders with variable values
((Get-Content -path $role_definition -Raw) -replace '<subscriptionID>',$sub_id) | Set-Content -Path $role_definition
((Get-Content -path $role_definition -Raw) -replace '<rgName>', $imageResourceGroup) | Set-Content -Path $role_definition
((Get-Content -path $role_definition -Raw) -replace 'Azure Image Builder Service Image Creation Role', $imageRoleDefName) | Set-Content -Path $role_definition
# Create a custom role from the aibRoleImageCreation.json description file.
New-AzRoleDefinition -InputFile $role_definition
# Get the user-identity properties
$identityNameResourceId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).Id
$identityNamePrincipalId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).PrincipalId
# Grant the custom role to the user-assigned managed identity for Azure Image Builder.
$parameters = @{
ObjectId = $identityNamePrincipalId
RoleDefinitionName = $imageRoleDefName
Scope = '/subscriptions/' + $sub_id + '/resourceGroups/' + $imageResourceGroup
}
New-AzRoleAssignment @parameters
Пример существующей роли виртуальной сети в Azure
В следующем примере создается роль Azure для использования и распространения существующего образа виртуальной сети. Затем вы предоставляете настраиваемую роль управляемому удостоверению, назначенному пользователем, для VM Image Builder.
Чтобы упростить замену значений в примере, сначала задайте следующие переменные. Замените параметры заполнителя, чтобы задать переменные.
| Setting | Description |
|---|---|
| <Идентификатор подписки> | Идентификатор вашей подписки Azure. |
| <Группа ресурсов> | Группа ресурсов виртуальной сети. |
$sub_id = "<Subscription ID>"
$res_group = "<Resource group>"
$identityName = "aibIdentity"
# Use a web request to download the sample JSON description
$sample_uri="https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleNetworking.json"
$role_definition="aibRoleNetworking.json"
Invoke-WebRequest -Uri $sample_uri -Outfile $role_definition -UseBasicParsing
# Create a unique role name to avoid clashes in the same AAD domain
$timeInt=$(get-date -UFormat "%s")
$networkRoleDefName="Azure Image Builder Network Def"+$timeInt
# Update the JSON definition placeholders with variable values
((Get-Content -path $role_definition -Raw) -replace '<subscriptionID>',$sub_id) | Set-Content -Path $role_definition
((Get-Content -path $role_definition -Raw) -replace '<vnetRgName>', $res_group) | Set-Content -Path $role_definition
((Get-Content -path $role_definition -Raw) -replace 'Azure Image Builder Service Networking Role',$networkRoleDefName) | Set-Content -Path $role_definition
# Create a custom role from the aibRoleNetworking.json description file
New-AzRoleDefinition -InputFile $role_definition
# Get the user-identity properties
$identityNameResourceId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).Id
$identityNamePrincipalId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).PrincipalId
# Assign the custom role to the user-assigned managed identity for Azure Image Builder
$parameters = @{
ObjectId = $identityNamePrincipalId
RoleDefinitionName = $networkRoleDefName
Scope = '/subscriptions/' + $sub_id + '/resourceGroups/' + $res_group
}
New-AzRoleAssignment @parameters
Дальнейшие шаги
Общие сведения о Конструкторе образов виртуальных машин Azure