Power AutomateでAzure Key Vaultを活用しよう Part. 1 - コンテナーのアクセス ポリシー

# はじめに
Power AutomateでコネクタもといAPI活用によって、APIキーなど極秘情報の管理に苦労することが多くあります。
アクション **「変数を初期化する」** に入力しておくことも、果たしていいのだろうか・・・と不安に感じることもあります。

この課題を **Azure Key Vault** の活用で、その負担軽減に繋がると知ったので、
備忘録としてQiitaを残します。

# Azure Key Vaultとは
**Azureの主要な管理ソリューション**です。

|機能|詳細
|---|---
|**シークレットの管理**|Azure Key Vault を使用すると、トークン、パスワード、証明書、API キー、その他のシークレットを安全に格納し、それらへのアクセスを厳密に制御できます。
|**キー管理**|Azure Key Vault は、キー管理ソリューションとして使用できます。 Azure Key Vault により、データの暗号化に使用される暗号化キーの作成と制御が簡単になります。
|**証明書の管理**|Azure Key Vault では、Azure および内部の接続されているリソースで使用するためのパブリックおよびプライベートの Transport Layer Security/Secure Sockets Layer (TLS/SSL) 証明書を簡単にプロビジョニング、管理、デプロイできます。

https://learn.microsoft.com/ja-jp/azure/key-vault/general/

## Step
1. Azure Portalで[ Key Vault ]にアクセス
1. リソース「Key Vault」の作成
     - 命名はご自身で規則性をつけて管理することをお勧めします
1. タブ [アクセス構成]に移動
     - ここでは他のすべてを標準のままにし、「次へ」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/59d10d34-1ffc-ca1f-a418-da82aa9bea1d.png)

※👆Key Vaultのリソースです

アクセス許可モデルは2つ存在します。
 - Azure ロールベースのアクセス制御 (**推奨**)
 - コンテナーのアクセス ポリシー

## コンテナーのアクセス ポリシー
この記事で解説する[アクセス許可モデル](https://learn.microsoft.com/ja-jp/azure/key-vault/general/basic-concepts#authentication)は**コンテナーのアクセス ポリシー**です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/ee50c67d-7e1d-1ed4-a3b1-b9463e1fc38f.png)

https://learn.microsoft.com/ja-jp/azure/key-vault/general/basic-concepts#authentication

選択すると、自分のアクセスポリシーが存在します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/290fd3e8-0d81-8ff4-b1a9-6625b0a5c180.png)

こちらはAzureに登録された自身のアドレスの特権になります。

自分で**アクセス ポリシー**を設定する場合、
**アクセス ポリシー**にて[+ 作成] をクリックすると、新しいアクセス ポリシーが作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/085f221c-533c-efdf-282e-7c2145945111.png)

**[シークレットのアクセス許可]** > **[シークレットの管理操作]**
こちらの画面で登録したシークレットに許可する操作を定義できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/18dd4949-9269-ddb0-bafb-5bddacb42d0e.png)

[ 次へ ]をクリックすると[ プリンシパル ]の設定に移ります。

これは「**誰にアクセス権を与えるか?**」設定する画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/0800e31f-ceab-c9ce-4047-eaf2ebf9f47b.png)

検索して、`Azure Portal`に登録している自分のメールアドレスで定義をしてみます。

::: note info
アプリケーション (省略可能)の部分はスキップしました。
:::

https://learn.microsoft.com/ja-jp/azure/key-vault/general/basic-concepts

[ ネットワーク ]と[ タグ ]の部分はスキップして、リソースを作成します。

デプロイは数秒で完了します。
完了次第、**[リソースに移動]をクリックしましょう。**

## キーコンテナー
メニューの[オブジェクト] から[シークレット]を選択します。
[+ 生成/インポート]をクリックすると秘密情報を追加できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/762d7807-d800-4d6d-dfe6-ee2346bab098.png) 

アップロード オプションは
 - 手動
 - 証明書

の二種類。

*手動*で追加する画面は下記のとおりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/2b0dae87-ae44-142a-9502-e7a3574d228f.png)

- `名前`が*Key*
- `シークレット値`が*Value*

テスト用に
- *key* = "Hello"
- *value* = "Hello world!"

と設定した値を**Power Automate**で使ってみます。

## Power Automateで使用する
さて、ここから`Power Automate`に移ります。
まずは**Azure Key Vaultとの接続を作成します。**

Power Automateを開き、[ 接続 ]に移りましょう。

::: note warn
デフォルトではPower Automateの画面に[ 接続 ]は表示されていません。
:::

**詳細** > **接続**とクリックしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/23793ad1-4a62-8283-70c5-49634e61e6b1.png)

1. [ + 新しい接続 ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/c6da44ae-c35a-1959-4cf2-b15adbe0097a.png)
1. [ Azure Key Vault ]を選択 - コネクタの数は膨大なので検索で絞ったほうが速いです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/03b2db3f-f966-53c0-f012-a24eb62581dd.png)

### 接続方法
二種類の接続方法が存在します。

- Default Azure AD application for OAuth
- Service principal authentication

https://learn.microsoft.com/ja-jp/connectors/keyvault/

今回は(非推奨)ですが`Default Azure AD application for OAuth`の方法で接続を作成します。

#### Default Azure AD application for OAuth
1. Key Vaultの名前を入力する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/112aa8b1-9b03-458f-6c16-6f676918e1f5.png)
1. Azureのアカウントでサインイン

:::note warn
手早く済んでしまいますが、**非推奨**のようです
[Azure Key Vault](https://learn.microsoft.com/ja-jp/connectors/keyvault/#%E6%8E%A5%E7%B6%9A%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)
:::

https://learn.microsoft.com/ja-jp/connectors/keyvault/#%E6%8E%A5%E7%B6%9A%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B

### 3. 挙動を確認する
Power Automateのインスタント クラウド フローで挙動を確認してみます。
Azure Key Vaultコネクタから値を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/0a997d94-fd5f-6baf-e6c4-9926b6ba71dc.png)

👆先ほど登録したKey値の名前が選択肢として出現します。

**[ 作成 ]アクションに格納するフローにして実行すると・・・**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/d42861ed-9e88-9363-7ecc-a856e778bc9b.png)

**🎉上手くできました！**

### Advance
さらに右上の[...]から[ 設定 ]に移ってみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/4365e92a-9b9f-3d2e-a721-62c51e8664a7.png)

メニューに
- セキュリティで保護された入力
- セキュリティで保護された出力

と出てきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/3e3625d4-78c3-05ae-6854-1edf3df8cf5d.png)

- セキュリティで保護された入力
    - **名前(name)を伏せることができる**
- セキュリティで保護された出力
    - **値(key)を伏せることができる**

上記を両方とも**オン**に変更した場合、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/87a091f1-c8e5-c3a3-3b5a-b614b9e0175c.png)

機密情報が伏せられるようになりました！
**とーっても便利ですね！** 気に入りました！

しかし今回紹介したのは、非推奨の部分が多いので、
別の機会に「Azure ロールベースのアクセス制御 」について検証し、書き記したいと思います！