承接上文,上邊主要介紹了Azure Key Vault中secret和ARM Template的結合,使用reference引用key vault中的值,下邊來看下ARM Template中的證書文件如何與key vault集成,linux一般還會使用證書登錄比較安全一些,所以接下來就來看下具體怎麼操作
一般在登錄Linux的時候,公鑰會保存在linux vm裏,我們需要的就是使用私鑰進行匹配,通過身份驗證就可以登陸了,所以我們需要做的其實就是在部署過程中把公鑰部署到VM中,ARM Template本身就支持這種做法,而key vault也可以支持管理證書,所以完全可以像引用paasword一樣,引用證書的public key
首先需要生成一對祕鑰,用ssh-keygen即可
公鑰和私鑰都已經生成
接下來把公鑰裏的內容上傳到key vault
$publickey=key data
$Secret = ConvertTo-SecureString -String $publickey -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName 'AzureKeyVault' -Name 'secretname' -SecretValue $Secret
之後就可以編輯parameter文件了,還是一樣需要引用reference的內容,只不過換成了證書而不是secret
"parameters": {
"keydata": {
"reference": {
"keyVault": {
"id": "/subscriptions/xxxxxx/resourceGroups/xxxxx/providers/Microsoft.KeyVault/vaults/mxykey"
},
"secretName": "keydata"
}
},
"dnsLabelPrefix": {
"value": "mxypre"
}
}
在deploy文件中引用這個keydata的parameter
"publicKeys":[
{
"path":"[concat('/home/',parameters('adminUserName'),'/.ssh/authorized_keys')]",
"keyData":"[parameters('keydata')]"
}
]
接下來正常進行部署即可
使用私鑰進行驗證時,可以正常連接