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
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
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>/$VnetResourceGroup/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.