Rahasia Key Vault akses saat menyebarkan Azure Managed Applications

Ketika Anda perlu meneruskan nilai aman (seperti kata sandi) sebagai parameter selama penyebaran, Anda dapat mengambil nilai dari Azure Key Vault. Untuk mengakses Key Vault saat menyebarkan Aplikasi Terkelola, Anda harus memberikan akses ke perwakilan layanan Penyedia Sumber Appliance. Layanan Aplikasi Terkelola menggunakan identitas ini untuk menjalankan operasi. Agar berhasil mengambil nilai dari Key Vault selama penyebaran, perwakilan layanan harus dapat mengakses Key Vault.

Artikel ini menjelaskan cara mengonfigurasi Key Vault agar berfungsi dengan Aplikasi Terkelola.

Mengaktifkan penyebaran templat

  1. Masuk ke portal Azure.

  2. Buka brankas kunci Anda. Masukkan brankas kunci di kotak penelusuran atau pilih Key Vault.

    Screenshot of the Azure home page to open a key vault using search or by selecting key vault.

  3. Pilih Konfigurasi akses.

    Screenshot of the key vault setting to select access configuration.

  4. Pilih Azure Resource Manager untuk penyebaran pola dasar. Kemudian, pilih Terapkan.

    Screenshot of the key vault's access configuration that enables Azure Resource Manager for template deployment.

Menambahkan layanan sebagai kontributor

Tetapkan peran Kontributor ke pengguna Appliance Resource Provider pada cakupan brankas kunci. Peran Kontributor adalah peran administrator istimewa untuk penetapan peran. Untuk langkah-langkah mendetail, buka Menetapkan peran Azure menggunakan portal Azure.

Penyedia Sumber Daya Appliance adalah perwakilan layanan di penyewa Microsoft Entra Anda. Dari portal Azure, Anda dapat memverifikasi apakah terdaftar dengan masuk ke aplikasi Microsoft Entra ID>Enterprise dan mengubah filter pencarian ke Aplikasi Microsoft. Telusuri Penyedia Sumber Daya Appliance. Jika tidak ditemukan, daftarkan penyedia sumber daya Microsoft.Solutions.

Rahasia Key Vault Referensi

Untuk meneruskan rahasia dari Key Vault ke templat di Aplikasi Terkelola, Anda harus menggunakan templat yang tertaut atau berlapis dan mereferensikan Key Vault dalam parameter untuk templat yang tertaut atau berlapis. Berikan ID sumber daya Key Vault dan nama rahasia.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location where the resources will be deployed."
      }
    },
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key vault that contains the secret."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "The name of the secret."
      }
    },
    "vaultResourceGroupName": {
      "type": "string",
      "metadata": {
        "description": "The name of the resource group that contains the key vault."
      }
    },
    "vaultSubscription": {
      "type": "string",
      "defaultValue": "[subscription().subscriptionId]",
      "metadata": {
        "description": "The name of the subscription that contains the key vault."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2022-09-01",
      "name": "dynamicSecret",
      "properties": {
        "mode": "Incremental",
        "expressionEvaluationOptions": {
          "scope": "inner"
        },
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
            "adminLogin": {
              "type": "string"
            },
            "adminPassword": {
              "type": "securestring"
            },
            "location": {
              "type": "string"
            }
          },
          "variables": {
            "sqlServerName": "[concat('sql-', uniqueString(resourceGroup().id, 'sql'))]"
          },
          "resources": [
            {
              "type": "Microsoft.Sql/servers",
              "apiVersion": "2022-05-01-preview",
              "name": "[variables('sqlServerName')]",
              "location": "[parameters('location')]",
              "properties": {
                "administratorLogin": "[parameters('adminLogin')]",
                "administratorLoginPassword": "[parameters('adminPassword')]"
              }
            }
          ],
          "outputs": {
            "sqlFQDN": {
              "type": "string",
              "value": "[reference(variables('sqlServerName')).fullyQualifiedDomainName]"
            }
          }
        },
        "parameters": {
          "location": {
            "value": "[parameters('location')]"
          },
          "adminLogin": {
            "value": "ghuser"
          },
          "adminPassword": {
            "reference": {
              "keyVault": {
                "id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
              },
              "secretName": "[parameters('secretName')]"
            }
          }
        }
      }
    }
  ],
  "outputs": {
  }
}

Langkah berikutnya

Anda telah mengonfigurasi Key Vault agar dapat diakses selama penyebaran Aplikasi Terkelola.