iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 15
0
Microsoft Azure

Azure 的奇幻之旅系列 第 15

Azure 系列文(15) - Key Vault 保護你的安全資訊

前面幾篇幾乎都是介紹一些部署相關的東西,那今天開始會介紹一些安全性的部分,比如說:防止DDOS、安全性、Gateway...等等的服務,因為只要一些金鑰被有心人士偷走的話,通常都會造成很大量損失,為了避免這些損失,我們也必須把安全性做好,今天介紹的Key Vault跟保護私密資訊比較有關係,比如上一篇Power BI Embedded裡面把自己的帳號密碼嵌入在程式裡面,只要不小心把這個程式碼Git上去,或者是外流的話,那就很容易被竊取到資訊!!

準備

  • Azure 帳號
  • VM
  • Azure CLI

建立Key Vault

首先,先用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

再來我們先建立一台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的密碼,可以跟我一起做這個步驟,否則可以跳過

先建立Key

ssh-keygen -m PEM -t rsa -b 4096

取得Key的公鑰

cat ~/.ssh/id_rsa.pub

到VM重設密碼,貼到SSH 公開金鑰即可
https://ithelp.ithome.com.tw/upload/images/20200924/20127994iY1sf5Aafq.png

執行應用程式

更新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


上一篇
Azure 系列文(14) - Power BI Embedded 豐富你的網站 (下)
下一篇
Azure 系列文(16) - Key Vault 保護你的安全資訊 - (Kubernetes - 服務主體)
系列文
Azure 的奇幻之旅30

尚未有邦友留言

立即登入留言