2
2

More than 3 years have passed since last update.

Logic Apps Tips - Azure Key Vaultを使う②

Last updated at Posted at 2020-08-25

概要

前回に続いて、Logic AppでAzure Key Vaultを使います。
今回は、シークレットをLogic Appから更新する手順です。

経緯

当社で使用している電子ロック「Akerun」のAPIは、
認証に使用するトークンには有効期限があります。
⇒いや、たいていそういうAPIには有効期限があるんですが。

トークンと一緒にリフレッシュトークンが発行されて、
トークンが失効したら、リフレッシュトークンを使用して再発行するんですが・・・
それらもLogic Appで自動化しようと思ったんですね。

トークンもリフレッシュトークンもKey Vaultのシークレットで管理していたので、
シークレットの更新をする必要が出てきて・・・。

ということで、いろいろ調べて、何とか更新できた・・・という話。

大まかな仕掛け

Logic AppsにあるKey Vaultコネクタに、シークレットの更新アクションは・・・
ありませんでした。
なので、(HTTPコネクタで)Key VaultのAPIを呼び出して、シークレットを更新しようと思います。

Key VaultのAPIを呼び出すには、Azure ADのOAuth認証が必要で、
HTTPコネクタでOAuth認証を行います。

Key Vault側では、Logic Appsからの接続を許可するように
アクセスポリシーを設定する必要があります。

手順

Azure ADの設定

AzureポータルでAzure ADを開きます。
ブレードから「アプリの登録」を選びます。
image.png

次に「新規登録」をクリックします。
image.png

以下のような画面が表示されるので、名前を入力し、「登録」をクリックします。
image.png

以下のような画面が表示されます。
続いて、APIのアクセス許可を追加します。
ブレードから「APIのアクセス許可」を選択し、「アクセス許可の追加」をクリックします。
image.png

APIの一覧が表示されるので、Azure Key Vaultを選択します。
image.png

アクセス許可の「user_impersonation」にチェックを入れ、「アクセス許可の追加」をクリックします。
image.png

最後にクライアントシークレットを追加します。
ブレードから「証明書とシークレット」を選択し、「新しいクライアントシークレット」をクリックし、クライアントシークレットを追加します。
追加したシークレットは、後で使用するのでコピーしておいてください。
image.png

Azure Key Vaultの設定変更

前回作成したKey Vaultのアクセス許可を追加します。
Key Vaultを開き、ブレードから「アクセスポリシー」を選択し、「アクセスポリシーの追加」をクリックします。
image.png

以下のような画面が表示されます。
テンプレートからの構成で、「シークレットの管理」を選択します。
⇒シークレットのアクセス許可項目(取得や一覧、セット等)が7つ追加されます。
プリンシパルの選択では、先ほど作成したAzure ADのアプリ名を入力します。
選択後、「追加」をクリックしてください。
image.png

ポリシーの追加を行った後、忘れずに「保存」ボタンをクリックしてください。
⇒ここ、忘れがち(笑)。
image.png

Logic Appの設定

HTTPコネクタを使って、Key VaultのAPIを呼び出します。
Key Vaultのシークレット設定用APIの仕様は、以下のページに記載があります。
https://docs.microsoft.com/ja-jp/rest/api/keyvault/setsecret/setsecret

HTTPコネクタの設定は以下のような感じになります。
URLには
https://(BaseUrl)/secrets/(secret-name)?api-version=7.1
を設定します。
BaseUrlには、対象のKey Vaultの概要に記載されているDNS名を入れてください。
本文にはJSON形式で、更新値をValueプロパティとして設定します。
image.png

次にOAuth認証の設定を行います。
「Add new parameter」をクリックし、「認証」にチェックを入れます。
image.png

認証の種類を選択できるようになるので、「Active Directory OAuth」を選択します。
image.png

認証情報を設定します。
・テナント   :Azure ADに追加したアプリの概要ページに記載のディレクトリ (テナント) ID
・対象ユーザー :https://vault.azure.net
         ※BaseUrlで設定したURLではありません!
・クライアントID:Azure ADに追加したアプリの概要ページに記載のアプリケーション (クライアント) ID
・資格情報の種類:シークレット
・シークレット :Azure ADに追加したアプリで生成したクライアントシークレット
image.png

これで設定は以上になります。
Logic Appを実行してみると、こんな感じです。
応答が状態コード200で処理が成功しました。
ポリシーの設定がうまくいっていないと、状態コード403が返ってきます。

image.png

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2