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
若要了解有关市场策略的详细信息,请参阅 商业市场认证策略 文档。