7.4. Azure のユーザー管理暗号化を有効にする

OpenShift Container Platform バージョン 4.12 では、ユーザー管理暗号化キーを使用して Azure にクラスターをインストールできます。この機能を有効にするには、インストール前に Azure DiskEncryptionSet を準備し、install-config.yaml ファイルを変更してから、インストール後の手順を実行します。

7.4.1. Azure ディスク暗号化セットの準備

OpenShift Container Platform インストーラーは、ユーザー管理のキーで既存のディスク暗号化セットを使用できます。この機能を有効にするには、Azure でディスク暗号化セットを作成し、インストーラーにキーを提供します。

手順

  1. 次のコマンドを実行して、Azure リソースグループの次の環境変数を設定します。

    $ export RESOURCEGROUP="<resource_group>" \1
        LOCATION="<location>" 2
    1
    ディスク暗号化セットと暗号化キーを作成する Azure リソースグループの名前を指定します。クラスターを破棄した後にキーへのアクセスが失われないようにするには、クラスターをインストールするリソースグループとは別のリソースグループにディスク暗号化セットを作成する必要があります。
    2
    リソースグループを作成する Azure の場所を指定します。
  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
    1
    作成する Azure Key Vault の名前を指定します。
    2
    作成する暗号化キーの名前を指定します。
    3
    作成するディスク暗号化セットの名前を指定します。
  3. 次のコマンドを実行して、Azure サービスプリンシパルの ID の環境変数を設定します。

    $ export CLUSTER_SP_ID="<service_principal_id>" 1
    1
    このインストールに使用するサービスプリンシパルの ID を指定します。
  4. 次のコマンドを実行して、Azure でホストレベルの暗号化を有効にします。

    $ az feature register --namespace "Microsoft.Compute" --name "EncryptionAtHost"
    $ az feature show --namespace Microsoft.Compute --name EncryptionAtHost
    $ az provider register -n Microsoft.Compute
  5. 次のコマンドを実行して、ディスク暗号化セットと関連リソースを保持する Azure リソースグループを作成します。

    $ az group create --name $RESOURCEGROUP --location $LOCATION
  6. 次のコマンドを実行して、Azure キー vault を作成します。

    $ az keyvault create -n $KEYVAULT_NAME -g $RESOURCEGROUP -l $LOCATION \
        --enable-purge-protection true
  7. 次のコマンドを実行して、キー vault に暗号化キーを作成します。

    $ az keyvault key create --vault-name $KEYVAULT_NAME -n $KEYVAULT_KEY_NAME \
        --protection software
  8. 次のコマンドを実行して、キー vault の ID をキャプチャーします。

    $ KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)
  9. 次のコマンドを実行して、キー vault 内のキー URL をキャプチャーします。

    $ KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME --name \
        $KEYVAULT_KEY_NAME --query "[key.kid]" -o tsv)
  10. 次のコマンドを実行して、ディスク暗号化セットを作成します。

    $ az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME -l $LOCATION -g \
        $RESOURCEGROUP --source-vault $KEYVAULT_ID --key-url $KEYVAULT_KEY_URL
  11. 次のコマンドを実行して、キー 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
  12. 次のコマンドを実行して、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 ロールを指定します。必要なアクセス許可を持つ 所有者 ロールまたはカスタムロールを使用できます。

7.4.2. 次のステップ