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

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

最終更新日:Dec 19, 2024

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

前提条件

概要

ECSは業界標準のAES-256アルゴリズムを使用して、キーでディスクを暗号化します。 暗号化キーには、KMSが提供するサービスキー、またはBYOK機能を使用して作成した独自のキーを使用できます。 暗号化と復号が ECS インスタンスのパフォーマンスに与える影響は軽微です。 暗号化ディスクを作成してECSインスタンスにアタッチすると、次の種類のデータが暗号化されます。 データは、読み取られるときに復号化される。 詳細については、「データディスクの暗号化」をご参照ください。

  • ディスクに保存された静的データ。

  • 暗号化されたディスクとインスタンスの間で送信されるデータ (オペレーティングシステムのデータを除く) 。

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

  • 暗号化されたディスクから作成されたすべてのスナップショット。 スナップショットでは、ディスクと同じ暗号化キーが使用されます。

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

制限事項

  • 拡張SSD、標準SSD、ウルトラディスク、およびベーシックディスクの各カテゴリのディスクを暗号化できます。

  • ローカルディスクのデータを暗号化することはできません。

  • 非暗号化ディスクを暗号化ディスクに直接変換することはできません。

  • 暗号化ディスクを非暗号化ディスクに直接変換することはできません。

(オプション) 手順1: ECSインスタンスにKMSへのアクセスを許可する

BYOK機能を使用して作成されたキーを使用する場合は、まずECSインスタンスにKMSへのアクセスを許可する必要があります。 これを行うには、Resource Access Management (RAM) ロールを作成し、ロールに必要な権限を付与します。 RAMユーザーに必要な権限を付与するには、次の操作を実行します。

  1. KMSにアクセスするためのRAMロールを作成します。 AliyunECSDiskEncryptDefaultRoleロールがすでに存在する場合は、権限を付与します。

    1. にログインします。Resource Access Management (RAM) コンソールAlibaba CloudアカウントまたはRAM管理者アカウントを使用します。

    2. 左側のナビゲーションウィンドウで、アイデンティティ > ロール.

    3. On theロールページをクリックします。ロールの作成.

    4. On theロールの作成ページを選択します。Alibaba Cloudサービス[信頼できるエンティティの選択] セクションで、次へ.

    5. 選択通常のサービスロールRole Typeパラメーターの

    6. 入力AliyunECSDiskEncryptDefaultRoleで、RAMロール名フィールドと選択Elastic Compute Serviceを信頼できるサービスとして使用します。

    7. クリックOKをクリックし、閉じる.

  2. 前の手順で作成したRAMロールに権限を付与します。

    1. 左側のナビゲーションペインで、[権限管理] > [権限付与] を選択します。 次に、[権限付与] をクリックします。

    2. [権限付与] パネルで、[リソーススコープ] として [アカウント] を選択します。 PrincipalフィールドにAliyunECSDiskEncryptDefaultRoleと入力し、ロールを選択します。

    1. システムポリシーAliyunKMSFullAccessを選択するか、ビジネス要件に基づいてAliyunECSDiskEncryptCustomizedPolicyという名前のカスタムポリシーを作成します。

      重要

      AliyunKMSFullAccessポリシーは完全な権限を付与します。 詳細なアクセス制御が必要な場合は、次の手順を実行して、AliyunECSDiskEncryptCustomizedPolicyという名前のカスタムポリシーを作成します。

      展開して、カスタムポリシーAliyunECSDiskEncryptCustomizedPolicyを作成する方法を表示します

      1. 左側のナビゲーションウィンドウで、権限 > ポリシー.

      2. [ポリシー] ページで [ポリシーの作成] をクリックします。

      3. [ポリシーの作成] ページで、[JSON] タブをクリックし、次のコンテンツをコードエディターに追加します。

        {
            "Version": "1",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "kms:DescribeKey",
                        "kms:GenerateDataKey",
                        "kms:Decrypt",
                        "kms:TagResource"
                    ],
                    "Resource": "*"
                }
            ]
        }
      4. [OK] をクリックします。

  3. では、ポリシーの作成ダイアログで、ポリシー名を入力し、OK.

手順2: ディスクボリュームの暗号化の設定

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

  1. StorageClassを作成します。

    1. 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に設定されている場合、このパラメーターは有効になりません。

    2. 次のコマンドを実行してStorageClassを作成します。

      kubectl create -f sc-kms.yaml
    3. 次のコマンドを実行して、StorageClassを照会します。

      kubectl get sc csi-disk-encrypted

      期待される出力:

      NAME                 PROVISIONER                       AGE
      csi-disk-encrypted   diskplugin.csi.alibabacloud.com   9m5s
  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

      期待される出力:

      NAME             STATUS   VOLUME                        CAPACITY   ACCESS MODES   STORAGECLASS             AGE
      disk-pvc         Bound    d-wz92s6d95go6ki9x****        25Gi       RWO            csi-disk-encrypted       10m
    4. 次のコマンドを実行して、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 **** であることを示しています。

  3. ディスクが暗号化されているかどうかを確認します。

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

    2. 左側のナビゲーションウィンドウで、ストレージ&スナップショット > ブロックストレージ.

    3. On theディスクページで、d-wz92s6d95go6ki9x ****ディスクは暗号化状態になります。