前面幾篇幾乎都是介紹一些部署相關的東西,那今天開始會介紹一些安全性的部分,比如說:防止DDOS、安全性、Gateway...等等的服務,因為只要一些金鑰被有心人士偷走的話,通常都會造成很大量損失,為了避免這些損失,我們也必須把安全性做好,今天介紹的Key Vault跟保護私密資訊比較有關係,比如上一篇Power BI Embedded裡面把自己的帳號密碼嵌入在程式裡面,只要不小心把這個程式碼Git上去,或者是外流的話,那就很容易被竊取到資訊!!
準備
首先,先用Azure CLI登入
az login
建立資源群組跟Key Vault
az group create --name "jesper-rg" -l "EastUS"
az keyvault create --name "jesper-key-vault" -g "jesper-rg"
再來將一個你要藏的安全資訊新增至Key Vault
az keyvault secret set --vault-name "jesper-key-vault" --name "mySecret" --value "get important secret"
再來我們先建立一台VM
az vm create \
--resource-group jesper-rg \
--name jesper-vm \
--image UbuntuLTS \
--admin-username jesper \
--generate-ssh-keys
將身份識別指派給VM
az vm identity assign --name "jesper-vm" --resource-group "jesper-rg"
對VM指派權限,systemAssignedIdentity填入將身份識別指派給VM回傳的systemAssignedIdentity
az keyvault set-policy --name "jesper-key-vault" --object-id "{systemAssignedIdentity}" --secret-permissions get list
登入VM,PublicIpAddress在建立VM時會回傳
ssh jesper@<PublicIpAddress>
先建立Key
ssh-keygen -m PEM -t rsa -b 4096
取得Key的公鑰
cat ~/.ssh/id_rsa.pub
到VM重設密碼,貼到SSH 公開金鑰即可
更新apt
sudo apt-get update
安裝pip3
sudo apt install python3-pip
在VM安裝Python依賴
pip3 install azure-keyvault-secrets
pip3 install azure.identity
建立Python程式碼
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
keyVaultName = "jesper-key-vault"
KVUri = f"https://{keyVaultName}.vault.azure.net"
secretName = "mySecret"
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
retrieved_secret = client.get_secret(secretName)
print(f"The value of secret '{secretName}' in '{keyVaultName}' is: '{retrieved_secret.value}'")
執行Python程式碼
python3 sample.py
The value of secret 'mySecret' in 'jesper-key-vault' is: 'get important secret'
透過以上這些步驟就可以從應用程式去取得一些機密資訊了! 所以看得出來是透過授權某一台電腦,然後可以讓某台電腦獲得Credential,藉此拿到一些安全性的資訊,這樣的方法好像也不錯,不過那電腦也被駭了那怎辦呢XD,不過這確實是一個可以保護自己安全資訊的好方法,本篇介紹就到這邊,下一篇會繼續跟大家介紹Key Vault With Azure Kubernetes Service