Esteja ciente de que essas saídas são, de certa forma, bastante visíveis. Talvez seja melhor invocar as
listKeys
comando fora de suas outputs
. Você pode usá-lo em outros modelos ou executar o comando separadamente via AzureCLI ou Powershell. 
Se você sabe o que está fazendo, é assim que você deve configurá-lo:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"redisCacheName": {
"defaultValue": "myredisinstance",
"type": "String"
}
},
"variables": {
"resourceId": "[resourceId('Microsoft.Cache/Redis', parameters('redisCacheName'))]",
"apiVersion": "[providers('Microsoft.Cache', 'redis').apiVersions[0]]"
},
"outputs": {
"RedisCachePassword": {
"type": "string",
"value": "[listKeys(variables('resourceId'), variables('apiVersion')).primaryKey]"
}
},
"resources": []
}
Aqui estão mais algumas informações sobre como isso funciona em geral.
Para "depurar" essas coisas, gosto de usar https://resources.azure.com e observar a saída e a guia "ações":
