第4章 Azure のユーザー管理暗号化を有効にする
OpenShift Container Platform バージョン 4.12 では、ユーザー管理暗号化キーを使用して Azure にクラスターをインストールできます。この機能を有効にするには、インストール前に Azure DiskEncryptionSet を準備し、install-config.yaml
ファイルを変更してから、インストール後の手順を実行します。
4.1. Azure ディスク暗号化セットの準備
OpenShift Container Platform インストーラーは、ユーザー管理のキーで既存のディスク暗号化セットを使用できます。この機能を有効にするには、Azure でディスク暗号化セットを作成し、インストーラーにキーを提供します。
手順
次のコマンドを実行して、Azure リソースグループの次の環境変数を設定します。
$ export RESOURCEGROUP="<resource_group>" \1 LOCATION="<location>" 2
次のコマンドを実行して、Azure Key Vault とディスク暗号化セットの次の環境変数を設定します。
$ export KEYVAULT_NAME="<keyvault_name>" \1 KEYVAULT_KEY_NAME="<keyvault_key_name>" \2 DISK_ENCRYPTION_SET_NAME="<disk_encryption_set_name>" 3
次のコマンドを実行して、Azure サービスプリンシパルの ID の環境変数を設定します。
$ export CLUSTER_SP_ID="<service_principal_id>" 1
- 1
- このインストールに使用するサービスプリンシパルの ID を指定します。
次のコマンドを実行して、Azure でホストレベルの暗号化を有効にします。
$ az feature register --namespace "Microsoft.Compute" --name "EncryptionAtHost"
$ az feature show --namespace Microsoft.Compute --name EncryptionAtHost
$ az provider register -n Microsoft.Compute
次のコマンドを実行して、ディスク暗号化セットと関連リソースを保持する Azure リソースグループを作成します。
$ az group create --name $RESOURCEGROUP --location $LOCATION
次のコマンドを実行して、Azure キー vault を作成します。
$ az keyvault create -n $KEYVAULT_NAME -g $RESOURCEGROUP -l $LOCATION \ --enable-purge-protection true
次のコマンドを実行して、キー vault に暗号化キーを作成します。
$ az keyvault key create --vault-name $KEYVAULT_NAME -n $KEYVAULT_KEY_NAME \ --protection software
次のコマンドを実行して、キー vault の ID をキャプチャーします。
$ KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)
次のコマンドを実行して、キー vault 内のキー URL をキャプチャーします。
$ KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME --name \ $KEYVAULT_KEY_NAME --query "[key.kid]" -o tsv)
次のコマンドを実行して、ディスク暗号化セットを作成します。
$ az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME -l $LOCATION -g \ $RESOURCEGROUP --source-vault $KEYVAULT_ID --key-url $KEYVAULT_KEY_URL
次のコマンドを実行して、キー vault へのアクセス権を DiskEncryptionSet リソースに付与します。
$ DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[identity.principalId]" -o tsv)
$ az keyvault set-policy -n $KEYVAULT_NAME -g $RESOURCEGROUP --object-id \ $DES_IDENTITY --key-permissions wrapkey unwrapkey get
次のコマンドを実行して、Azure サービスプリンシパルに DiskEncryptionSet を読み取るパーミッションを付与します。
$ DES_RESOURCE_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g \ $RESOURCEGROUP --query "[id]" -o tsv)
$ az role assignment create --assignee $CLUSTER_SP_ID --role "<reader_role>" \1 --scope $DES_RESOURCE_ID -o jsonc
- 1
- ディスク暗号化セットへの読み取りパーミッションを持つ Azure ロールを指定します。必要なアクセス許可を持つ
所有者
ロールまたはカスタムロールを使用できます。