Azure

Azure Key Vaultを作成しKey Vaultのシークレットを取得してみた(ソースコード編)

今回も引き続き、Key Vaultを作成しKey Vaultのシークレットを取得する処理の実装について述べる。ここでは、具体的なサンプルプログラムのソースコードを共有する。

前提条件

下記記事のKeyVaultの作成が完了していること。

Azure Key Vaultを作成しKey Vaultのシークレットを取得してみた(ソースコード以外編)Azure Key Vaultを利用すると、パスワード等の機密情報へのアクセスをAzure Portal上のみに制限することができる。今...

作成したサンプルプログラム(App Service側)の内容

作成したサンプルプログラム(App Service側)の構成は以下の通り。
サンプルプログラムの構成_AppService
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

pom.xmlの内容は以下の通りで、Key Vaultのライブラリの設定を追加している。

また、application.propertiesの内容は以下の通りで、サービスプリンシパルを利用してKey Vaultにアクセスするための設定を追加している。

なお、上記設定のkeyVaultClientId、keyVaultTenantId、keyVaultClientKey、keyVaultUriは、以下のサービスプリンシパル作成時のコマンド実行時に出力されたappId、tenant、password、nameの値を指定している。
サービスプリンシパルの作成

また、keyVaultSecretKeyは、以下の画面のシークレットのキー値を指定している。
シークレットのキー値



コントローラクラスの内容は以下の通りで、後述するAzure Functions側のgetKeySecret関数を呼び出す処理と、KeyVaultからシークレットを取得する処理を追加している。

また、Azure Functions側のgetKeySecret関数を呼び出した結果を格納するクラスは、以下の通り。

さらに、コンフィグクラスの内容は以下の通りで、コントローラクラスで呼び出すBean定義を行っている。

また、HTMLファイルの内容は以下の通りで、取得したシークレットの値を表示するようにしている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/azure-key-vault-2/demoAzureApp



作成したサンプルプログラム(Azure Functions側)の内容

作成したサンプルプログラム(Azure Functions側)の構成は以下の通り。
サンプルプログラムの構成_Function
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

pom.xmlの内容は以下の通りで、App Service側と同様に、Key Vaultのライブラリの設定を追加している。

application.propertiesの内容は以下の通りで、App Service側と同様に、サービスプリンシパルを利用してKey Vaultにアクセスするための設定を追加している。



サービスクラスの内容は以下の通りで、App Service側と同様に、KeyVaultからシークレットを取得する処理を追加している。

ハンドラークラスの内容は以下の通りで、Azure App Serviceのコントローラクラスから呼ばれるgetKeySecret関数である。

また、Azure Functionsのメインクラスは以下の通りで、前述のサービスクラスを呼び出していて、先ほどのハンドラークラスのhandleRequestメソッドで呼び出される。

さらに、Azure FunctionsのメインクラスのgetKeySecretメソッドの引数・戻り値は以下のクラスで定義している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/azure/tree/master/azure-key-vault-2/demoAzureFunc

要点まとめ

  • プログラム上でKeyVaultのシークレットを取得するには、pom.xmlにKey Vaultにアクセスするためのライブラリを追加し、application.propertiesにサービスプリンシパルの設定値を追加し、KeyVaultClientクラスを使ってシークレットの取得を行えばよい。