硬编码凭据的限制

Azure 应用程序强制实施严格的安全策略,禁止在托管应用程序和解决方案模板中使用硬编码凭据(例如用户名、密码、密钥、SAS URI)。 此限制在 市场认证策略 300.4.4 参数下强制实施。

硬编码凭据的安全风险

硬编码凭据会带来重大风险:

  • 攻击者可以利用它们来获取对已部署资源的未经授权的访问
  • 它们违反安全编码做法并损害客户信任

因此,模板中存在的任何机密都面临暴露风险,不能被视为安全。

在 ARM 模板中管理凭据

  • 托管应用程序(仅当启用了管理访问时): 部署托管应用程序时使用 Azure Key Vault
  • 解决方案模板:凭据必须参数化并由客户提供。 如果出于任何原因,这是不可能的,则应在模板中随机生成它们,不应猜测。
    • 在模板中实现参数
    • 用于凭据或机密的变量不应使用纯文本字符串。
    • 函数的使用 uniquestring 对输入具有确定性,并且不符合密码不可猜测的要求。 模板函数
    • 任何密码字符串不得与任何纯文本字符串连接。 例如,[concat(parameters('password'))、'plaintext')]是无效密码。 这是为了避免填充字符串以绕过密码长度要求。
    • 如果有硬编码的 SAS URI,则它与公共链接一样好。 发布者可以使用 zip 文件创建公共链接或打包资源,并使用 引用的链接模板和项目对其进行引用。

凭据示例

硬编码凭据:

  • "adminPassword": "fixedValue"

可猜测的密码:

  • "adminPassword": "[concat(resourceId('Microsoft.Compute/virtualMachines', variables('vmName')), 'fixedvalue')]"

SAS URI:

  • https://<storage_account>.blob.core.chinacloudapi.cn/<container>/<blob_name>?sv=2022-11-02&st=2025-08-20T09%3A00%3A00Z&se=2025-08-20T10%3A00%3A00Z&sr=b&sp=r&sig=<signature>

API 密钥/存储密钥:

  • api_key = "12345abcde67890xyz12345abcde67890"

References

若要了解有关市场策略的详细信息,请参阅 商业市场认证策略 文档。