Logic AppsからKey Vaultのシークレットを参照
キーコンテナー(Key Vault)のシークレットはセキュアな情報を保存するためのAzureで提供されるサービスです。
アプリケーショで利用するデータベースのパスワードやAPI キーなどの機密情報を安全に格納する事が出来ます。
ロジックアプリ(Logic Apps)と言ったAzureサービスから参照させて利用する事が出来ます。
本記事ではロジックアプリ(Logic Apps)からキーコンテナー(Key Vault)のシークレットを参照する手順を纏めています。
参照するシークレットを見せないようにする手順も纏めています。
※キーコンテナー(Key Vault)のシークレットへのアクセス権管理はAzure ロールベースのアクセス制御(RBAC)を利用します。
※ロジックアプリ(Logic Apps)からキーコンテナー(Key Vault)シークレットへのアクセスはシステム割り当てマネージドIDを利用します。
キーコンテナー(Key Vault)のリソース作成からシークレット作成
キーコンテナー(Key Vault)のシークレットとは
Azure キーコンテナー(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ロールベースのアクセス制御(RBAC)を選択した場合、キーコンテナー(Azure Key Vault)でシークレット作成する為には権限付与する必要があります。
Key Vault データ プレーン操作のための Azure の組み込みロール
シークレットを作成するユーザーにキーコンテナーシークレット管理者を割り当てます。
シークレットを作成
公式サイトを参考にシークレットを作成します。
クイック スタート:Azure portal を使用して Azure Key Vault との間でシークレットの設定と取得を行う
今回はシークレット値にはAzure OpenAIのAPIキーを設定しています。
シークレットを作成 | |
左側のメニューのオブジェクトでシークレットを選択します。 生成/インポートを選択します。 |
![]() |
名前とシークレット値を設定します。 作成を選択します。 |
![]() |
Azure OpenAIのAPIキーはリソース管理のKeys and Endpointで確認します。 | ![]() |
ロジックアプリ(Logic Apps)からキーコンテナー(Key Vault)のシークレット値を参照
今回は事前に作成したロジックアプリ(Logic Apps)を利用します。
シークレットへのアクセス権を割り当て
ロジックアプリ(Logic Apps)からキーコンテナー(Key Vault)シークレットへのアクセス権が必要です。
アクセス権限割り当てにはシステム割り当て済みマネージドIDを利用しています。
キーコンテナーシークレットユーザーの権限を割り当てます。
ワークフローからシークレットを参照
ロジックアプリ(Logic Apps)にはAzure Key Vaultのコネクタが準備されています。
Azure Key Vaultのコネクタを使ってシークレットを参照します。
参照したシークレット値を利用
参照したシークレット値はvalueとして参照します。
シークレット値を参照 | |
利用したい箇所にvalue(シークレットの値)を設定します。 ※画面はAzure OpenAIのAPIキーを利用する例です。 |
![]() |
![]() |
シークレット値がそのまま見えてしまう
デフォルト設定のままだとワークフロー実行時に平文としてシークレット値が表示されます。
シークレット値が表示される | |
変数にvalue(シークレットの値)を設定してワークフローを実行します。 実行結果を確認するとシークレット値が平文でそのまま表示されています。 |
![]() |
![]() |
ワークフローでシークレット値が表示されないようにする
シークレットの取得のアクションにあるセキュリティで保護された出力を利用する事でシークレットを非表示にできます。
height: 10px;
シークレットを非表示 | |
シークレットの取得のアクションで設定を選択します。 セキュリティで保護された出力をオンに変更します。 |
![]() |
![]() |
|
ワークフローを実行して確認します。 セキュリティ構成のためコンテンツは表示されません。となっておりシークレット値が確認出来ないようになっています。 |
![]() |
最後に
キーコンテナー(Key Vault)のシークレットに関する操作手順を、ロジックアプリ(Logic Apps)のワークフローからAzure OpenAIのAPIキーを参照する場合を例に纏めました。
シークレット自体の値を教えることなく参照させることが出来る為セキュリティ的にも非常に良いと思います。
シークレットの管理を一元的に出来ますし、アクセス権の管理も細かく設定出来るので運用観点でも非常に良いと思いました。
今後も色々試してみたいと思います。
キーコンテナー(Key Vault)を利用した証明書管理についてはこちらに纏めています。