演習 - 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 アプリケーションの作成に成功しました。