如何通过ARM模板输出返回Redis主键?

问题描述 投票:0回答:2

我试图借助下面列出的ARM模板部署Redis-然后返回其主键(Azure门户中Redis的秘密字符串在“访问键”->“主”下):

portal screenshot

但是我从管道“ AzureResourceManagerTemplateDeployment @ 3”任务中收到错误消息:

[[错误]无法评估模板输出:'RedisCachePassword'。请查看错误详细信息和部署操作。请参阅https://aka.ms/arm-debug了解详细用法。

[错误]详细信息:

[[error] DeploymentOutputEvaluationFailed:模板输出'RedisCachePassword'无效:无法评估语言表达式属性'primaryKey'。]]

下面的我的ARM模板有什么问题?在这种情况下如何找到正确的名称?

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "redisCacheName": {
            "defaultValue": "my-redis",
            "type": "String"
        }
    },
    "variables": {
        "resourceName": "[concat(resourceGroup().name, '-', parameters('redisCacheName'))]"
    },
    "outputs": {
      "RedisCacheEndpoint": {
        "type": "string",
        "value": "[concat(reference(variables('resourceName')).hostName, ':', reference(variables('resourceName')).sslPort)]"
      },
      "RedisCachePassword": {
        "type": "string",
        "value": "[reference(variables('resourceName')).accessKeys.primaryKey]"
      }
    },
    "resources": [
        {
            "type": "Microsoft.Cache/Redis",
            "apiVersion": "2019-07-01",
            "name": "[variables('resourceName')]",
            "location": "[resourceGroup().location]",
            "properties": {
                "sku": {
                    "name": "Basic",
                    "family": "C",
                    "capacity": 1
                },
                "enableNonSslPort": false
            }
        }
    ]
}

为什么[reference(variables('resourceName')).accessKeys.primaryKey]不起作用?

我正在尝试使用下面列出的ARM模板来部署Redis-然后返回其主键(Azure门户中Redis的秘密字符串在“访问键”->“主”下可用:...] >

azure redis azure-resource-manager arm-template azure-template
2个回答
1
投票

请注意,这些输出在某些方面非常明显。您最好在listKeys之外调用outputs命令。您可以在其他模板中使用它,也可以通过AzureCLI或Powershell单独执行命令。

Outputs are not secrets for Azure


1
投票

Alex提到了这一点,但我要说得更强烈...不要在输出中放秘密。这意味着对部署具有读取权限的任何人都可以访问他们可能无法访问的资源的秘密。 IOW,我什至没有访问该redisCache的权限,但是如果我有权访问该部署,那么我也可以访问该秘密。

© www.soinside.com 2019 - 2024. All rights reserved.