ディスク暗号化機能を有効にすると、システムはディスクに送信されたデータを自動的に暗号化し、読み取り時にデータを復号します。 ディスク暗号化は、高いセキュリティが必要なシナリオやコンプライアンス要件があるシナリオに適しています。 重要な管理インフラストラクチャを作成および保守することなく、データのプライバシーと自律性を保護できます。 このトピックでは、Key Management Service (KMS) でホストされているキーを使用して、ディスクボリュームに格納されているデータを暗号化する方法について説明します。
前提条件
ACKクラスターが作成されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。
キー管理サービス (KMS) が有効化されています。 詳細については、「専用KMSインスタンスの購入」をご参照ください。
kubectlクライアントがACKクラスターに接続されています。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
Bring Your Own Key (BYOK) 機能を使用して作成されたキーを使用する場合は、まずECSインスタンスにKMSへのアクセスを許可する必要があります。 詳細については、「 (オプション) 手順1: ECSインスタンスにKMSへのアクセスを許可する」をご参照ください。
概要
ECSは業界標準のAES-256アルゴリズムを使用して、キーでディスクを暗号化します。 暗号化キーには、KMSが提供するサービスキー、またはBYOK機能を使用して作成した独自のキーを使用できます。 暗号化と復号が ECS インスタンスのパフォーマンスに与える影響は軽微です。 暗号化ディスクを作成してECSインスタンスにアタッチすると、次の種類のデータが暗号化されます。 データは、読み取られるときに復号化される。 詳細については、「データディスクの暗号化」をご参照ください。
ディスクに保存された静的データ。
暗号化されたディスクとインスタンスの間で送信されるデータ (オペレーティングシステムのデータを除く) 。
ECSインスタンスからバックエンドストレージクラスターに送信されるデータ。
暗号化されたディスクから作成されたすべてのスナップショット。 スナップショットでは、ディスクと同じ暗号化キーが使用されます。
暗号化されたスナップショットから作成されたすべてのディスク。
制限事項
拡張SSD、標準SSD、ウルトラディスク、およびベーシックディスクの各カテゴリのディスクを暗号化できます。
ローカルディスクのデータを暗号化することはできません。
非暗号化ディスクを暗号化ディスクに直接変換することはできません。
暗号化ディスクを非暗号化ディスクに直接変換することはできません。
(オプション) 手順1: ECSインスタンスにKMSへのアクセスを許可する
BYOK機能を使用して作成されたキーを使用する場合は、まずECSインスタンスにKMSへのアクセスを許可する必要があります。 これを行うには、Resource Access Management (RAM) ロールを作成し、ロールに必要な権限を付与します。 RAMユーザーに必要な権限を付与するには、次の操作を実行します。
KMSにアクセスするためのRAMロールを作成します。
AliyunECSDiskEncryptDefaultRole
ロールがすでに存在する場合は、権限を付与します。にログインします。Resource Access Management (RAM) コンソールAlibaba CloudアカウントまたはRAM管理者アカウントを使用します。
左側のナビゲーションウィンドウで、 .
On theロールページをクリックします。ロールの作成.
On theロールの作成ページを選択します。Alibaba Cloudサービス[信頼できるエンティティの選択] セクションで、次へ.
選択通常のサービスロールRole Typeパラメーターの
入力AliyunECSDiskEncryptDefaultRoleで、RAMロール名フィールドと選択Elastic Compute Serviceを信頼できるサービスとして使用します。
クリックOKをクリックし、閉じる.
前の手順で作成したRAMロールに権限を付与します。
左側のナビゲーションペインで、
を選択します。 次に、[権限付与] をクリックします。[権限付与] パネルで、[リソーススコープ] として [アカウント] を選択します。 PrincipalフィールドにAliyunECSDiskEncryptDefaultRoleと入力し、ロールを選択します。
システムポリシーAliyunKMSFullAccessを選択するか、ビジネス要件に基づいてAliyunECSDiskEncryptCustomizedPolicyという名前のカスタムポリシーを作成します。
重要AliyunKMSFullAccess
ポリシーは完全な権限を付与します。 詳細なアクセス制御が必要な場合は、次の手順を実行して、AliyunECSDiskEncryptCustomizedPolicyという名前のカスタムポリシーを作成します。
では、ポリシーの作成ダイアログで、ポリシー名を入力し、OK.
手順2: ディスクボリュームの暗号化の設定
ディスクの暗号化は、ディスクを作成する場合にのみ有効にできます。 ディスクをマウントまたはマウント解除する場合、暗号化関連の操作は含まれません。
StorageClassを作成します。
sc-kms.yamlという名前のファイルを作成し、次のコードをファイルにコピーします。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-disk-encrypted provisioner: diskplugin.csi.alibabacloud.com parameters: fsType: ext4 type: cloud_ssd encrypted: "true" kmsKeyId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx reclaimPolicy: Delete
説明encrypted
: 暗号化ディスクを作成するかどうかを指定します。 値がtrue
の場合、暗号化ディスクの作成にStorageClassを使用することを指定します。kmsKeyId
: ディスクの暗号化に使用されるKMSキーを指定します。 このパラメーターを設定しない場合、デフォルトの顧客マスターキー (CMK) が使用されます。encrypted
パラメーターがfalse
に設定されている場合、このパラメーターは有効になりません。
次のコマンドを実行してStorageClassを作成します。
kubectl create -f sc-kms.yaml
次のコマンドを実行して、StorageClassを照会します。
kubectl get sc csi-disk-encrypted
期待される出力:
NAME PROVISIONER AGE csi-disk-encrypted diskplugin.csi.alibabacloud.com 9m5s
永続ボリュームクレーム (PVC) を作成します。
sc-pvc.yamlという名前のファイルを作成し、次の内容をファイルに追加します。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: csi-disk-encrypted
次のコマンドを実行してPVCを作成します。
kubectl create -f sc-pvc.yaml
次のコマンドを実行してPVCを照会します。
kubectl get pvc
期待される出力:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE disk-pvc Bound d-wz92s6d95go6ki9x**** 25Gi RWO csi-disk-encrypted 10m
次のコマンドを実行して、PVCにバインドされている永続ボリューム (PV) を照会します。
kubectl get pv
期待される出力:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE d-wz92s6d95go6ki9x**** 25Gi RWO Retain Bound default/disk-pvc csi-disk-encrypted 10m
上記の出力は、ディスクが作成され、ディスクIDがd-wz92s6d95go6ki9x **** であることを示しています。
ディスクが暗号化されているかどうかを確認します。
にログインします。ECSコンソール.
左側のナビゲーションウィンドウで、 .
On theディスクページで、d-wz92s6d95go6ki9x ****ディスクは暗号化状態になります。