演習 - Java 開発者の観点から Java アプリケーションをセキュリティで保護する
このユニットでは、Azure Key Vault 内に保存されているシークレットを使用するように既存の Spring Boot アプリケーションを構成します。
あなたは、これらのシークレットを読み取るようにプロジェクトを構成する Java 開発者の役割を担います。
Java プロジェクトの構成
Key Vault 用の Azure Spring Boot スターターにより、Spring Boot 開発者向け Key Vault Java SDK の使用が自動化されます。
前のセクションでは、Azure CLI を使用して、AZURE_KEYVAULT_ENABLED
および AZURE_KEYVAULT_URI
という 2 つの環境変数を追加しました。
Spring Boot はこれらの環境変数を読み取り、Azure Key Vault に対して認証するためにそれらを使用します。このために裏では Key Vault 用の Java SDK を使用します。
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 インスタンスからそれらを取得するようになります。
Azure に Java アプリケーションを展開する
前のユニットと同じように、アプリケーションをデプロイするには、以下のように、まずそれを 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
お疲れさまです。これで Azure Key Vault を使用してシークレットを保存するゼロ トラスト Java アプリケーションの作成に成功しました。