Azure Red Hat OpenShift でカスタマー マネージド キーを使用して OS ディスクを暗号化する
既定では、Azure Red Hat OpenShift クラスター内の仮想マシンの OS ディスクは、Microsoft Azure によって管理される自動生成キーで暗号化されます。 セキュリティを強化するため、お客様は Azure Red Hat OpenShift クラスターをデプロイするときに、自己管理型キーを使用して OS ディスクを暗号化できます。 この機能を使用すると、カスタマー マネージド キー (CMK) で機密データを暗号化することにより、いっそう詳細に制御できます。
カスタマー マネージド キーを使用して作成されたクラスターの既定のストレージ クラスは、そのキーで有効になります。 そのため、OS ディスクとデータ ディスクの両方が、これらのキーによって暗号化されます。 カスタマー マネージド キーは、Azure Key Vault に格納されます。
Azure Key Vault を使用してキーを作成および保守する方法の詳細については、Microsoft Azure ドキュメントの Azure Disk Storage のサーバー側暗号化に関する記事を参照してください。
ホストベースの暗号化では、Azure Red Hat OpenShift エージェント ノードの VM の VM ホストに保存されたデータは、保存時に暗号化され、暗号化された状態でストレージ サービスに送られます。 ホストベースの暗号化は、一時ディスクがプラットフォーム マネージド キーを使用して保存時に暗号化されることを意味します。
OS ディスクとデータ ディスクのキャッシュは、ディスクに設定された暗号化のタイプに応じて、プラットフォーム マネージド キーまたはカスタマー マネージド キーのどちらかを使用して保存時に暗号化されます。 既定では、Azure Red Hat OpenShift を使用する場合、OS およびデータ ディスクはプラットフォーム マネージド キーを使用して保存時に暗号化されます。つまり、これらのディスクのキャッシュも既定で、プラットフォーム マネージド キーを使用して保存時に暗号化されます。
次の暗号化手順に従って、独自のマネージド キーを指定できます。 以後、これらのディスクのキャッシュも、この手順で指定するキーを使用して暗号化されるようになります。
制限事項
Azure で Key Vault とディスク暗号化セットを管理するのはお客様の責任です。 キーの管理を怠ると、Azure Red Hat OpenShift クラスターが破損します。 VM は動作を停止し、その結果、Azure Red Hat OpenShift クラスター全体が機能しなくなります。
Azure Red Hat OpenShift のエンジニアリング チームはキーにアクセスできません。 そのため、キーをバックアップ、レプリケート、または取得することはできません。
ディスク暗号化セットを使用して暗号化キーを管理する方法の詳細については、Microsoft Azure ドキュメントの Azure Disk Storage のサーバー側暗号化に関する記事を参照してください。
前提条件
アクセス許可を確認します。 共同作成者とユーザー アクセス管理者のアクセス許可、または所有者のアクセス許可が必要です。
Azure サブスクリプションが複数ある場合は、リソース プロバイダーを登録します。 登録の詳細については、「リソース プロバイダーを登録する」を参照してください。
サブスクリプションで EncryptionAtHost 機能を有効にする必要があります。 これを有効にするには、次を実行します。
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
次を実行すると、機能の現在の状態を確認できます。
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
2 つの空のサブネットを含む仮想ネットワークを作成する
2 つの空のサブネットを含む仮想ネットワークを作成します。 要件を満たす仮想ネットワークが既にある場合は、このステップを省略できます。 仮想ネットワークを作成する手順を確認するには、「2 つの空のサブネットを含む仮想ネットワークを作成する」を参照してください。
Azure Key Vault インスタンスを作成する
キーを格納するには、Azure Key Vault のインスタンスを使用する必要があります。 消去保護が有効になっている新しいキー コンテナーを作成します。 次に、独自のカスタム キーを格納するための新しいキーを Key Vault に作成します。
- 他の環境アクセス許可を設定します。
export KEYVAULT_NAME=$USER-enckv export KEYVAULT_KEY_NAME=$USER-key export DISK_ENCRYPTION_SET_NAME=$USER-des
- キー コンテナーを作成して、Key Vault 内にキーを作成します。
az keyvault create -n $KEYVAULT_NAME \ -g $RESOURCEGROUP \ -l $LOCATION \ --enable-purge-protection true az keyvault key create --vault-name $KEYVAULT_NAME \ -n $KEYVAULT_KEY_NAME \ --protection software KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv) KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME \ --name $KEYVAULT_KEY_NAME \ --query "[key.kid]" -o tsv)
Azure ディスク暗号化セットを作成する
Azure Disk Encryption セットは、Azure Red Hat OpenShift クラスターのディスクの参照ポイントとして使用されます。 それは前のステップで作成した Azure Key Vault に接続され、その場所からカスタマー マネージド キーをプルします。
az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME \
-l $LOCATION \
-g $RESOURCEGROUP \
--source-vault $KEYVAULT_ID \
--key-url $KEYVAULT_KEY_URL
DES_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g $RESOURCEGROUP --query 'id' -o tsv)
DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME \
-g $RESOURCEGROUP \
--query "[identity.principalId]" \
-o tsv)
Key Vault にアクセスするためのアクセス許可をディスク暗号化セットに付与する
前のステップで作成したディスク暗号化セットを使用し、ディスク暗号化セットに Azure Key Vault にアクセスして使用するアクセス許可を付与します。
az keyvault set-policy -n $KEYVAULT_NAME \
-g $RESOURCEGROUP \
--object-id $DES_IDENTITY \
--key-permissions wrapkey unwrapkey get
Azure Red Hat OpenShift クラスターを作成する
カスタマー マネージド キーを使用する Azure Red Hat OpenShift クラスターを作成します。
Note
"既存" の ARO クラスターで CMK を有効にできるのはワーカー ノードのみであり、マスター ノードではできません。 これは、machineset CR を介して machine-API を使用して実現できます。 詳細については、マシン セットのカスタマー マネージド暗号化キーの有効化とコンピューティング マシン セットの変更に関するページを参照してください。
az aro create --resource-group $RESOURCEGROUP \
--name $CLUSTER \
--vnet aro-vnet \
--master-subnet master-subnet \
--worker-subnet worker-subnet \
--disk-encryption-set $DES_ID
Azure Red Hat OpenShift クラスターを作成すると、すべての VM がカスタマー マネージド暗号化キーで暗号化されます。
キーを正しく構成したことを確認するには、次のコマンドを実行します。
- クラスターの VM やディスクなどが存在するクラスター リソース グループの名前を取得します。
CLUSTERRESOURCEGROUP=$(az aro show --resource-group $RESOURCEGROUP --name $CLUSTER --query 'clusterProfile.resourceGroupId' -o tsv | cut -d '/' -f 5)
- ディスクに正しいディスク暗号化セットがアタッチされていることを確認します。
出力のaz disk list -g $CLUSTERRESOURCEGROUP --query '[].encryption'
diskEncryptionSetId
フィールドは、Azure Red Hat OpenShift クラスターを作成するときに指定したディスク暗号化セットを指し示している必要があります。