天天看點

ARM Template 結合key vault存儲機密資訊 (一)

前兩篇講到了terraform,作為跨平台的IAC工具絕對是沒話說的,很非常好用,今天再講回Azure原生的ARM Template,ARM Template好處就是作為微軟的親兒子,相容性啥的絕對沒話說,但是JSON對于非開發者來說實在用着别扭,繁瑣的{}[]這些能搞懵不少人。兩者之間各有優劣,用哪種方式都不奇怪,是以今天也來談一談ARM Template裡的一些小技巧,首先來談下ARM Template和Key Valut的結合

在部署Azure資源時,經常會涉及到一些機密資訊的問題,比如在建立VM時候要指定password或者key值,在建立資料庫的時候也要指定賬号密碼,如果作為明文輸入的話肯定是不行的,但是指定為securestring又顯得比較麻煩,每次都要手動輸入,因為這東西不接受預設值,是以兩者都不友善,比較理想的方式其實是結合Azure Key Vault來做

Key Vault是Azure中專門用來管理一些機密資訊的服務,像一些加密的字元串,證書之類的都可以用key vault來管理,相當于就是個保險櫃一樣,可以把敏感的東西鎖在裡邊,需要的時候再取出來,詳細的介紹可以參考官方的文檔

https://docs.microsoft.com/zh-cn/azure/key-vault/general/overview?WT.mc_id=AZ-MVP-5001235

下邊來示範下具體怎麼來用,以一個例子為背景

我們在建立Windows VM的時候需要指定password,而這個password就可以首先先存儲在key vault中,然後在ARM Template裡引用這個值,這樣既保護了密碼的安全,又不需要手動指定

下邊看下具體怎麼實作,首先從建立key vault開始,這一步沒啥特殊的,指定好key vault的名稱和位置即可

ARM Template 結合key vault存儲機密資訊 (一)

下一步一定要注意,這裡必須勾選用于模闆部署的Azure資料總管

ARM Template 結合key vault存儲機密資訊 (一)

接下來建立一個secret作為密碼

輸入這個secret的名稱以及對應的值

ARM Template 結合key vault存儲機密資訊 (一)

這樣,這個password就在key vault裡存在了,接下來就可以在ARM Template裡引用了

首先我們可以把password定義成一個parameter,這樣這個值就是一個可變得值了,如果需要不同的password的話,也可以在部署的時候重新進行指派

接下來可以編輯parameter file,在這裡設定一個default值來引用剛才建立的secret

其他ARM Template裡的内容和正常部署VM都是一樣的,部署時指定parameterfile和templatefile即可

New-AzResourceGroupDeployment -ResourceGroupName 'garrickmeng' -TemplateFile "D:\Tech\Cloud\Azure\ARM Template\VM\101-vm-simple-linux - key valut integration\azuredeploy.json" -TemplateParameterFile "D:\Tech\Cloud\Azure\ARM Template\VM\101-vm-simple-linux - key valut integration\azuredeploy.parameters.json"

使用paasword也可以正常進行SSH連接配接