练习 - 从 Java 开发人员的角度保护 Java 应用程序
在此单元中,你将配置现有的 Spring Boot 应用程序,以使用在 Azure Key Vault 中存储的机密。
你将扮演 Java 开发人员的角色,该角色将配置其项目以读取这些机密。
配置 Java 项目
适用于 Key Vault 的 Azure Spring Boot 入门版会为 Spring Boot 开发人员自动执行 Key Vault Java SDK 的使用。
在上一部分中,我们使用 Azure CLI 添加了两个环境变量:AZURE_KEYVAULT_ENABLED 和 AZURE_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 来存储机密。