แบบฝึกหัด - รักษาความปลอดภัยแอปพลิเคชัน 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