向Zabbix登录API提供Azure密钥保险库密码
如何将密码传递给Zabbix API json登录脚本,因为密码作为机密保存在Azure密钥库中向Zabbix登录API提供Azure密钥保险库密码,azure,zabbix,azure-keyvault,Azure,Zabbix,Azure Keyvault,如何将密码传递给Zabbix API json登录脚本,因为密码作为机密保存在Azure密钥库中 $json_login = ' { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "ZabbixUser", "passwo
$json_login = '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "ZabbixUser",
"password": "**Need to getfrom Azure Key Vault secret**"
},
"id": 1,
"auth": null
}'
$output = Invoke-RestMethod -ContentType application/json -Method Post -Uri $uri -Body $json_login
Write-Output $output
使用以下内容是不安全的,因为它以纯文本形式提供:
$Password = (Get-AzKeyVaultSecret -VaultName "MyVault" -Name "MySecretName").SecretValueText
从powershell调用Zabbix的登录名
谢谢大家! 您可以修改请求正文$json\u登录的格式,如下所示,在运行$Password=Get-AzKeyVaultSecret-VaultName MyVault-Name MySecretName.SecretValueText后,将$Password直接传递给正文,这样就不会出现纯文本,这是安全的,因为只有在您的keyvault的访问策略中具有secret权限的人才能从get-AzKeyVault secret获取权限
有关用法的更多详细信息,请参阅本文中的示例2。Hmm。。。我担心$password变量result会有一个纯文本,而不是通常从PSCredentials获取的System.Security.SecureString。@Mund如果在请求正文中使用SecureString,我想它将不起作用,从,密码应该是字符串。我认为我的解决方案是安全的,秘密值不会在文本中公开,如果某人在访问策略中没有权限,他无论如何也不会获得秘密。该脚本只适用于有权限的人。
$json_login = @{
jsonrpc = "2.0"
method = "user.login"
params = @{
user = "ZabbixUser"
password= $Password
}
id = "1"
auth= "null"
}