我可以将 JSON 存储在 Azure Key Vault 中吗

Can I store JSON in a Azure Key Vault

我有一些 JSON 想要存储在 Azure Key Vault 中。

数据不是这样分层的:

{
  "type": "XXXXXX",
  "project_id": "XXXXXX",
  "private_key_id": "XXXXXXXX"
}

但我有 4 组 JSON 数据,每组都有秘密,所以我希望我不必将它们分解成单独的密钥,但如果必须的话,我会这样做这个。

将此视为使用 Azure CLI 将机密添加到 Azure Key Vault 的有效语句:

az keyvault secret set --vault-name "<YourKeyVaultName>" --name "AppSecret" --value "MySecret",摘自 Tutorial: Use Azure Key Vault with an Azure web app in .NET

在此基础上,我看不出值 MySecret 不能是 JSON 字符串的任何原因。

进一步调查,看看 About keys, secrets, and certificates - Key Vault secrets:

From a developer's perspective, Key Vault APIs accept and return secret values as strings. Internally, Key Vault stores and manages secrets as sequences of octets (8-bit bytes), with a maximum size of 25k bytes each.

因此,只要您的 JSON 低于 25k 限制,您就可以开始了。

诀窍是在 PowerShell 命令行上正确转义引号 (\`" = backslash, backtick & double quote) 以满足 JSON 和 PowerShell 格式都用于转义引号。下面是一个示例,说明如何将 JSON 字符串添加为机密的值。请注意 --value 中的文本对于每个需要转义的引号都有一个 \`" 转义序列。 PowerShell needs backtick 转义命令行上的double quote。 JSON 字符串需要 backslash 来转义 double quote。因此,您将 backtick 置于 backslashdouble quote (\`") 之间,从而同时满足 PowerShell 和 JSON:

az keyvault secret set `
   --vault-name "<YourKeyVaultName>" `
   --name "AppSecret" `
   --description "An optional description" `
   --disabled false `
   --value "{\`"type\`":\`"XXXXXX\`",\`"project_id\`":\`"XXXXXX\`",\`"private_key_id\`":\`"XXXXXXXX\`"}"