ラボ 16 - マネージド ID に Azure Key Vault を使用する
ログインの種類: Azure リソース ログイン
ラボのシナリオ
Azure リソース用マネージド ID を使うとき、Microsoft Entra 認証をサポートするリソースに対して認証するためのアクセス トークンをコードで取得できます。ただし、すべての Azure サービスで Microsoft Entra 認証がサポートされているわけではありません。 Azure リソースのマネージド ID をこれらのサービスと共に使用するには、Azure Key Vault にサービス資格情報を保存し、マネージド ID を使用して Key Vault にアクセスして、資格情報を取得します。
推定時間: 35 分
演習 1 - Azure Key Vault を使用して仮想マシン ID を管理する
タスク 1 - キー コンテナーを作成する
-
https://portal.azure.comで全体管理者アカウントを使用して Microsoft Azure portal にサインインします。 -
左側のナビゲーション バーの上部で、[+ リソースの作成] を選択します。
-
[Marketplace を検索] ボックスに「Key Vault」と入力します。
-
結果から [Key Vault] を選択します。
-
[作成] を選択します
-
次に示すように、必要なすべての情報を入力します。 このラボで使用しているサブスクリプションを選択していることを確認してください。
注: キー コンテナー名は一意である必要があります。 フィールドの右側にある緑色のチェックマークを探します。
- リソース グループ - rgSC300KeyVault
- キー コンテナー名 - anyuniquevalue
- [次へ] を選択します。
- [アクセスの構成] ページで、 [Vault Access Policy] (コンテナーのアクセス ポリシー) ラジオ ボタンをオンにします。
-
Review + create を選択します。
-
[作成] を選択します
タスク 2 - Windows 仮想マシンを作成する
-
[+ リソースの作成] を選択します。
-
[Marketplace を検索] 検索バーに「Windows 11」と入力します。
-
[Windows 11] を選択し、プランのドロップダウンから [Windows 11 Enterprise、バージョン 25H2] またはそれ以降のバージョンを選択します。 [作成] を選択します。
| フィールド | 値 |
|---|---|
| VM 名 | vmKeyVault |
| 可用性のオプション | インフラストラクチャの冗長性は必要ありません |
| 管理ユーザー名 | adminKeyVault |
| Password | 忘れにくい安全なパスワードを設定してください |
| ライセンス | 適格なライセンスがあることを確認してください |
-
[ライセンスの確認] チェックボックスをオンにします。
-
[次へ] ボタンを使用して、[管理] タブに移動します。
-
[管理] タブで、[システム割り当てマネージド ID の有効化] の横のボックスをオンにします。
-
仮想マシンの作成エクスペリエンスの残りの部分に移動します。
-
[レビューと作成]、[作成] の順に選択します。
タスク 3 - シークレットを作成する
-
新しく作成した Key Vault に移動します。
-
左側のメニューで [オブジェクト] を開き、[シークレット] を選択します。
-
[生成/インポート] を選択します。
-
[シークレットの作成] 画面の [アップロード オプション] で、 [手動] を選択したままにします。
-
シークレットの名前と値を指定します。 値は任意のものを指定できます。
-
アクティブ化した日付と有効期限の日付をクリアのままにし、[有効] を [はい] のままにします。
-
[作成] を選択して、シークレットを作成します。
タスク 4 - Key Vault へのアクセス許可を付与する
-
新しく作成した Key Vault に移動します。
-
左側のメニューで、 [アクセス ポリシー] を選択します。
-
[+ 作成] を選択します。
-
[アクセス ポリシーの追加] セクションで、[テンプレートから構成する] (オプション) の下にあるプルダウン メニューから [シークレット管理] を選択します。
-
[次へ] ボタンを使用して [プリンシパル] タブに進みます。
-
検索フィールドに、タスク 2 で作成した VM の名前「vmKeyVault」を入力します。 結果一覧で VM を選択し、 [選択] を選択します。
-
[次へ] ボタンを使用して [確認および作成] タブに進みます。
-
[作成] を選択します
タスク 5 - PowerShell を使用して Key Vault シークレットを使用してデータにアクセスする
-
vmKeyVault 仮想マシンに移動して、[接続] を選択します。 [RDP ファイルのダウンロード] を選択し、ダウンロード ファイルを保持し、ファイルを開いて接続します。 次に、タスク 2 のパスワードを入力し、[リモート デスクトップ接続] で [はい] を選択します。 [デバイスのプライバシー設定の選択] で [次へ]、[同意する] の順に選択します。
-
このラボで先ほどデプロイした Windows 11 仮想マシンを開きます。 ラボの仮想マシンから PowerShell を開きます。
-
PowerShell では、テナント上で Web 要求を呼び出し、VM の特定のポートでローカル ホストのトークンを取得します。
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"} -
次に、アクセス トークンを応答から抽出します。
$KeyVaultToken = $Response.access_token -
次のコマンドを実行して、アクセス トークンを使ってキー コンテナーからシークレットを取得します。
注 次のプレースホルダー値を置き換えます。
<key-vault-name>: Azure portal のキー コンテナーの [概要] ページから取得します。<secret-name>: キー コンテナーの [シークレット] ページから取得します。
Invoke-RestMethod -Uri https://<key-vault-name>.vault.azure.net/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"} -
次のような応答を受け取ります。
'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16... } -
応答に次のようなシークレット値、その URI、属性 (例: enabled や created) が含まれていることを確認します。
'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/<version-id> @{enabled=True; created=...} -
このシークレットは、名前とパスワードを必要とするサービスに対する認証に使用できます。
演習の概要
この演習では、キー コンテナーを作成し、システム割り当てマネージド ID を持つ仮想マシンをデプロイし、これにコンテナーへのアクセスを許可し、マネージド ID を使用してシークレットを取得しました。 この演習では、コードに認証情報を保存せずにシークレットにアクセスする方法を示しました。