Udostępnij przez


Szybki start: konfiguracja i pobieranie sekretu z Azure Key Vault za pomocą szablonu ARM

Azure Key Vault to usługa w chmurze, która zapewnia bezpieczny magazyn wpisów tajnych, takich jak klucze, hasła, certyfikaty i inne wpisy tajne. Ten poradnik szybki start koncentruje się na procesie wdrażania szablonu Azure Resource Manager (szablonu ARM) w celu utworzenia magazynu kluczy i tajnego klucza.

Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. Szablon używa składni deklaratywnej. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.

Jeśli środowisko spełnia wymagania i znasz szablony ARM, wybierz przycisk Wdróż na platformie Azure. Szablon zostanie otwarty w witrynie Azure Portal.

Przycisk wdrażania szablonu usługi Resource Manager na platformie Azure.

Wymagania wstępne

Aby ukończyć ten artykuł:

  • Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.

  • Identyfikator obiektu użytkownika Entra firmy Microsoft jest wymagany przez szablon w celu skonfigurowania uprawnień. Poniższa procedura pobiera identyfikator obiektu (GUID).

    1. Uruchom następujące polecenie Azure PowerShell lub Azure CLI, wybierając pozycję Wypróbuj, następnie wklej skrypt do okienka powłoki. Aby wkleić skrypt, kliknij prawym przyciskiem myszy powłokę, a następnie wybierz polecenie Wklej.

      echo "Enter your email address that is used to sign in to Azure:" &&
      read upn &&
      az ad user show --id $upn --query "Id" &&
      echo "Press [ENTER] to continue ..."
      
    2. Zanotuj identyfikator obiektu. Potrzebujesz go w następnej sekcji tego przewodnika Szybki start.

Przegląd szablonu

Szablon użyty w tym szybkim starcie pochodzi z szablonów szybkiego startu platformy Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.26.54.24096",
      "templateHash": "8629186205194254058"
    }
  },
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
      }
    },
    "objectId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
      }
    },
    "keysPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
      }
    },
    "secretsPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the secret that you want to create."
      }
    },
    "secretValue": {
      "type": "securestring",
      "metadata": {
        "description": "Specifies the value of the secret that you want to create."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "accessPolicies": [
          {
            "objectId": "[parameters('objectId')]",
            "tenantId": "[parameters('tenantId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]"
            }
          }
        ],
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
      "properties": {
        "value": "[parameters('secretValue')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('keyVaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
    }
  }
}

Dwa zasoby platformy Azure są zdefiniowane w szablonie:

Więcej przykładów szablonów usługi Azure Key Vault można znaleźć w artykule Szablony szybkiego startu platformy Azure.

Wdrażanie szablonu

  1. Wybierz poniższy obraz, aby zalogować się na platformie Azure i otworzyć szablon. Ten szablon umożliwia utworzenie magazynu kluczy oraz tajemnicy.

    Przycisk wdrażania szablonu usługi Resource Manager na platformie Azure.

  2. Wybierz lub wprowadź następujące wartości.

    Szablon usługi ARM, integracja z usługą Key Vault, wdrażanie portalu

    Jeśli nie jest to określone, użyj wartości domyślnej do utworzenia magazynu kluczy i tajemnicy.

    • Subskrypcja: wybierz subskrypcję platformy Azure.
    • Grupa zasobów: wybierz pozycję Utwórz nową, wprowadź unikatową nazwę grupy zasobów, a następnie kliknij przycisk OK.
    • Lokalizacja: wybierz lokalizację. Na przykład Środkowe stany USA.
    • Nazwa magazynu kluczy: wprowadź nazwę magazynu kluczy, która musi być globalnie unikatowa w przestrzeni nazw .vault.azure.net. Podczas walidacji wdrożenia będziesz potrzebować nazwy w następnej sekcji.
    • Identyfikator dzierżawy: funkcja szablonu automatycznie pobiera identyfikator dzierżawy. Nie zmieniaj wartości domyślnej.
    • Identyfikator użytkownika Azure AD: wprowadź identyfikator obiektu użytkownika z Microsoft Entra pobrany z wymagań wstępnych.
    • Nazwa tajemnicy: wprowadź nazwę tajemnicy przechowywanej w magazynie kluczy. Na przykład adminpassword.
    • Wartość tajna: wprowadź wartość tajną. Jeśli przechowujesz hasło, zalecane jest użycie wygenerowanego hasła utworzonego w sekcji Wymagania wstępne.
    • Wyrażam zgodę na powyższe warunki i postanowienia: zaznacz.
  3. Wybierz pozycję Kup. Po pomyślnym wdrożeniu skarbca kluczy dostaniesz powiadomienie.

    Szablon ARM, integracja z Key Vault, wdrażanie powiadomień w portalu

Szablon jest wdrażany za pomocą witryny Azure Portal. Oprócz witryny Azure Portal możesz również użyć programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure i interfejsu API REST. Aby dowiedzieć się więcej o innych metodach wdrażania, zobacz Wdrażanie szablonów.

Przeglądanie wdrożonych zasobów

Możesz użyć portalu Azure, aby sprawdzić magazyn kluczy i sekret, lub użyć następującego Azure CLI lub Azure PowerShell, aby wyświetlić utworzony sekret.

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

Dane wyjściowe wyglądają podobnie do następujących:

Uprzątnij zasoby

Inne przewodniki szybkiego startu i samouczki dotyczące Key Vault opierają się na tym przewodniku. Jeśli planujesz nadal korzystać z kolejnych szybkich startów i samouczków, warto pozostawić te zasoby na miejscu. Jeśli nie będą Ci one już potrzebne, usuń grupę zasobów, a zostanie także usunięta usługa Key Vault i powiązane zasoby. Aby usunąć grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell:

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

Dalsze kroki

W tym szybkim rozpoczęciu utworzono magazyn kluczy i tajny przy użyciu szablonu Azure Resource Manager, po czym zweryfikowano wdrożenie. Aby dowiedzieć się więcej na temat usługi Key Vault i usługi Azure Resource Manager, przejdź do poniższych artykułów.