Správa tajných kódů v šablonách

Dokončeno

Při předávání zabezpečené hodnoty (například hesla) jako parametru během nasazování můžete načíst hodnotu ze služby Azure Key Vault.

Odkazujte na key Vault a tajný klíč v souboru parametrů.

Hodnota se nikdy neodhaluje, protože odkazujete pouze na příslušné ID služby Key Vault.

Key Vault může existovat v jiném předplatném, než je skupina prostředků, do které ji nasazujete.

Nasazení služby Key Vault a tajného kódu

K vytvoření služby Key Vault a tajného kódu použijte Azure CLI nebo PowerShell.

Pokud chcete získat přístup k tajným kódům v tomto trezoru klíčů z nasazení Resource Manageru, musí být vlastnost Key Vault enabledForTemplateDeployment pravdivá.

Použití Azure CLI

Následující fragment kódu je příkladem nasazení služby Key Vault a tajného kódu pomocí Azure CLI:

keyVaultName='{your-unique-vault-name}'
resourceGroupName='{your-resource-group-name}'
location='centralus'
userPrincipalName='{your-email-address-associated-with-your-subscription}'

# Create a resource group
az group create --name $resourceGroupName --location $location

# Create a Key Vault
az keyvault create \
  --name $keyVaultName \
  --resource-group $resourceGroupName \
  --location $location \
  --enabled-for-template-deployment true
az keyvault set-policy --upn $userPrincipalName --name $keyVaultName --secret-permissions set delete get list

# Create a secret with the name, vmAdminPassword
password=$(openssl rand -base64 32)
echo $password
az keyvault secret set --vault-name $keyVaultName --name 'vmAdminPassword' --value $password

Povolení přístupu k tajnému kódu

Kromě nastavení vlastnosti Služby Key Vault, která je povolenaforTemplateDeployment na hodnotu true, musí mít Microsoft.KeyVault/vaults/deploy/action uživatel, který šablonu nasazuje, oprávnění pro obor služby Key Vault.

Včetně skupiny prostředků a služby Key Vault. Role Vlastník i Přispěvatel udělí tento přístup.

Pokud vytváříte službu Key Vault, jste vlastníkem, takže máte ze své podstaty oprávnění.

Pokud je ale služba Key Vault pod jiným předplatným, musí vlastník služby Key Vault udělit přístup.

Odkaz na tajný klíč se statickým ID

Na službu Key Vault se odkazuje v souboru parametrů, nikoli na šablonu.

Následující obrázek ukazuje, jak soubor parametrů odkazuje na tajný klíč a předá danou hodnotu šabloně.

Diagram showing the illustration of the flow of a secret during template deployment. The parameter file references the secret from the template and passes that value to the template.

Následující šablona nasadí databázi SQL, která obsahuje heslo správce.

Parametr hesla je nastavený na zabezpečený řetězec. Šablona ale neurčí, odkud tato hodnota pochází:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "adminLogin": {
      "type": "string"
    },
    "adminPassword": {
      "type": "securestring"
    },
    "sqlServerName": {
      "type": "string"
    }
  },
  "resources": [
    {
      "name": "[parameters('sqlServerName')]",
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2015-05-01-preview",
      "location": "[resourceGroup().location]",
      "tags": {},
      "properties": {
        "administratorLogin": "[parameters('adminLogin')]",
        "administratorLoginPassword": "[parameters('adminPassword')]",
        "version": "12.0"
      }
    }
  ],
  "outputs": {
  }
}

Teď můžete vytvořit soubor parametrů pro předchozí šablonu. V souboru parametrů zadejte parametr, který odpovídá názvu parametru v šabloně.

Pro hodnotu parametru odkazujte na tajný klíč ze služby Key Vault. Na tajný kód odkazujete předáním identifikátoru prostředku služby Key Vault a názvu tajného kódu.

Tajný klíč služby Key Vault už musí existovat v následujícím souboru parametrů a pro jeho ID prostředku zadáte statickou hodnotu.

Zkopírujte tento soubor místně a nastavte ID předplatného, název trezoru a název sql serveru:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "adminLogin": {
            "value": "exampleadmin"
        },
        "adminPassword": {
            "reference": {
              "keyVault": {
                "id": "/subscriptions/<subscription-id>/resourceGroups/examplegroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
              },
              "secretName": "examplesecret"
            }
        },
        "sqlServerName": {
            "value": "<your-server-name>"
        }
    }
}

Šablonu byste museli nasadit a předat do šablony soubor parametrů.

Další informace najdete v Azure Key Vaultu k předání hodnot zabezpečených parametrů během nasazování .

Na této webové stránce jsou také podrobnosti o odkazu na tajný kód s dynamickým ID.