Feb 24, 2026
Feb 24, 2026
N/A Views
MD

環境変数設定

以下の変数に、後続のコマンドで使用するリソース名やリージョンを設定します。

export RESOURCE_GROUP="rg-vault"
export LOCATION="japaneast"
export KEYVAULT_NAME="kv-vault-unseal"
export KEY_NAME="vault-unseal-key"
export SP_NAME="sp-vault-unseal"

リソースグループ作成

指定した名前とリージョンで Azure のリソースグループを作成します。

az group create --name $RESOURCE_GROUP --location $LOCATION

Key Vault 作成

作成したリソースグループ内に、標準 SKU の Key Vault をデプロイします。

az keyvault create \
  --name $KEYVAULT_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --sku standard

自分自身にキー操作権限を付与

Key Vault のキーを操作できるように、現在サインインしているユーザーに Key Vault Crypto Officer ロールを付与します。

# サインイン中のユーザーのオブジェクト ID を取得
export MY_OBJECT_ID=$(az ad signed-in-user show --query id --output tsv)

# 作成した Key Vault のリソース ID を取得
export KEYVAULT_ID=$(az keyvault show \
  --name $KEYVAULT_NAME \
  --resource-group $RESOURCE_GROUP \
  --query id --output tsv)

# ロール割り当てを作成
az role assignment create \
  --role "Key Vault Crypto Officer" \
  --assignee $MY_OBJECT_ID \
  --scope $KEYVAULT_ID

キー作成

Key Vault 内に RSA 2048 ビットのキーを作成します。Vault のアンシールに使用するキーです。

az keyvault key create \
  --vault-name $KEYVAULT_NAME \
  --name $KEY_NAME \
  --kty RSA \
  --size 2048

Service Principal の作成

Vault が Azure Key Vault にアクセスできるように、専用の Service Principal (SP) を作成し、必要なロールを付与します。

# SP を作成し、必要な情報を取得
export SP_OUTPUT=$(az ad sp create-for-rbac \
  --name $SP_NAME \
  --years 99 \
  --output json)

export AZURE_CLIENT_ID=$(echo $SP_OUTPUT | jq -r '.appId')
export AZURE_CLIENT_SECRET=$(echo $SP_OUTPUT | jq -r '.password')
export AZURE_TENANT_ID=$(echo $SP_OUTPUT | jq -r '.tenant')
export SP_APP_ID=$AZURE_CLIENT_ID

# SP に「Key Vault Crypto Service Encryption User」ロールを付与
az role assignment create \
  --role "Key Vault Crypto Service Encryption User" \
  --assignee $SP_APP_ID \
  --scope $KEYVAULT_ID

vault.hcl に必要な設定値を出力

# 環境変数を利用して seal 設定ブロックを生成
cat << EOF
seal "azurekeyvault" {
  tenant_id      = "$AZURE_TENANT_ID"
  client_id      = "$AZURE_CLIENT_ID"
  client_secret  = "$AZURE_CLIENT_SECRET"
  vault_name     = "$KEYVAULT_NAME"
  key_name       = "$KEY_NAME"
}
EOF

この出力結果を vault.hcl の適切な位置に貼り付けることで、Vault が Azure Key Vault をシールバックエンドとして使用できるようになります。

Auto Unseal への移行

すでに Vault が Shamir(手動 unseal)で初期化されている場合は、Auto Unseal への移行が必要です。

vault operator unseal -migrate

を 3 回実行して、それぞれの既存の unseal key を入力すれば OK です。

Found a mistake? Update the entry.
Share this article: