すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ディスクボリュームの暗号化

最終更新日:Mar 26, 2025

ディスク暗号化機能を有効にすると、ディスクに送信されるデータは自動的に暗号化され、読み取られるときに復号されます。ディスク暗号化は、高いセキュリティが必要なシナリオやコンプライアンス要件があるシナリオに適しています。キー管理インフラストラクチャを作成および維持する必要なく、データのプライバシーと自律性を保護できます。このトピックでは、Key Management Service (KMS) でホストされているキーを使用して、ディスクボリュームに格納されているデータを暗号化する方法について説明します。

機能の説明

ディスクボリューム暗号化の仕組み

Alibaba Cloud ディスクは、業界標準の AES-256 暗号化アルゴリズムと KMS を使用して暗号化されます。KMS は、ダブルキー設計とエンベロープ暗号化メカニズムを使用してデータを暗号化します。ダブルキー設計では、カスタマーマスターキー (CMK) と、CMK によって生成されるデータキー (DK) を使用して、暗号化と復号を行います。CMK は DK に対して有効であり、DK はビジネスデータに対して有効です。KMS は、エンベロープ暗号化メカニズムを使用して暗号化を実装するために、次の手順を実行します。

  1. DK を暗号化します。

    DK を使用する前に、CMK を使用して DK を暗号化します。平文以外の暗号化された DK は、暗号化されたビジネスデータと共に安全に保存できます。このように、権限のないユーザーが記憶媒体にアクセスしても、CMK を持っていないため、DK を復号することはできません。

  2. 暗号化されたデータを保存および読み取ります。

    暗号化されたデータが読み取られると、KMS リクエストが送信され、DK が復号されます。KMS はリクエストを検証した後、平文の DK を返します。このプロセスはメモリ内で実行され、DK は記憶媒体には保存されません。ハイパーバイザーメモリ内の平文 DK は、ディスク I/O 操作中にデータの復号に使用されます。

説明

エンベロープ暗号化プロセス中、平文の CMK は、KMS によって管理されるハードウェアセキュリティモジュール外に保存または使用されることはありません。平文の DK は、サービスインスタンスが存在するホストのメモリ内でのみ使用され、記憶媒体には保存されません。

詳細については、「暗号化プロセス」をご参照ください。

暗号化できるデータ型

暗号化されたディスクを作成して Elastic Compute Service (ECS) インスタンスにアタッチすると、次の種類のデータが暗号化されます。データは、読み取られるときに復号されます。

  • 暗号化されたディスクに保存されている静的データ。

  • インスタンス オペレーティングシステムのデータを除き、暗号化されたディスクと ECS インスタンス間で転送されるデータ。

  • ECS インスタンスからバックエンド ストレージクラスターに転送されるデータ。

  • 暗号化されたディスクから作成されたすべてのスナップショット。これらのスナップショットは、ディスクと同じ暗号鍵を持っています。

  • 暗号化されたスナップショットから作成されたすべてのディスク。

前提条件

  • Container Storage Interface (CSI) プラグインがクラスターにインストールされていること。

    説明
    • クラスター管理ページの左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。[ストレージ] タブで、csi-plugin と csi-provisioner がインストールされているかどうかを確認できます。特定の機能を使用するために CSI プラグインを更新する方法の詳細については、「csi-plugin と csi-provisioner の更新」をご参照ください。

    • クラスターで FlexVolume を使用している場合は、FlexVolume は使用できなくなったため、クラスターを CSI プラグインに移行する必要があります。詳細については、「FlexVolume から CSI へのアップグレード」をご参照ください。

  • KMS がアクティブ化されていること。

使用上の注意

  • Enterprise SSD (ESSD)、ESSD AutoPL ディスク、ESSD Entry ディスク、標準 SSD、Ultra ディスク、および基本ディスクを暗号化できます。

  • ローカルディスクは暗号化できません。

  • 暗号化されていないディスクを暗号化されたディスクに直接変換したり、暗号化されたディスクを暗号化されていないディスクに直接変換したりすることはできません。

ECS に KMS へのアクセスを承認する

KMS を使用してディスクを暗号化する場合は、最初に ECS に KMS へのアクセスを承認する必要があります。

  1. KMS にアクセスするために使用する Resource Access Management (RAM) ユーザーを作成します。詳細については、「信頼できる Alibaba Cloud サービスの RAM ロールの作成」をご参照ください。

    説明

    AliyunECSDiskEncryptDefaultRole ロールが既に存在する場合は、この手順をスキップできます。

    次のパラメーターをメモしておきます。

    • [プリンシパルタイプ][クラウドサービス] に設定します。

    • [プリンシパル名][elastic Compute Service] に設定します。

    • [ロール名] を AliyunECSDiskEncryptDefaultRole に設定します。

  2. AliyunECSDiskEncryptDefaultRole ロールに権限を付与します。詳細については、「RAM ロールへの権限の付与」をご参照ください。

    次のパラメーターをメモしておきます。

    • [リソーススコープ][アカウント] に設定します。

    • [ポリシー] セクションで、AliyunKMSFullAccess システムポリシーまたは AliyunECSDiskEncryptCustomizedPolicy カスタムポリシーを選択します。

      重要

      AliyunKMSFullAccess システムポリシーは、フルパーミッションを提供します。よりきめ細かいアクセス制御が必要な場合は、「カスタムポリシーの作成」をご参照ください。

      クリックして、AliyunECSDiskEncryptCustomizedPolicy ポリシーによって提供される権限を表示します

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow", // 許可
                  "Action": [
                      "kms:DescribeKey", // キーの記述
                      "kms:GenerateDataKey", // データキーの生成
                      "kms:Decrypt", // 復号
                      "kms:TagResource" // リソースへのタグ付け
                  ],
                  "Resource": "*"
              }
          ]
      }
      1. [権限の付与] をクリックします。

ディスクボリュームの暗号化

ディスク暗号化は、ディスクの作成時にのみ有効にできます。ディスクのマウントまたはマウント解除時には、暗号化関連の操作は含まれません。

  1. ディスク暗号化を有効にする StorageClass を作成します。

    1. ビジネス要件に基づいて次の YAML テンプレートを変更し、変更したテンプレートを 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_essd
          encrypted: "true"  # 暗号化
          kmsKeyId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # KMSキーID
      reclaimPolicy: Delete # 削除ポリシー

      parameters セクションの次のパラメーターに注意してください。

      • encrypted: StorageClass を使用して作成されたディスクのディスク暗号化を有効にするかどうかを指定します。StorageClass を使用して暗号化されたディスクを作成する場合は、値を true に設定します。

      • kmsKeyId: StorageClass を使用して作成されたディスクの暗号化に使用する KMS キーを指定します。このパラメーターを設定しない場合は、デフォルトの CMK が使用されます。encryptedfalse に設定した場合、このパラメーターは有効になりません。

    2. StorageClass を作成します。

      kubectl create -f sc-kms.yaml
  2. 永続ボリューム要求 (PVC) を作成します。

    1. sc-pvc.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: disk-pvc
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        storageClassName: csi-disk-encrypted
    2. PVC を作成します。

      kubectl create -f sc-pvc.yaml
    3. PVC を確認します。

      kubectl get pvc

      次の出力は、PVC が作成され、システムによって自動的に作成された永続ボリューム (PV) にバインドされていることを示しています。VOLUME 列にディスク ID が表示されます。

      NAME       STATUS    VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS         VOLUMEATTRIBUTESCLASS   AGE
      disk-pvc   Bound     d-2ze0nmbv2var0d9h****   20Gi       RWO            csi-disk-encrypted   <unset>                 6m20s
  3. ディスクが暗号化されているかどうかを確認します。

    1. ECS コンソール にログインします。

    2. 左側のナビゲーションウィンドウで、[ストレージとスナップショット] > [ブロックストレージ] を選択します。

    3. [クラウドディスク] タブで、作成されたディスクを見つけ、その ID をクリックします。

    4. ディスク詳細ページの [基本情報] タブで、[暗号化/非暗号化] フィールドに [暗号化] と表示されているかどうかを確認します。

関連情報

ディスク暗号化の詳細については、「クラウドディスクの暗号化」をご参照ください。