练习 - 从 Java 开发人员的角度保护 Java 应用程序

已完成

在此单元中,你将配置现有的 Spring Boot 应用程序,以使用在 Azure Key Vault 中存储的机密。

你将扮演 Java 开发人员的角色,该角色将配置其项目以读取这些机密。

配置 Java 项目

适用于 Key Vault 的 Azure Spring Boot 入门版会为 Spring Boot 开发人员自动执行 Key Vault Java SDK 的使用。

在上一部分中,我们使用 Azure CLI 添加了两个环境变量:AZURE_KEYVAULT_ENABLEDAZURE_KEYVAULT_URI。 Spring Boot 读取这些环境变量,并将其用于在 Java SDK for Key Vault 下向 Azure Key Vault 进行身份验证。

如需添加对适用于 Key Vault 的 Azure Spring Boot 入门版的支持,请在应用程序的 pom.xml 文件中添加以下依赖项:

<dependency>
  <groupId>com.azure.spring</groupId>
  <artifactId>azure-spring-boot-starter-keyvault-secrets</artifactId>
</dependency>

创建 Java 项目时,我们将数据库名称和密码硬编码到 src/main/resources/application.properties 文件中。 请务必还原到此版本,此版本使用由 Azure Key Vault 提供的变量:

logging.level.org.springframework.jdbc.core=DEBUG

spring.datasource.url=jdbc:postgresql://${azureDatabaseName}.postgres.database.azure.com:5432/demo
spring.datasource.username=${azureDatabaseUsername}@${azureDatabaseName}
spring.datasource.password=${azureDatabasePassword}

spring.sql.init.mode=always

进行此更改后,应用程序源代码不包含任何机密,并且会从上一部分中我们配置的 Azure Key Vault 实例获取机密。

将 Java 应用程序部署到 Azure

正如上一单元所述,若要部署应用程序,首先需要将其打包为 Jar 文件:

./mvnw clean package

然后使用 Azure CLI 进行部署。 此命令可能需要几分钟才能完成。

az spring app deploy \
   --resource-group $AZ_RESOURCE_GROUP \
   --service $AZ_SPRING_CLOUD \
   --name application \
   --artifact-path target/*.jar

如果遇到故障,可以通过键入以下命令来查看应用程序日志:

az spring app logs \
   --resource-group $AZ_RESOURCE_GROUP \
   --service $AZ_SPRING_CLOUD \
   --name application

应用程序现可在云中使用,你可以使用 cURL 命令访问其数据:

curl https://$AZ_SPRING_CLOUD-application.azuremicroservices.io

祝贺你,你成功创建了一个零信任 Java 应用程序,该应用程序使用 Azure Key Vault 来存储机密。