Konfigurowanie uprawnień narzędzia Image Builder maszyny wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Po zarejestrowaniu się w usłudze Azure VM Image Builder subskrypcja uzyskuje dostęp do głównej nazwy usługi (SPN) maszyny wirtualnej Image Builder. Ta rejestracja autoryzuje również uprawnienie usługi do tworzenia, zarządzania i usuwania przejściowej grupy zasobów. W przypadku procesu tworzenia obrazu przypisanie roli Współautor jest również wymagane w przejściowej grupie zasobów.

Jeśli chcesz, aby konstruktor obrazów maszyny wirtualnej dystrybuował obrazy, musisz utworzyć tożsamość przypisaną przez użytkownika na platformie Azure z uprawnieniami do odczytu i zapisu obrazów. Na przykład możesz chcieć dystrybuować obrazy do obrazów zarządzanych lub do galerii zasobów obliczeniowych platformy Azure. Jeśli uzyskujesz dostęp do usługi Azure Storage, tożsamość przypisana przez użytkownika wymaga uprawnień do odczytu kontenerów prywatnych lub publicznych.

Przed utworzeniem obrazu należy skonfigurować uprawnienia i uprawnienia. W poniższych sekcjach opisano sposób konfigurowania możliwych scenariuszy przy użyciu interfejsu wiersza polecenia platformy Azure.

Wymagania wstępne

Tworzenie tożsamości zarządzanej przypisanej przez użytkownika

Narzędzie VM Image Builder wymaga utworzenia tożsamości zarządzanej przypisanej przez użytkownika platformy Azure. Konstruktor obrazów maszyny wirtualnej używa tej tożsamości do odczytywania obrazów, zapisywania obrazów i uzyskiwania dostępu do kont usługi Azure Storage. Przyznawanie tożsamości uprawnień do wykonywania określonych akcji w ramach subskrypcji.

Uwaga

Tożsamość zarządzana przypisana przez użytkownika jest prawidłowym sposobem udzielania uprawnień do grup zasobów obrazu. Nazwa SPN jest przestarzała w tym celu.

W poniższym przykładzie pokazano, jak utworzyć tożsamość zarządzaną przypisaną przez użytkownika platformy Azure. Zastąp ustawienia symbolu zastępczego, aby ustawić zmienne.

Ustawienie opis
<Grupa zasobów:> Grupa zasobów, w której chcesz utworzyć tożsamość zarządzaną przypisaną przez użytkownika.
identityName="aibIdentity"
imageResourceGroup=<Resource group>

az identity create \
    --resource-group $imageResourceGroup \
    --name $identityName

Aby uzyskać więcej informacji, zobacz Tożsamość zarządzana przypisana przez użytkownika platformy Azure.

Zezwalaj konstruktorowi obrazów maszyny wirtualnej na dystrybucję obrazów

Aby konstruktor obrazów maszyny wirtualnej dystrybuował obrazy, usługa musi mieć możliwość wstrzykiwania obrazów do grup zasobów. Aby przyznać wymagane uprawnienia, utwórz tożsamość zarządzaną przypisaną przez użytkownika i przyznaj jej prawa do grupy zasobów, w której jest tworzony obraz. Konstruktor obrazów maszyny wirtualnej nie ma uprawnień dostępu do zasobów w innych grupach zasobów w subskrypcji. Aby zapobiec awarii kompilacji, należy wykonać jawne akcje, aby zezwolić na dostęp.

Nie musisz udzielać uprawnień współautora tożsamości zarządzanej przypisanej przez użytkownika do grupy zasobów w celu rozpowszechniania obrazów. Jednak tożsamość zarządzana przypisana przez użytkownika wymaga następujących uprawnień platformy Azure Actions w grupie zasobów dystrybucji:

Microsoft.Compute/images/write
Microsoft.Compute/images/read
Microsoft.Compute/images/delete

Jeśli chcesz rozpowszechnić usługę Azure Compute Gallery, potrzebujesz również następujących elementów:

Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Microsoft.Compute/galleries/images/versions/write

Uprawnienie do dostosowywania istniejących obrazów

Aby konstruktor obrazów maszyny wirtualnej tworzył obrazy na podstawie źródłowych obrazów niestandardowych, usługa musi mieć możliwość odczytywania obrazów do tych grup zasobów. Aby udzielić wymaganych uprawnień, utwórz tożsamość zarządzaną przypisaną przez użytkownika i przyznaj jej prawa do grupy zasobów, w której znajduje się obraz.

Oto jak utworzyć z istniejącego obrazu niestandardowego:

Microsoft.Compute/images/read

Poniżej przedstawiono sposób tworzenia z istniejącej wersji galerii obliczeniowej platformy Azure:

Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read

Uprawnienie do dostosowywania obrazów w sieciach wirtualnych

Narzędzie VM Image Builder umożliwia wdrażanie i używanie istniejącej sieci wirtualnej w ramach subskrypcji, co umożliwia dostosowanie dostępu do połączonych zasobów.

Nie musisz udzielać uprawnień współautora tożsamości zarządzanej przypisanej przez użytkownika w grupie zasobów, aby wdrożyć maszynę wirtualną w istniejącej sieci wirtualnej. Jednak tożsamość zarządzana przypisana przez użytkownika wymaga następujących uprawnień platformy Azure Actions w grupie zasobów sieci wirtualnej:

Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/join/action

Tworzenie definicji roli platformy Azure

W poniższych przykładach utworzono definicję roli platformy Azure z akcji opisanych w poprzednich sekcjach. Przykłady są stosowane na poziomie grupy zasobów. Oceń i przetestuj, czy przykłady są wystarczająco szczegółowe dla Twoich wymagań.

Akcje obrazu umożliwiają odczyt i zapis. Zdecyduj, co jest odpowiednie dla danego środowiska. Na przykład utwórz rolę, aby umożliwić konstruktorowi obrazów maszyny wirtualnej odczytywanie obrazów z grupy zasobów example-rg-1 i zapisywanie obrazów w grupie zasobów example-rg-2.

Przykład roli platformy Azure obrazu niestandardowego

Poniższy przykład tworzy rolę platformy Azure do użycia i dystrybucji źródłowego obrazu niestandardowego. Następnie przyznasz rolę niestandardową tożsamości zarządzanej przypisanej przez użytkownika dla programu VM Image Builder.

Aby uprościć zastępowanie wartości w przykładzie, najpierw ustaw następujące zmienne. Zastąp ustawienia symbolu zastępczego, aby ustawić zmienne.

Ustawienie opis
<Identyfikator subskrypcji> Identyfikator subskrypcji platformy Azure.
<Grupa zasobów:> Grupa zasobów dla obrazu niestandardowego.
# Subscription ID - You can get this using `az account show | grep id` or from the Azure portal.
subscriptionID=$(az account show --query id --output tsv)
# 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 *cURL* to download the a sample JSON description 
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json -o aibRoleImageCreation.json

# Create a unique role name to avoid clashes in the same Azure Active Directory domain
imageRoleDefName="Azure Image Builder Image Def"$(date +'%s')

# Update the JSON definition using stream editor
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleImageCreation.json
sed -i -e "s/<rgName>/$imageResourceGroup/g" aibRoleImageCreation.json
sed -i -e "s/Azure Image Builder Service Image Creation Role/$imageRoleDefName/g" aibRoleImageCreation.json

# Create a custom role from the sample aibRoleImageCreation.json description file.
az role definition create --role-definition ./aibRoleImageCreation.json

# Get the user-assigned managed identity id
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)

# Grant the custom role to the user-assigned managed identity for Azure Image Builder.
az role assignment create \
    --assignee $imgBuilderCliId \
    --role $imageRoleDefName \
    --scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup

Przykład roli istniejącej sieci wirtualnej platformy Azure

Poniższy przykład tworzy rolę platformy Azure do użycia i dystrybucji istniejącego obrazu sieci wirtualnej. Następnie przyznasz rolę niestandardową tożsamości zarządzanej przypisanej przez użytkownika dla programu VM Image Builder.

Aby uprościć zastępowanie wartości w przykładzie, najpierw ustaw następujące zmienne. Zastąp ustawienia symbolu zastępczego, aby ustawić zmienne.

Ustawienie opis
<Identyfikator subskrypcji> Identyfikator subskrypcji platformy Azure.
<Grupa zasobów:> Grupa zasobów sieci wirtualnej
# Subscription ID - You can get this using `az account show | grep id` or from the Azure portal.
subscriptionID=$(az account show --query id --output tsv)
VnetResourceGroup=<Resource group>
identityName="aibIdentity"

# Use *cURL* to download the a sample JSON description 
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleNetworking.json -o aibRoleNetworking.json

# Create a unique role name to avoid clashes in the same domain
netRoleDefName="Azure Image Builder Network Def"$(date +'%s')

# Update the JSON definition using stream editor
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleNetworking.json
sed -i -e "s/<vnetRgName>/$vnetRgName/g" aibRoleNetworking.json
sed -i -e "s/Azure Image Builder Service Networking Role/$netRoleDefName/g" aibRoleNetworking.json

# Create a custom role from the aibRoleNetworking.json description file.
az role definition create --role-definition ./aibRoleNetworking.json

# Get the user-assigned managed identity id
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)

# Grant the custom role to the user-assigned managed identity for Azure Image Builder.
az role assignment create \
    --assignee $imgBuilderCliId \
    --role $netRoleDefName \
    --scope /subscriptions/$subscriptionID/resourceGroups/$VnetResourceGroup

Korzystanie z tożsamości zarządzanej na potrzeby dostępu do usługi Azure Storage

Jeśli chcesz uwierzytelnić się w usłudze Azure Storage i korzystać z kontenerów prywatnych, narzędzie VM Image Builder potrzebuje tożsamości zarządzanej przypisanej przez użytkownika. Konstruktor obrazów maszyny wirtualnej używa tożsamości do uwierzytelniania w usłudze Azure Storage.

Uwaga

Konstruktor obrazów maszyny wirtualnej używa tożsamości tylko w momencie przesyłania szablonu obrazu. Maszyna wirtualna kompilacji nie ma dostępu do tożsamości podczas kompilacji obrazu.

Użyj interfejsu wiersza polecenia platformy Azure, aby utworzyć tożsamość zarządzaną przypisaną przez użytkownika:

az role assignment create \
    --assignee <Image Builder client ID> \
    --role "Storage Blob Data Reader" \
    --scope /subscriptions/<Subscription ID>/resourceGroups/<Resource group>/providers/Microsoft.Storage/storageAccounts/$scriptStorageAcc/blobServices/default/containers/<Storage account container>

W szablonie konstruktora obrazów maszyny wirtualnej podaj tożsamość zarządzaną przypisaną przez użytkownika:

    "type": "Microsoft.VirtualMachineImages/imageTemplates",
    "apiVersion": "2020-02-14",
    "location": "<Region>",
    ..
    "identity": {
    "type": "UserAssigned",
          "userAssignedIdentities": {
            "<Image Builder ID>": {}     
        }

Zastąp następujące ustawienia symbolu zastępczego:

Ustawienie opis
<Region> Region szablonu
<Grupa zasobów:> Grupa zasobów
<Kontener konta magazynu> Nazwa kontenera konta magazynu
<Identyfikator subskrypcji> Subskrypcja platformy Azure

Aby uzyskać więcej informacji, zobacz Tworzenie obrazu i używanie tożsamości zarządzanej przypisanej przez użytkownika do uzyskiwania dostępu do plików w usłudze Azure Storage. Dowiesz się, jak utworzyć i skonfigurować tożsamość zarządzaną przypisaną przez użytkownika w celu uzyskania dostępu do konta magazynu.

Następne kroki

Omówienie narzędzia Azure VM Image Builder