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

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

最終更新日:Nov 09, 2025

高いデータセキュリティやコンプライアンスが求められるシナリオでは、データの暗号化が推奨されます。Key Management Service (KMS) のカスタマーマスターキー (CMK) または Object Storage Service (OSS) が管理するキーを使用して、ACK クラスター内の OSS ボリュームを暗号化できます。このメソッドは、データのプライバシーとコントロールを確保するのに役立ちます。

暗号化メソッド

OSS ボリュームの暗号化は、サーバ側暗号化 (SSE) またはクライアント側暗号化に分類できます。ACK は SSE のみをサポートしています。

  • サーバ側暗号化: OSS は、データセンターのディスクに保存される前にデータを暗号化し、オブジェクトをダウンロードするときにデータを自動的に復号します。

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

OSS は、さまざまなシナリオに対応するために 2 つのサーバ側暗号化メソッドを提供します。オブジェクトに対して一度に 1 つのサーバ側暗号化メソッドのみを使用できます。

  • KMS の CMK を使用した暗号化 (SSE-KMS)

    • デフォルトの CMK を使用する: オブジェクトをアップロードするときに、X-OSS-server-side-encryption リクエストヘッダーを KMS に設定し、CMK ID を指定しません。

    • 指定された CMK ID を使用する: オブジェクトをアップロードするときに、X-OSS-server-side-encryption リクエストヘッダーを KMS に設定し、X-OSS-server-side-encryption-key-idCMK ID に設定します。

    重要

    KMS キーを使用すると、API 呼び出しに少額の料金が発生します。課金の詳細については、「KMS 1.0 の課金」をご参照ください。

    このメソッドは、暗号化と復号のためにデータをネットワーク経由で KMS サーバーに送信する必要がないため、費用対効果が高いです。

  • OSS が管理するキーを使用した暗号化 (SSE-OSS)

    • この暗号化メソッドは、OSS によって管理されるキーを使用します。暗号化はオブジェクトの属性です。

    • OSS はデータ暗号化キーを生成および管理し、業界標準の AES-256 暗号化アルゴリズムを使用します。

    • オブジェクトをアップロードするときは、X-OSS-server-side-encryption リクエストヘッダーを AES256 に設定します。

ossfs ツールを使用して OSS ボリュームの暗号化パラメーターを設定できます。この構成は、永続ボリューム (PV) がマウントされると有効になります。

ossfs の構成とインストールの詳細については、「ossfs 1.0 のインストール」をご参照ください。

前提条件

シナリオ 1: KMS でホストされているデフォルトの CMK を使用した暗号化

  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=100000 -o allow_other"
          akId: "<YourAccessKey ID>"           # AccessKey ID と置き換えます。
          akSecret: "<YourAccessKey Secret>"   # AccessKey Secret と置き換えます。
          path: "/"
          encrypted: "kms"

    パラメーター

    説明

    akId

    AccessKey ID

    akSecret

    AccessKey Secret

    encrypted

    ボリュームの暗号化メソッド:

    • kms: KMS 暗号化。

    • aes256: AES-256 暗号化。

  2. 暗号化されたボリュームを作成します。

    kubectl create -f kms-cmk-default.yaml
  3. 作成された暗号化ボリュームを表示します。

    kubectl get pv

シナリオ 2: KMS でホストされている指定の CMK ID を使用した暗号化

1. KMS アクセス権限の構成

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

開始する前に、「Resource Access Management (RAM) ユーザーの作成」または「RAM ロールの作成」が完了していることを確認してください。
  1. Alibaba Cloud アカウントまたは管理者権限を持つ RAM ユーザーを使用して RAM コンソールにログインします。

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

  3. 対象の RAM ユーザーを見つけ、[操作] 列の [権限の追加] をクリックします。または、対象の RAM ロールを見つけ、[操作] 列の [権限付与] をクリックします。画面の指示に従って権限を追加します。AliyunKMSFullAccess システムポリシーまたは AliyunOSSEncryptCustomizedPolicy カスタムポリシー を選択できます。

    AliyunKMSFullAccess 権限は広範なアクセスを提供します。詳細なアクセスの制御が必要な場合は、「カスタムポリシーの作成」に従って、AliyunOSSEncryptCustomizedPolicy という名前のカスタムポリシーを以下の内容で作成できます。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:List*",
            "kms:DescribeKey",
            "kms:GenerateDataKey",
            "kms:Decrypt"
          ],
          "Resource": [
            "acs:kms:*:141661496593****:*"  // これにより、エンティティはこの Alibaba Cloud アカウント ID の下のすべての KMS キーを呼び出すことができます。特定の CMK のみの使用を許可する場合は、対応する CMK ID を入力します。
          ]
        }
      ]
    }

2. 暗号化されたボリュームの作成

  1. 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=100000 -o allow_other"
          akId: "<YourAccessKey ID>"           # AccessKey ID と置き換えます。
          akSecret: "<YourAccessKey Secret>"   # AccessKey Secret と置き換えます。
          path: "/"
          encrypted: "kms"
          kmsKeyId: "<YourCMKID>"          # CMK ID と置き換えます。
  2. 暗号化されたボリュームを作成します。

    kubectl create -f kms-cmk.yaml
  3. 作成された暗号化ボリュームを表示します。

    kubectl get pv

シナリオ 3: OSS が完全に管理するキーを使用した暗号化

  1. sse-oss.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=100000 -o allow_other"
          akId: "<YourAccessKey ID>"             # AccessKey ID と置き換えます。
          akSecret: "<YourAccessKey Secret>"     # AccessKey Secret と置き換えます。
          path: "/"
          encrypted: "aes256"
  2. 暗号化されたボリュームを作成します。

    kubectl create -f sse-oss.yaml
  3. 作成された暗号化ボリュームを表示します。

    kubectl get pv