Snabbstart: Skapa ett Azure-nyckelvalv och en nyckel med hjälp av ARM-mall

Azure Key Vault är en molntjänst som tillhandahåller ett säkert arkiv för hemligheter, till exempel nycklar, lösenord och certifikat. Den här snabbstarten fokuserar på processen att distribuera en Azure Resource Manager-mall (ARM-mall) för att skapa ett nyckelvalv och en nyckel.

En Azure Resource Manager-mall är en JSON-fil (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för projektet. Mallen använder deklarativ syntax. Du beskriver den avsedda distributionen utan att skriva sekvensen med programmeringskommandon för att skapa distributionen.

Om din miljö uppfyller förhandskraven och du är van att använda ARM-mallar väljer du knappen Distribuera till Azure. Mallen öppnas i Azure-portalen.

Button för att distribuera mallen Resource Manager till Azure.

Förutsättningar

Så här slutför du den här artikeln:

  • Om du inte har en Azure-prenumeration, skapa ett gratis konto innan du börjar.
  • Användaren måste ha tilldelats en inbyggd Azure-roll, rekommenderad roll contributor. Läs mer här

Granska mallen

Mallen som används i den här snabbstarten kommer från Azure-snabbstartsmallar.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.42.1.51946",
      "templateHash": "9113739717796369919"
    }
  },
  "parameters": {
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key vault to be created."
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key to be created."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location of the resources."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "The SKU of the vault to be created."
      }
    },
    "keyType": {
      "type": "string",
      "defaultValue": "RSA",
      "allowedValues": [
        "EC",
        "EC-HSM",
        "RSA",
        "RSA-HSM"
      ],
      "metadata": {
        "description": "The JsonWebKeyType of the key to be created."
      }
    },
    "keyOps": {
      "type": "array",
      "defaultValue": [],
      "metadata": {
        "description": "The permitted JSON web key operations of the key to be created."
      }
    },
    "keySize": {
      "type": "int",
      "defaultValue": 2048,
      "metadata": {
        "description": "The size in bits of the key to be created."
      }
    },
    "curveName": {
      "type": "string",
      "defaultValue": "",
      "allowedValues": [
        "",
        "P-256",
        "P-256K",
        "P-384",
        "P-521"
      ],
      "metadata": {
        "description": "The JsonWebKeyCurveName of the key to be created."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "enabledForDeployment": false,
        "enabledForDiskEncryption": false,
        "enabledForTemplateDeployment": false,
        "tenantId": "[subscription().tenantId]",
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/keys",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('vaultName'), parameters('keyName'))]",
      "properties": {
        "kty": "[parameters('keyType')]",
        "keyOps": "[parameters('keyOps')]",
        "keySize": "[parameters('keySize')]",
        "curveName": "[parameters('curveName')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
      ]
    }
  ],
  "outputs": {
    "proxyKey": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')), '2023-07-01')]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('vaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
    }
  }
}

Två resurser definieras i mallen:

Mallen skapar nyckelvalvet med Azure RBAC-auktorisering aktiverad. Det innebär att valvet använder Azure rollbaserad åtkomstkontroll (Azure RBAC) för auktorisering av dataplan i stället för åtkomstprinciper.

Fler Azure Key Vault-mallexempel finns i Azure-snabbstartsmallar.

Mallparametrar

Parameter Description
vaultName Namnet på det nya nyckelvalvet. Måste vara globalt unikt inom vault.azure.net namnområdet.
Nyckelnamn Namnet på nyckeln som ska skapas i valvet.
Plats / Ort Azure-regionen för resurserna. Standardvärdet sätts till resursgruppsplatsen.
skuName Vault SKU. standard (standard) eller premium.
keyType Vilken typ av nyckel som ska skapas. En av RSA, RSA-HSM, EC, EC-HSM. Standard är RSA. Se JsonWebKeyType.
Keysize Storlek i bitar av nyckeln (endast RSA). Standard är 2048.
curveName Namn på elliptisk kurva (endast EC-nycklar). En av P-256, P-256K, P-384, P-521. Se JsonWebKeyCurveName.
keyOps Tillåtna JSON-webbnyckelåtgärder för nyckeln (till exempel ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"]). Tom matris (standard) tillåter alla åtgärder.

Använd mallen

  1. Välj följande bild för att logga in på Azure och öppna en mall. Mallen skapar ett nyckelvalv och en nyckel.

    Button för att distribuera mallen Resource Manager till Azure.

  2. Välj eller ange följande värden. Om det inte anges använder du standardvärdet.

    • Prenumeration: välj en Azure-prenumeration.
    • Resursgrupp: välj Skapa ny, ange ett unikt namn för resursgruppen och välj sedan OK.
    • Region: välj en plats. Till exempel Centrala USA.
    • Valvnamn: Ange ett namn för nyckelvalvet, som måste vara globalt unikt inom vault.azure.net namnområdet.
    • Nyckelnamn: ange ett namn för nyckeln som du lagrar i nyckelvalvet.
    • SKU-namn: välj standard eller premium. Standardvärdet är standard.
    • Nyckeltyp: välj en nyckeltyp. Standardvärdet är RSA.
    • Nyckelstorlek: Ange en nyckelstorlek (RSA-nycklar). Standardvärdet är 2048.
    • Kurvnamn: För EC-nycklar väljer du en kurva. Lämna tomt för RSA-nycklar.
  3. Välj Granska + skapaoch välj sedan Skapa. När nyckelvalvet och nyckeln har distribuerats utan problem får du ett meddelande.

Du kan också använda Azure PowerShell, Azure CLI eller REST API för att distribuera mallen. Mer information om andra distributionsmetoder finns i Distribuera mallar.

Tilldela en Key Vault RBAC-roll

Nyckelvalvet som skapas av den här mallen använder Azure RBAC för auktorisering. För att få åtkomst till nycklar via dataplanet (till exempel med hjälp av Azure CLI eller Azure PowerShell) måste du tilldela dig själv en lämplig roll.

  1. Hämta ditt Microsoft Entra användarobjekt-ID:

    az ad signed-in-user show --query id -o tsv
    
  2. Tilldela dig själv rollen Key Vault Crypto Officer i nyckelvalvet:

    echo "Enter your key vault name:" &&
    read keyVaultName &&
    az role assignment create --role "Key Vault Crypto Officer" \
        --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
        --scope $(az keyvault show --name $keyVaultName --query id -o tsv)
    

    Note

    Rolltilldelningar kan ta en minut eller två att slå igenom.

Granska distribuerade resurser

Du kan använda Azure-portalen för att kontrollera nyckelvalvet och nyckeln. Du kan också använda följande Azure CLI- eller Azure PowerShell-skript för att lista den nyckel som skapats.

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault key list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."

Att skapa en nyckel med hjälp av ARM-mallen skiljer sig från att skapa en nyckel via dataplanet

Skapa en nyckel via ARM

  • Det går bara att skapa nya nycklar. Det går inte att uppdatera befintliga nycklar eller skapa nya versioner av befintliga nycklar. Om nyckeln redan finns hämtas den befintliga nyckeln från lagringen och används (inga skrivåtgärder utförs).

  • För att vara behörig att använda det här API:et måste anroparen ha behörighet för åtgärden "Microsoft.KeyVault/vaults/keys/write" i rollbaserad åtkomstkontroll (Azure RBAC). Den inbyggda rollen "Key Vault-medverkare" räcker eftersom den auktoriserar alla Azure RBAC-åtgärder som överensstämmer med mönstret "Microsoft.KeyVault/*".

    Skapa en nyckel via ARM 1 Skapa en nyckel via ARM 2

Befintligt API (skapa nyckel via dataplan)

  • Det går att skapa nya nycklar, uppdatera befintliga nycklar och skapa nya versioner av befintliga nycklar.
  • Anroparen måste ha behörighet att använda det här API:et. Om valvet är aktiverat för Azure RBAC måste anroparen ha "Microsoft. KeyVault/vaults/keys/create/action" Azure RBAC DataAction.

Rensa resurser

Andra snabbstarter och självstudier för Key Vault bygger på den här snabbstarten. Om du planerar att fortsätta med efterföljande snabbstartsguider och handledningar, kan det vara bra att låta dessa resurser vara kvar. När den inte längre behövs tar du bort resursgruppen, som tar bort Nyckelvalvet och relaterade resurser. Så här tar du bort resursgruppen med hjälp av Azure CLI eller Azure PowerShell:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Note

Om du tar bort resursgruppen tas även nyckelvalvet bort, men valvet går sedan in i ett mjukt borttaget tillstånd och kan fortfarande återställas under kvarhållningsperioden (90 dagar som standard). Valvnamnet förblir reserverat globalt under den perioden och eftersom rensningsskyddet är aktiverat kan valvet inte rensas tidigt. För nyckelvalv av standardtyp medför mjukt borttagna valv inga avgifter. Mer information finns i Översikt över mjuk borttagning i Key Vault.

Nästa steg

I den här snabbstarten skapade du ett nyckelvalv och en nyckel med hjälp av en ARM-mall och verifierade distributionen. Mer information om Key Vault och Azure Resource Manager finns i de här artiklarna.