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

Container Service for Kubernetes:OSSボリュームの暗号化

最終更新日:Dec 19, 2024

データ暗号化は、高いセキュリティが必要なシナリオやコンプライアンス要件があるシナリオに適しています。 キー管理インフラストラクチャを作成または保守する必要はありません。 暗号化されたストレージは、データがECS (Elastic Compute Service) インスタンスに保存されるときに、データのプライバシーと自律性を確保するのに役立ちます。 このトピックでは、Key Management Service (KMS) でホストされているカスタマーマスターキー (CMK) とObject Storage Service (OSS) でホストされているキーを使用して、OSSボリュームに保存されているデータを暗号化する方法について説明します。

前提条件

  • CSIプラグインはデフォルトでクラスターにインストールされます。 更新方法の詳細については、「csi-pluginとcsi-provisionerの更新」をご参照ください。

    説明

    クラスターにFlexVolumeがインストールされている場合は、FlexVolumeが非推奨になっているため、まずFlexvolumeからCSIに移行してください。 コンソールの [Operatioins] > [Add-ons][ストレージ] タブに移動して、ボリュームプラグインを確認できます。

  • OSSバケットが作成されます。 詳細については、「バケットの作成」をご参照ください。

    説明

    OSSバケットとECSインスタンスが同じリージョンにデプロイされている場合は、内部エンドポイントを選択します。

  • KMS が有効化されていること。 詳細については、「専用KMSインスタンスの購入」をご参照ください。

  • kubectlクライアントがACKクラスターに接続されています。 詳細については、「手順2: クラスター資格情報の種類の選択」をご参照ください。

暗号化方法

OSSボリュームは、サーバー側暗号化とクライアント側暗号化をサポートしています。 ACKはサーバー側の暗号化のみをサポートします。

  • サーバー側の暗号化では、データがAlibaba Cloudデータセンターのディスクに保存される前にデータが暗号化され、オブジェクトのダウンロード時にデータが自動的に復号化されます。

  • クライアント側の暗号化を使用すると、データがOSSにアップロードされる前に、SDKを使用してクライアント側のデータを暗号化できます。

次の表に、さまざまなシナリオで使用できるサーバー側の暗号化方法を示します。

  • デフォルトのCMKまたは指定されたCMKを使用してOSSオブジェクトを暗号化する

    • デフォルトのCMKを使用してOSSオブジェクトを暗号化します。HTTP X-OSS-server-side-encryptionKMSに設定し、オブジェクトをアップロードするときにCMK IDを設定しないでください。

    • 指定されたCMKを使用してOSSオブジェクトを暗号化します。オブジェクトをアップロードするとき、HTTP X-OSS-server-side-encryptionKMSに設定し、X-OSS-server-side-encryption-key-idCMK IDに設定します。

    重要

    KMSキーでデータを暗号化または復号化するAPI操作を呼び出すと、課金されます。 詳細については、「KMSの課金」をご参照ください。

    この方法は、暗号化と復号化のためにKMSサーバーにデータを送信する必要がないため、費用対効果が高くなります。

  • OSSホストキーを使用したOSSオブジェクトの暗号化

    • この暗号化方法は、OSSホストキーを使用し、オブジェクトの属性です。

    • OSSは、業界標準AES-256強力な暗号化アルゴリズムに基づいて、データ暗号化に使用されるキーを生成および管理します。

    • オブジェクトをアップロードするときは、HTTP X-OSS-server-side-encryptionAES256に設定する必要があります。

オブジェクトに対して一度に使用できるサーバー側の暗号化方法は1つだけです。

OSSボリュームの暗号化

OSSFSを使用して、OSSボリュームの暗号化パラメーターを設定できます。 パラメーターは、OSSボリュームが永続ボリューム (PV) としてマウントされている場合に有効になります。 OSSFSのインストールとセットアップの詳細については、「OSSFSのインストールとセットアップ」をご参照ください。

OSSFSでは、次の方法を使用してOSSオブジェクトを暗号化できます。

方法1: デフォルトのKMSホストCMKを使用してOSSオブジェクトを暗号化

  1. kms-cmk-default.yamlという名前のファイルを作成し、次のコードをファイルにコピーします。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: oss-csi-pv
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadOnlyMany
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: oss-csi-pv
        volumeAttributes:
          bucket: "python"
          url: "oss-cn-hangzhou.aliyuncs.com"
          otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
          akId: "<YourAccessKey ID>"           # Replace with your AccessKey ID. 
          akSecret: "<YourAccessKey Secret>"   # Replace with your AccessKey secret. 
          path: "/"
          encrypted: "kms"

    パラメーター

    説明

    akId

    AccessKey ID

    akSecret

    AccessKey Secret

    暗号化

    暗号化方法を指定します。

    • kms: KMS。

    • aes256: AES-256アルゴリズム。

  2. 次のコマンドを実行して、暗号化されたOSSボリュームを作成します。

    kubectl create -f kms-cmk-default.yaml
  3. 暗号化されたOSSボリュームを永続ボリュームページに移動します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ボリューム] > [ボリューム] を選択します。

方法2: 指定されたKMSホストCMKを使用してOSSオブジェクトを暗号化

  1. RAMユーザーにKMSへのアクセス権限を付与します。

    指定されたCMKを使用してOSSオブジェクトを暗号化するには、PVが使用するAccessKeyペアのRAMユーザーにKMSへのアクセスを許可する必要があります。 詳細については、「サーバー側の暗号化」をご参照ください。

    1. にログインします。RAMコンソールAlibaba Cloudアカウントを使用します。

      説明

      Alibaba Cloudアカウントには、アカウント内のリソースに対する完全な管理権限があります。 RAMユーザーを作成し、RAMユーザーにAdministratorAccessポリシーをアタッチできます。 その後、RAMユーザーをアカウント管理者として使用して、Alibaba cloudアカウントに属するすべてのクラウドリソースを管理できます。 詳細については、「アカウント管理者としてのRAMユーザーの作成」をご参照ください。

    2. 左側のナビゲーションウィンドウで、[ID] > [ユーザー] を選択します。

    3. On theユーザーページで、権限を付与するRAMユーザーを見つけ、権限の追加で、アクション列を作成します。

    4. システムポリシーAliyunKMSFullAccessを選択するか、AliyunOSSEncryptCustomizedPolicyという名前のカスタムポリシーを作成します。.

      重要

      AliyunKMSFullAccessポリシーは、完全な権限を提供します。 詳細なアクセス制御が必要な場合は、次の手順を実行してAliyunOSSEncryptCustomizedPolicyという名前のカスタムポリシーを作成します。 詳細については、「カスタムポリシーの作成」をご参照ください。

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "kms:List*",
              "kms:DescribeKey",
              "kms:GenerateDataKey",
              "kms:Decrypt"
            ],
            "Resource": [
              "acs:kms:*:141661496593****:*" // The RAM user is allowed to use all CMKs that belong to the Alibaba Cloud account. To allow the RAM user to use only the specified CMK, enter the CMK ID. 
            ]
          }
        ]
      }
    5. [権限付与] をクリックします。 次に、[閉じる] をクリックします。

  2. kms-cmk.yamlという名前のファイルを作成し、次のコードをファイルにコピーします。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: oss-csi-pv
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadOnlyMany
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: oss-csi-pv
        volumeAttributes:
          bucket: "python"
          url: "oss-cn-hangzhou.aliyuncs.com"
          otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other"
          akId: "<YourAccessKey ID>"           # Replace with your AccessKey ID. 
          akSecret: "<YourAccessKey Secret>"   # Replace with your AccessKey secret. 
          path: "/"
          encrypted: "kms"
          kmsKeyId: "<YourKMS KeyID>"          # Replace with your KMS ID.
  3. 次のコマンドを実行して、暗号化されたOSSボリュームを作成します。

    kubectl create -f kms-cmk.yaml
  4. 暗号化されたOSSボリュームを永続ボリュームページに移動します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ボリューム] > [ボリューム] を選択します。

OSSホストキーを使用したOSSオブジェクトの暗号化

  1. sse-oss.yamlという名前のファイルを作成し、次のコードをファイルにコピーします。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: oss-csi-pv
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteOnce
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: oss-csi-pv
        volumeAttributes:
          bucket: "python"
          url: "oss-cn-hangzhou.aliyuncs.com"
          otherOpts: "-o max_stat_cache_size=0 -o allow_other"
          akId: "<YourAccessKey ID>"             # Replace with your AccessKey ID. 
          akSecret: "<YourAccessKey Secret>"     # Replace with your AccessKey secret. 
          path: "/"
          encrypted: "aes256"
  2. 次のコマンドを実行して、暗号化されたOSSボリュームを作成します。

    kubectl create -f sse-oss.yaml
  3. 暗号化されたOSSボリュームを永続ボリュームページに移動します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ボリューム] > [ボリューム] を選択します。