高いデータセキュリティやコンプライアンスが求められるシナリオでは、データの暗号化が推奨されます。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-idをCMK 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 のインストール」をご参照ください。
前提条件
CSI プラグインがクラスターにインストールされていること。スペックアップが必要な場合は、「csi-plugin と csi-provisioner のスペックアップ」をご参照ください。
説明クラスターで FlexVolume を使用している場合は、FlexVolume が非推奨になったため、CSI にスペックアップしてください。詳細については、「FlexVolume から CSI へのスペックアップ」をご参照ください。ストレージコンポーネントのタイプを確認するには、 に移動し、[ストレージ] タブをクリックします。
OSS バケットを作成済みであること。詳細については、「OSS バケットの作成」をご参照ください。バケットとクラスターは、同じ Alibaba Cloud アカウントに属している必要があります。
説明異なるアカウント間で OSS バケットをマount するには、RRSA 認証を使用します。詳細については、「アカウント間で OSS バケットをマウントする方法」をご参照ください。
シナリオ 1: KMS でホストされているデフォルトの CMK を使用した暗号化
次の内容を 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"パラメーター
説明
akIdAccessKey ID
akSecretAccessKey Secret
encryptedボリュームの暗号化メソッド:
kms: KMS 暗号化。aes256: AES-256 暗号化。
暗号化されたボリュームを作成します。
kubectl create -f kms-cmk-default.yaml作成された暗号化ボリュームを表示します。
kubectl get pv
シナリオ 2: KMS でホストされている指定の CMK ID を使用した暗号化
1. KMS アクセス権限の構成
指定された KMS で管理される CMK ID を使用して OSS オブジェクトを暗号化するには、PV の AccessKey の RAM ユーザーまたはロールに KMS のアクセス権限を付与する必要があります。 詳細については、「サーバー側の暗号化」をご参照ください。
開始する前に、「Resource Access Management (RAM) ユーザーの作成」または「RAM ロールの作成」が完了していることを確認してください。
Alibaba Cloud アカウントまたは管理者権限を持つ RAM ユーザーを使用して RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 または [ロール] を選択します。
対象の 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. 暗号化されたボリュームの作成
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 と置き換えます。暗号化されたボリュームを作成します。
kubectl create -f kms-cmk.yaml作成された暗号化ボリュームを表示します。
kubectl get pv
シナリオ 3: OSS が完全に管理するキーを使用した暗号化
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"暗号化されたボリュームを作成します。
kubectl create -f sse-oss.yaml作成された暗号化ボリュームを表示します。
kubectl get pv