แบบฝึกหัด - รักษาความปลอดภัยแอปพลิเคชัน Java จากมุมมองของผู้ดําเนินการด้าน IT
ในหน่วยนี้ คุณจะใช้ Azure CLI เพื่ออนุญาตให้แอปพลิเคชัน Java ของคุณเข้าถึงความลับของชุดเก็บคีย์ของ Azure
คุณเล่นบทบาทของผู้ให้บริการด้าน IT ที่จัดการความลับเหล่านั้นและอนุญาตให้เข้าถึง
จัดเก็บข้อมูลลับลงในชุดเก็บคีย์ของ Azure
ในแอปพลิเคชันของคุณ คุณมีข้อมูลลับสองข้อเพื่อจัดเก็บ:
-
${azureDatabaseName}คือชื่อของฐานข้อมูล PostgreSQL ที่กําหนดค่าไว้ก่อนหน้านี้ในตัวแปรสภาพแวดล้อมAZ_DATABASE_NAMEพิมพ์echo $AZ_DATABASE_NAMEเพื่อดู -
${azureDatabaseUsername}คือชื่อของชื่อผู้ใช้ฐานข้อมูลที่กําหนดค่าไว้ก่อนหน้านี้ในตัวแปรสภาพแวดล้อมAZ_DATABASE_USERNAMEพิมพ์echo $AZ_DATABASE_USERNAMEเพื่อดู -
${azureDatabasePassword}คือชื่อของรหัสผ่านฐานข้อมูลที่กําหนดค่าไว้ก่อนหน้านี้ในตัวแปรสภาพแวดล้อมAZ_DATABASE_PASSWORDพิมพ์echo $AZ_DATABASE_PASSWORDเพื่อดู
ลองสร้างอินสแตนซ์ Azure Key Vault และจัดเก็บความลับเหล่านั้นไว้ในอินสแตนซ์:
AZ_KEY_VAULT_NAME=kv-${AZ_RESOURCE_GROUP}
az keyvault create \
--name $AZ_KEY_VAULT_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
az keyvault secret set \
--vault-name $AZ_KEY_VAULT_NAME \
--name azureDatabaseName \
--value ${AZ_DATABASE_NAME}
az keyvault secret set \
--vault-name $AZ_KEY_VAULT_NAME \
--name azureDatabaseUsername \
--value ${AZ_DATABASE_USERNAME}
az keyvault secret set \
--vault-name $AZ_KEY_VAULT_NAME \
--name azureDatabasePassword \
--value ${AZ_DATABASE_PASSWORD}
อนุญาตให้แอปพลิเคชันของคุณเข้าถึง Azure Key Vault
หากต้องการเข้าถึง Azure Key Vault แอปพลิเคชัน Spring Boot ของคุณต้องมีการกําหนดข้อมูลประจําตัว Azure ก่อน
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
นอกจากนี้คุณต้องกําหนดค่าแอปพลิเคชัน Spring Boot ของคุณด้วยตัวแปรสภาพแวดล้อมสองตัว ตัวแปรแรกคือการเปิดใช้งาน Azure Key Vault ตัวแปรที่สองคือการให้ URL กับอินสแตนซ์ Azure Key Vault ของคุณ คําสั่งนี้อาจใช้เวลาหลายนาทีในการใช้งาน
az spring app update \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--env \
AZURE_KEYVAULT_ENABLED=true \
AZURE_KEYVAULT_URI=https://$AZ_KEY_VAULT_NAME.vault.azure.net/
จากนั้น คุณจําเป็นต้องให้สิทธิ์การเข้าถึงแอปพลิเคชันของคุณในอินสแตนซ์ Azure Key Vault
AZ_SPRING_CLOUD_PRINCIPAL_ID=$(az spring app identity show --resource-group $AZ_RESOURCE_GROUP --service $AZ_SPRING_CLOUD --name application | jq --raw-output '.principalId')
az keyvault set-policy \
--name $AZ_KEY_VAULT_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--object-id $AZ_SPRING_CLOUD_PRINCIPAL_ID \
--secret-permissions get list
แอปพลิเคชันของคุณควรมีสิทธิ์ในการเข้าถึงข้อมูลลับที่จัดเก็บไว้ใน Azure Key Vault