Logic AppsのワークフローからAzure Key Vaultのシークレット値を参照
Azure Logic Apps(ロジックアプリ)からAzure Key Vault(キーコンテナー)のシークレットを参照する方法の紹介です。
Azure Key Vaultのシークレットは、セキュアな情報を保存するためのAzureで提供されるサービスです。
アプリケーションで利用するデータベースのパスワードやAPIキーなどの機密情報を安全に格納することができます。
Logic AppsといったAzureサービスから参照して利用することができます。
Logic AppsからAzure Key Vaultのシークレットを参照するための設定手順をまとめています。
ワークフロー内で参照したシークレット値を非表示にする手順も紹介しています。
※本記事内ではAzure Logic Apps(ロジックアプリ)をLogic Appsとして表記しています。
※Azure Key Vaultのシークレットへのアクセス権管理はAzureロールベースのアクセス制御(RBAC)を利用します。
※Logic AppsからKey Vaultシークレットへのアクセスはシステム割り当てマネージドIDを利用します。
※画面表記に合わせて、Azure Key Vaultをキーコンテナーとして表記している箇所があります。
Azure Key Vaultのリソース作成からシークレット作成までの手順
Azure Key Vaultのシークレットとは
Azure Key Vaultのシークレットは、データベースのパスワードやAPIキーなどのセキュアな情報を保存するためのサービスです。
シークレット値を暗号化して保存します。
シークレットは必要なユーザーやアプリケーションだけにアクセス許可させるように制御できます。
シークレットの有効期限も設定できます。
診断設定を通じてシークレットへのアクセスログを取得することもできます。
Logic AppsなどのAzureサービスからAPIキーやDBのパスワードなどのシークレット情報を分離して管理することができます。
※今回はLogic AppsからマネージドIDを利用してシークレットへアクセスします
リソースの設定内容
Azure Key Vaultリソース作成時の設定値です。
コンテナーの保持期間は7日間ネットワークアクセスはすべてのネットワークを許可にしています。
※実環境での利用時には環境に合せてアクセス元の制限や保持期間を長くするようにします。
区分 | 項目 | 設定値 |
基本 | Key Vault名 | open-ai-api-key |
場所 | East US | |
価格レベル | 標準 | |
削除されたコンテナーを保持する期間 | 7日間 | |
消去保護 | 消去保護を無効にする | |
アクセスポリシー | アクセス制御 | Azure ロールベースのアクセス制御 |
ネットワーク | パブリックアクセスを有効にする | チェック有 |
許可するアクセス元 | すべてのネットワーク |
キーコンテナのシークレットへのアクセス権は個別に付与する必要があります。
シークレット作成に必要となる権限を操作するユーザーに割り当てます。
今回はキーコンテナーシークレット管理者を割り当てています。
権限付与対象 | 権限 | 権限付与リソース |
操作するユーザー | キーコンテナーシークレット管理者 | 対象のKey Vault |
シークレットにはAzure OpenAIのapi keyを登録しています。
シークレット名 | シークレット値 | その他設定値 |
open-ai-api-key | Azure OpenAIのapi key | デフォルト値を利用 |
リソース作成
公式サイトの手順を参照しながらAzure Key Vaultのリソースを作成します
クイック スタート:Azure portal を使用してキー コンテナーを作成する
アクセス制御(IAM)設定
Azure Key Vaultでシークレット作成する為には、個別に権限する付与必要があります。
リソース作成とは別にシークレットに対する権限を割り当てる必要があります。
Key Vault データ プレーン操作のための Azure の組み込みロール
Azureロールベースのアクセス制御(RBAC)を選択した場合、シークレットを作成するユーザーやマネージドIDにキーコンテナーシークレット管理者を割り当てます。
シークレットを作成
公式サイトを参考にシークレットを作成します。
クイック スタート:Azure portal を使用して Azure Key Vault との間でシークレットの設定と取得を行う
今回はシークレット値にはAzure OpenAIのAPIキーを設定しています。
シークレットを作成 | |
左側のメニューのオブジェクトでシークレットを選択します。 生成/インポートを選択します。 |
|
名前とシークレット値を設定します。 作成を選択します。 |
|
Azure OpenAIのAPIキーはリソース管理のKeys and Endpointで確認します。 |
Logic AppsからKey Vaultのシークレット値を参照
今回は事前に作成したLogic Appsを利用します。
Logic Appsの概要やリソース作成手順についてはこちらで紹介しています。
シークレットへのアクセス権を割り当て
Logic AppsからKey Vaultシークレットへのアクセス権が必要です。
アクセス権限割り当てにはシステム割り当て済みマネージドIDを利用しています。
キーコンテナーシークレットユーザーの権限を割り当てます。
ワークフローからシークレットを参照
Logic AppsにはAzure Key Vaultのコネクタが準備されています。
Azure Key Vaultのコネクタを使ってシークレットを参照します。
参照したシークレット値を利用
シークレットの値はvalueに該当します。
シークレット値を参照 | |
利用したい箇所にvalue(シークレットの値)を設定します。 ※画面はAzure OpenAIのAPIキーを利用する例です。 |
|
参照したシークレット値がワークフローの実行結果から見えてしまう
デフォルト設定のままだとワークフロー実行時に平文としてシークレット値が表示されます。
シークレット値が表示される | |
変数にvalue(シークレットの値)を設定してワークフローを実行します。 実行結果を確認するとシークレット値が平文でそのまま表示されています。 |
|
ワークフローの実行結果でシークレット値を表示しないように設定
シークレットの取得のアクションの設定で、セキュリティで保護された出力を利用します。
セキュリティで保護された出力をオンにすると、シークレットを非表示にできます。
シークレットを非表示 | |
シークレットの取得のアクションで設定を選択します。 セキュリティで保護された出力をオンに変更します。 |
|
ワークフローを実行して確認します。 セキュリティ構成のためコンテンツは表示されません。となっておりシークレット値が確認出来ないようになっています。 |
最後に
Azure Key Vaultのシークレットに関する操作手順を、Logic AppsのワークフローからAzure OpenAIのAPIキーを参照する場合を例に纏めました。
シークレット自体の値を教えることなく参照させることが出来る為セキュリティ的にも非常に良いと思います。
シークレットの管理を一元的に出来ますし、アクセス権の管理も細かく設定出来るので運用観点でも非常に良いと思いました。
今後も色々試してみたいと思います。
Azure Key Vaultを利用した証明書管理についてはこちらで紹介しています。
Logic Appsのワークフロー内のアクションでサブスクリプションIDを取得する方法についてはこちらで紹介しています。