こんばんは。この記事では、App ServiceやFunctionsからKey VaultにマネージドIDを利用して接続する方法について整理しておきます。
例えばApp ServiceやFunctionsからデータベースなどに接続する処理がある場合、データベースの接続情報をアプリケーションコード上に持っておくのはセキュリティの観点からもメンテナビリティの観点からも非常に微妙です。
Azureでは、こういった接続情報などセキュリティ要件の高い情報は、Key Vaultに格納することが推奨されています。こうすることで、接続情報はKey Vaultで守られ、App ServiceやFunctionsはKey Vaultからセキュアにこれらの情報を取得して、データベース等への接続を実現できます。
今回は、この時に必要になるKey Vaultへの接続を、マネージドIDを使って実現する手順について整理しておこうと思います。
Contents
マネージドIDとはそもそも何か?
これについては、以前こちらにまとめたことがありますのでこちらをご参照ください。
接続構築の流れ
マネージドIDを使った接続の大きな流れとしては、
・アプリ側でマネージドIDを使えるように設定変更を行い、
・アプリケーションコード上に、マネージドIDを使って接続するコードを記述する
となります。それぞれ順番に手順を確認していきます。
App Service/FunctionsでマネージドIDを有効にする
以下の手順は、こちらの公式ドキュメントでも解説されています。
https://docs.microsoft.com/ja-jp/azure/app-service/overview-managed-identity?tabs=dotnet
最初に、App Service/Functions (以下、App Service)でマネージドIDを取得する必要があります。
これは「ID」ブレードから設定可能で、既定ではオフになっています。
これを「オン」に変えて保存するだけ。オブジェクトIDというのがマネージドIDのことです。
Key Vaultで対象マネージドIDからのアクセスを許可する
次に、Key Vault側の設定です。先ほど有効化したマネージドIDでアクセスされることを許可する必要があります。
Key Vaultの「アクセスポリシー」ブレードから、「アクセスポリシーの追加」を選んでポリシーを新規追加します。アプリに与える権限は要件に応じて選んでください。
これで、前準備が整いました。次は、アプリケーションコードを書いていきます。
アプリケーションコードを書く
今回は、Visual Studio+.NET Coreを利用して書いてみようと思います。他の言語であっても、コードのお作法は違えど、基本的には以下のようにAzureのSDKを利用して同様に書くことができます。