我们得到了一个很大的azure blueprint模板,它为我们创建了很多工件。其中一个工件是Azure密钥库。密钥库被创建,所需的秘密就在里面。
他试图创建的其他工件之一是Microsoft.Web/Certificates。我们尝试用下面的json创建它
{
"name": "create-certificate",
"kind": "template",
"properties": {
"template": {
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string"
},
"location": {
"type": "string"
},
"vaultName": {
"type": "string"
},
"serverFarmId": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.Web/certificates",
"name": "[parameters('name')]",
"apiVersion": "2016-03-01",
"location": "[parameters('location')]",
"properties": {
"keyVaultId": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]",
"keyVaultSecretName": "Origin-Certificate",
"serverFarmId": "[parameters('serverFarmId')]"
}
}
]
},
"resourceGroup": "TD-RG",
"parameters": {
"name": {
"value": "[concat(parameters('environmentSuffix'), '-Orgin')]"
},
"location": {
"value": "[parameters('location')]"
},
"vaultName": {
"value":"[concat(parameters('environmentSuffix'), '-Vault')]"
},
"ServerFarmId": {
"value": "[artifacts('create-service-plan').outputs.ServerFarmId]"
}
},
"dependsOn": ["create-service-plan", "create-key-vault"]
}
}
因此,它很好地等待我们首先创建一个服务计划和密钥库,然后尝试从密钥库秘密中读取orgin证书。我们得到的错误是:
服务无权访问“{密钥存储库路径}”密钥存储库。请确保已授予服务执行请求操作所需的权限。
Set-AzureRmKeyVaultAccessPolicy -VaultName KEYVAULTNAME -PermissionsToSecrets get `
-ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd
此脚本的来源:ARM模板中的KeyVault引用问题
但这样做的问题是,权限被创建密钥库的工件定义覆盖,因此无法通过Power Shell设置。但我不能在蓝图中完成这一点。对于其他用户,在我们创建密钥库时,我已经设置了权限,这是有效的。但是像下面这样加上这个是行不通的。
{
"objectId": "abfa0a7c-a6b6-4736-8310-5855508787cd",
"tenantId": "[parameters('tenantId')]",
"permissions": {
"secrets": [
"get"
]
}
}
因此,现在仍然是一个谜语,如何创建一个密钥库,并在下一个工件中使用一个秘密。
我注意到您在powershellSet-AzurermKeyVaultAccessPolicy
和ARM模板中使用了相同的guidABFA0A7C-A6B6-4736-8310-5855508787CD
,这就是原因。
在Set-AzurermKeyVaultAccessPolicy
中,我们需要传递-ServicePrincipalName
的应用程序ID(即客户机ID)
,此处说明。但是在ARM模板中,我们需要传递服务主体的对象ID
(而不是应用程序注册),它不同于应用程序ID
。
要获取服务主体的对象ID
,您可以使用powershellget-AzurermadServicePrincipal
,在我的屏幕截图中,我使用新的az
命令,在您的示例中,直接使用get-AzurermadServicePrincipal
,ID
就是您需要的对象ID
。
注意:确保您登录到powershell的帐户有权获取AAD租户中的服务主体。
Get-AzureRmADServicePrincipal -ApplicationId abfa0a7c-a6b6-4736-8310-5855508787cd
然后,在ARM模板中,使用对象ID
而不是应用程序ID
,它会很好地工作。
{
"objectId": "<Object ID>",
"tenantId": "[parameters('tenantId')]",
"permissions": {
"secrets": [
"get"
]
}
}
我试图通过实现在应用程序中使用Spring security实现自定义身份验证。身份验证是成功的,并且用户也具有指定的角色,但我仍然总是得到访问被拒绝的页面。下面是我的代码。我是Spring保安的新手。请帮帮忙。提前致谢 原木
我正在尝试通过HTTPS连接一个Java Web API;但是,会引发异常: 我遵循了从keytool和SSL证书在线教程中学到的以下步骤: > 我将HTTPS URL复制到浏览器中,下载SSL证书并使用Internet Explorer将其安装到浏览器中。 将证书导出到我的计算机上的路径,证书被另存为 使用了KeyTool的导入选项。下面的命令执行时没有任何错误。 在命令提示符下提示输入密码,然
将证书导出到我的计算机上的路径,证书保存为 使用了keytool的导入选项。下面的命令执行没有任何错误。 在命令提示符处提示我输入密码,然后我输入密码进行身份验证。 然而,在该消息之后,显示了另一个异常: 最后,当我检查密钥库时,没有添加SSL证书,我的应用程序给出了与我之前尝试连接时相同的异常:
问题内容: 我正在尝试通过HTTPS连接Java Web API。但是,将引发异常: 我遵循了从在线keytool和SSL证书教程中学到的这些步骤: 我将HTTPS URL复制到浏览器中,下载了SSL证书,并使用Internet Explorer将其安装在浏览器中。 将证书导出到计算机上的路径,证书另存为 使用了keytool的导入选项。以下命令执行无任何错误。 在命令提示符下提示我输入密码,然后
问题内容: 在某种程度上,当我尝试通过命令行访问MySQL时,已经设法解决了该错误: 我尝试使用此HowTo重置密码,但没有任何运气。 我已经卸载了mysql completley并重新安装了,但是仍然需要输入密码。我不知道为什么会这样! 有人可以帮我获得默认安装的MySQL吗? 环境 Fedora Core 10,完全根访问权限,安装了Apache和PHP 感谢您的任何帮助!! 编辑 对于所有想
我是AWS Lambda的新手。我正在尝试从https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html.当用户将jpg上传到名为greetingsproject的S3 bucket时,会触发lambda函数。 错误:9a62ff86-3e24-491d-852e-DED2C2CF5D94 信息:获取对象时出错=拒绝访问:拒绝访