Udemy 新コース: 作って学ぶAI Builder!

Azure Key Vault の作成方法とPower Automate での共有方法

Azure のサービスなどと接続するために、キーの値を厳重に管理したいことがあるかと思います。

その際に便利な手法として、Azure Key Vault があります。

セキュリティグループの作成

Microsoft Entra ID にて、既存である場合はスキップ可能です。

アクセスポリシーの設定

Microsoft Entra ID にて、Key Vault に対するアクセスポリシーを設定します。

Power Automate クラウドフローの作成

クラウドフローでKey Vault にアクセスします。セキュリティの構成も行います。

Power Automate でのフローの共有

作成したフローを実行専用のユーザーに共有します。同時に、Key vault 名を伝えます。伝えないで実行する場合はソリューションフローを利用します。

エンドユーザーが接続を作成しフローを実行

共有を受けたエンドユーザーがKey vault への接続を行い、フローを利用します。シークレットの情報は閲覧せず実行することができます。

Microsoft Entra ID にアクセスします。グループを作成します。

グループを作成します。

Key Vault

Key Vault の作成

次へ移ります。Azure ロールベースのアクセス制御 (推奨)となっていることを確認します。

今回は、すべてのネットワークとします。

もしVNET委任を設定する場合はこちらでVNET委任が設定されている仮想ネットワークを選択します。

この内容で作成します。

デプロイが完了しました。Key Vault のリソースに移動します。

アクセス制御

アクセス制御からロール割当の追加を行います。

ここで利用できるロールは以下のとおりです。

ロール説明
Key Vault Administratorキー コンテナーとその内部にあるすべてのオブジェクト (証明書、キー、シークレットを含む) に対して、すべてのデータ プレーン操作を実行します。 キー コンテナー リソースの管理やロール割り当ての管理はできません。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault Readerキー コンテナーとその証明書、キー、シークレットのメタデータを読み取ります。 シークレット コンテンツやキー マテリアルなどの機密値を読み取ることはできません。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault の消去演算子論理的に削除されたコンテナーの完全な削除を許可します。
Key Vault Certificates Officerキー コンテナーの証明書に対して、シークレットとキーの部分の読み取りと、アクセス許可の管理を除く、すべての操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault Certificate Userシークレットおよびキー部分を含む証明書の内容全体を読み取ります。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault Crypto Officerキーコンテナーのキーに対して、アクセス許可の管理を除く任意の操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault Crypto Service Encryption Userキーのメタデータを読み取り、wrap および unwrap 操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault Crypto Userキーを使用した暗号化操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault Crypto Service Release UserAzure Confidential Computing 環境およびこれと同等な環境用のリリース キー。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault Secrets Officerキーコンテナーのシークレットに対して、アクセス許可の管理を除く任意の操作を実行します。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。
Key Vault Secrets User秘密キーを使用し、証明書のシークレット部分を含むシークレットの内容を読み取ります。 「Azure ロールベースのアクセス制御」アクセス許可モデルを使用するキー コンテナーでのみ機能します。

今回はシークレットの読み取りだけ許可するため、Key Vault Secrets User (キー コンテナー シークレット ユーザー) を利用します。

Azure RBAC を使用して Azure キー コンテナーへのアクセス許可をアプリケーションに付与する | Microsoft Learn

Azure Key Vault を使用するためのベスト プラクティス | Microsoft Learn

シークレット管理のベスト プラクティス – Azure Key Vault | Microsoft Learn

キーコンテナーを作成する自分にロールを割当します。

メンバーはKVUser に設定します。

シークレットの作成

シークレットを追加します。

KeyNameKeyValueを名前と設定します。

実際にはこちらに保護したいキー情報を格納します。たとえば、Azure OpenAI のキー情報などです。

権限がないとエラーになります。例えばグローバル管理者であったとしても作成することはできません。

例えばキーコンテナー管理者(Key Vault Administrator) のロールを割り当てる必要があります。

作成権限があると作成することができます。

これでAzure の設定は完了です。

Power Automate

フローからKey Vault を取得する

Power Automate に移ります。シークレットを取得するフローを作成します。

Key Vault の名前には、キーコンテナー名を入力します。

アクセス許可がない場合やキーコンテナ名 (Key Vault 名) が間違っていると以下のようにエラーとなります。

シークレットの値を取得することができました。

利用者にシークレットの値を見せたくないときは、以下のように設定します。

これを実行のみのユーザーに共有します。

作成した(既存の)セキュリティグループを利用してフローを共有することができます。

共有したセキュリティグループに所属する別のユーザーでフローを開いてみます。

実行時にKey Vault のサインインを求められます。

認証の種類はOAuth、Key Vault の名前を入力してサインインします。

Key Vault 名をユーザーに知らせたくない場合

ユーザーにKey Vault 名は事前に知らせておく必要があります。もしユーザーに知らせたくない場合は、こちらの記事で別の手段を紹介しています。

認証することができました。このまま続行します。

フローを実行します。

フロー所有者のPower Automate ポータルで確認すると、フローが問題なく実行されていることがわかります。

出力結果はセキュリティの構成により、設定を変更しない限り所有者でも見ることはできません。

利用者はフローを実行はできますが編集をすることができません。そのため、シークレットの値をフロー内で利用することはできても見ることができませんし、シークレットの値を見られるように設定を変更することができません。

また、セキュリティグループからユーザーが削除された場合も権限を失います。

このように管理することで、安全にユーザーにシークレットを利用させることができます。

Key Vault 名をいちいちユーザーに知らせたくない場合は、ソリューションとDataverse アクションを用いて実施することができます。こちらもご参考ください。

閉域網接続する場合にはこちらが参考になります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index