承接上文,上边主要介绍了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即可

图片9.png


公钥和私钥都已经生成

图片10.png



接下来把公钥里的内容上传到key vault

$publickey=key data

$Secret = ConvertTo-SecureString -String $publickey -AsPlainText -Force

Set-AzKeyVaultSecret -VaultName 'AzureKeyVault' -Name 'secretname' -SecretValue $Secret

微信截图_20201231132406.png


之后就可以编辑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')]"
                }
 
              ]



接下来正常进行部署即可

图片12.png


使用私钥进行验证时,可以正常连接

图片13.png

图片14.png