Sdílet prostřednictvím


Konfigurace oprávnění Azure VM Image Builderu pomocí Azure CLI

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️

Když zaregistrujete Azure VM Image Builder, vaše předplatné získá přístup k hlavnímu názvu služby (SPN) VM Image Builderu. Tato registrace také autorizuje oprávnění služby k vytvoření, správě a odstranění pracovní skupiny prostředků. Pro proces vytváření imagí se v pracovní skupině prostředků vyžaduje také přiřazení role Přispěvatel.

Pokud chcete, aby Image Builder virtuálního počítače distribuuje image, musíte v Azure vytvořit identitu přiřazenou uživatelem s oprávněními ke čtení a zápisu imagí. Můžete například chtít distribuovat image do spravovaných imagí nebo do Galerie výpočetních prostředků Azure. Pokud přistupujete ke službě Azure Storage, identita přiřazená uživatelem, kterou vytvoříte, potřebuje oprávnění ke čtení privátních nebo veřejných kontejnerů.

Před vytvořením image musíte nastavit oprávnění a oprávnění. Následující části podrobně popisuje, jak nakonfigurovat možné scénáře pomocí Azure CLI.

Požadavky

Vytvoření spravované identity přiřazené uživatelem

Image Builder virtuálního počítače vyžaduje, abyste vytvořili spravovanou identitu přiřazenou uživatelem Azure. Image Builder virtuálního počítače používá tuto identitu ke čtení imagí, zápisu imagí a přístupu k účtům úložiště Azure. Identitě udělíte oprávnění k provádění konkrétních akcí ve vašem předplatném.

Poznámka:

Spravovaná identita přiřazená uživatelem je správný způsob, jak udělit oprávnění skupinám prostředků image. Hlavní název služby (SPN) je pro tento účel zastaralý.

Následující příklad ukazuje, jak vytvořit spravovanou identitu přiřazenou uživatelem Azure. Nahraďte nastavení zástupného symbolu a nastavte proměnné.

Nastavení Popis
<Skupina prostředků> Skupina prostředků, ve které chcete vytvořit spravovanou identitu přiřazenou uživatelem.
identityName="aibIdentity"
imageResourceGroup=<Resource group>

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

Další informace najdete v tématu Spravovaná identita přiřazená uživatelem Azure.

Povolení distribuce imagí VM Image Builderu

Aby služba VM Image Builder distribuuje image, musí mít služba povoleno vkládat image do skupin prostředků. Pokud chcete udělit požadovaná oprávnění, vytvořte spravovanou identitu přiřazenou uživatelem a udělte jí oprávnění ke skupině prostředků, ve které je image vytvořená. VM Image Builder nemá oprávnění pro přístup k prostředkům v jiných skupinách prostředků v předplatném. Abyste zabránili selhání sestavení, musíte provést explicitní akce, které umožní přístup.

K distribuci imagí nemusíte u skupiny prostředků udělovat práva přispěvatele spravované identity přiřazené uživatelem. Spravovaná identita přiřazená uživatelem ale potřebuje v distribuční skupině prostředků následující oprávnění Azure Actions :

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

Pokud chcete distribuovat do Galerie výpočetních prostředků Azure, potřebujete také:

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

Oprávnění k přizpůsobení existujících imagí

Aby nástroj Image Builder virtuálního počítače mohl vytvářet image ze zdrojových vlastních imagí, musí mít služba povolené čtení imagí do těchto skupin prostředků. Pokud chcete udělit požadovaná oprávnění, vytvořte spravovanou identitu přiřazenou uživatelem a udělte jí oprávnění ke skupině prostředků, ve které se image nachází.

Tady je postup sestavení z existující vlastní image:

Microsoft.Compute/images/read

Tady je postup sestavení z existující verze Galerie výpočetních prostředků Azure:

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

Oprávnění k přizpůsobení imagí ve virtuálních sítích

VM Image Builder má možnost nasadit a používat existující virtuální síť ve vašem předplatném, což umožňuje přizpůsobení přístupu k připojeným prostředkům.

Pokud chcete nasadit virtuální počítač do existující virtuální sítě, nemusíte u skupiny prostředků udělovat oprávnění přispěvatele spravované identity přiřazené uživatelem. Spravovaná identita přiřazená uživatelem ale potřebuje pro skupinu prostředků virtuální sítě následující oprávnění Azure Actions :

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

Vytvoření definice role Azure

Následující příklady vytvoří definici role Azure z akcí popsaných v předchozích částech. Příklady se použijí na úrovni skupiny prostředků. Vyhodnoťte a otestujte, jestli jsou příklady dostatečně podrobné pro vaše požadavky.

Akce obrázku umožňují čtení a zápis. Rozhodněte se, co je vhodné pro vaše prostředí. Vytvořte například roli, která umožní Nástroji image virtuálního počítače číst image ze skupiny prostředků example-rg-1 a zapisovat image do skupiny prostředků example-rg-2.

Příklad role Azure s vlastní imagí

Následující příklad vytvoří roli Azure pro použití a distribuci zdrojové vlastní image. Potom vlastní roli udělíte spravované identitě přiřazené uživatelem pro VM Image Builder.

Chcete-li zjednodušit nahrazení hodnot v příkladu, nastavte nejprve následující proměnné. Nahraďte nastavení zástupného symbolu a nastavte proměnné.

Nastavení Popis
<ID předplatného> ID vašeho předplatného Azure
<Skupina prostředků> Skupina prostředků pro vlastní image
# 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

Příklad existující role Azure virtuální sítě

Následující příklad vytvoří roli Azure pro použití a distribuci existující image virtuální sítě. Potom vlastní roli udělíte spravované identitě přiřazené uživatelem pro VM Image Builder.

Chcete-li zjednodušit nahrazení hodnot v příkladu, nastavte nejprve následující proměnné. Nahraďte nastavení zástupného symbolu a nastavte proměnné.

Nastavení Popis
<ID předplatného> ID vašeho předplatného Azure
<Skupina prostředků> Skupina prostředků virtuální sítě
# 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

Použití spravované identity pro přístup ke službě Azure Storage

Pokud se chcete ověřit ve službě Azure Storage a používat privátní kontejnery, potřebuje Image Builder virtuálního počítače spravovanou identitu přiřazenou uživatelem. Image Builder virtuálního počítače používá identitu k ověření ve službě Azure Storage.

Poznámka:

Image Builder virtuálního počítače používá identitu pouze v okamžiku odeslání šablony image. Virtuální počítač sestavení nemá během sestavování image přístup k identitě.

Pomocí Azure CLI vytvořte spravovanou identitu přiřazenou uživatelem:

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>

V šabloně Image Builderu virtuálního počítače zadejte spravovanou identitu přiřazenou uživatelem:

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

Nahraďte následující nastavení zástupného symbolu:

Nastavení Popis
<Oblast> Oblast šablony
<Skupina prostředků> Skupina prostředků
<Kontejner účtu úložiště> Název kontejneru účtu úložiště
<ID předplatného> Předplatné Azure

Další informace najdete v tématu Vytvoření image a použití spravované identity přiřazené uživatelem pro přístup k souborům ve službě Azure Storage. Dozvíte se, jak vytvořit a nakonfigurovat spravovanou identitu přiřazenou uživatelem pro přístup k účtu úložiště.

Další kroky

Přehled Azure VM Image Builderu