연습 - IT 운영자 관점에서 Java 애플리케이션 보호

완료됨

이 단원에서는 Azure CLI를 사용하여 Java 애플리케이션에 Azure Key Vault 비밀에 대한 액세스 권한을 부여합니다.

여러분에게는 이러한 비밀을 관리하고 액세스 권한을 부여하는 IT 운영자의 역할이 있습니다.

Azure Key Vault에 비밀 저장

애플리케이션에 다음 두 개의 비밀을 저장했습니다.

  • ${azureDatabaseName}AZ_DATABASE_NAME 환경 변수에서 이전에 구성한 PostgreSQL 데이터베이스의 이름입니다. 확인하려면 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 ID를 할당해야 합니다.

az spring-cloud app identity assign \
   --resource-group $AZ_RESOURCE_GROUP \
   --service $AZ_SPRING_CLOUD \
   --name application

또한 두 개의 환경 변수를 사용하여 Spring Boot 애플리케이션을 구성해야 합니다. 첫 번째 변수는 Azure Key Vault를 사용하도록 설정합니다. 두 번째 변수는 Azure Key Vault 인스턴스에 URL을 제공합니다.

az spring-cloud 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-cloud 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에 저장된 비밀에 액세스할 수 있는 권한이 있어야 합니다.