LoginSignup
0
0

More than 1 year has passed since last update.

Azure FunctionsからKey Vaults登録のシークレット情報を引き出してみた

Posted at

はじめに

認証トークン等の情報をハードコーディングすることはセキュリティの観点からよろしくない。
また、認証トークン等の書き換えが発生した場合にハードコーディングしてしまうとコードの修正が必要になってしまう。
それらを防ぐために、Key Vaultsに登録し、Azure Functionsから環境変数として呼び出す方法を記載する。

前提

  • Azureアカウントを持っていること
    • もしアカウントを持っていない場合は、こちらからアカウント登録
  • Azure Functionsにてインスタンスが作成されていること

手順

Key Vaultsでシークレットの作成

検索窓に「Key Vaults」と入力する。
サービスに表示される「キー コンテナー」を選択する。

左上の「作成」ボタンをクリックする。

下記項目を入力し、「確認および作成」ボタンをクリックする。
- サブスクリプション: 任意のサブスクリプションを選択
- リソースグループ: 任意のリソースグループを選択(例では「Test20211222」)
- Key Vault名: 任意の名前を入力(例では「Test20211222」)
- 地域: 任意の地域を選択(例では「東日本」)
- 価格レベル: 任意の価格レベルを選択(例では「標準」)

入力内容を確認し、間違いが無ければ「作成」ボタンをクリックする。

デプロイが完了したら、「リソースに移動」ボタンをクリックする。

左のメニューの「設定」→「シークレット」を選択し、「+ 生成/インポート」をクリックする。

シークレットの名前と値(例では、「USERNAME」と「Test」)を入力し、「作成」ボタンをクリックする。

シークレットが作成される。

Azure Functionsでシステム割り当てマネージドIDの有効化

左のメニューの「設定」→「ID」を選択し、状態を「オン」にして「保存」ボタンをクリックする。

Key VaultsでAzure Functionsのアクセス許可をする

左のメニューの「設定」→「アクセスポリシー」を選択し、「+ アクセスポリシーの追加」をクリックする。

シークレットのアクセス許可にて「取得」を選択し、プリンシパルにて関数アプリ名(例では「test20211222-1」)を入力して選択し、「選択」ボタンをクリックする。
その後、「追加」ボタンをクリックする。

「現在のアクセスポリシー」の「アプリケーション」に追加されていることが確認できたら、「保存」ボタンをクリックする。

Key Vaultsの値をAzure Functionsの環境変数に設定する

Key Vaults

左のメニューから「設定」→「シークレット」を選択し、登録したシークレットをクリックする。

現在のバージョンのものをクリックする。

表示されるシークレット識別子をコピーし、メモ帳等にコピペしておく。

Azure Functions

左のメニューの「設定」→「構成」を選択し、アプリケーション設定において、「+ 新しいアプリケーション設定」をクリックする。

下記内容を入力し、「OK」ボタンをクリックする。

  • 名前:任意(例では「USERNAME_KEYVAULTS」)
  • 値: @Microsoft.KeyVault(SecretUri=<先程コピペしておいたシークレット識別子>)

追加されたのを確認したら「保存」ボタンをクリックする。

ソースが「キー コンテナーの参照」に変わり、緑のチェックマークが付いたのがわかる。

Azure FunctionsからKey Vaultsにシークレット登録したものの値を呼び出してみる

以下の方法で呼び出すことができる

  • Node.js: process.env.<アプリケーション設定で登録した名前>
  • Python: os.getenv("<アプリケーション設定で登録した名前>")

Node.jsでの例

下図のように記載する。

関数URLにアクセスすると値が取得できていることが確認できる。

0
0
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
0
0