Recomenda-se a criptografia de dados para cenários que exigem alta segurança ou conformidade. Use Customer Master Keys (CMKs) do Key Management Service (KMS) ou chaves gerenciadas pelo Object Storage Service (OSS) para criptografar volumes OSS em clusters ACK. Essa prática garante a privacidade dos dados e oferece controle sobre suas informações.
Métodos de criptografia
A criptografia de volumes OSS pode ocorrer via criptografia no lado do servidor (SSE) ou no lado do cliente. O ACK suporta apenas SSE.
Criptografia no lado do servidor: o OSS criptografa os dados antes de armazená-los em disco no data center e os descriptografa automaticamente durante o download dos objetos.
Criptografia no lado do cliente: use um SDK de criptografia no lado do cliente para criptografar dados localmente antes de enviá-los ao OSS.
O OSS oferece dois métodos de criptografia no lado do servidor. Apenas um método pode ser aplicado por objeto por vez.
-
Uso de CMKs do KMS para criptografia (SSE-KMS)
Usar a CMK padrão: ao enviar um objeto, defina o cabeçalho de solicitação
X-OSS-server-side-encryptioncomoKMSe não especifique um ID de CMK.Usar um ID de CMK específico: ao enviar um objeto, defina o cabeçalho de solicitação
X-OSS-server-side-encryptioncomoKMSe configureX-OSS-server-side-encryption-key-idcom seuCMK ID.
ImportanteO uso de chaves do KMS gera uma pequena taxa por chamadas de API. Para mais informações, consulte Billing of KMS 1.0.
Este método é econômico, pois o OSS não transmite dados pela rede até o servidor KMS para criptografia e descriptografia.
-
Uso de chaves totalmente gerenciadas pelo OSS para criptografia (SSE-OSS)
Nesta abordagem, as chaves são totalmente gerenciadas pelo OSS e a criptografia funciona como um atributo do objeto.
O OSS gera e gerencia as chaves de criptografia de dados e utiliza o algoritmo forte AES-256, padrão da indústria.
Ao enviar um objeto, defina o cabeçalho de solicitação
X-OSS-server-side-encryptioncomoAES256.
Defina os parâmetros de criptografia de um volume OSS por meio da ferramenta ossfs. Essas configurações são aplicadas durante a montagem do volume persistente (PV).
Para mais detalhes sobre como configurar e instalar o ossfs, consulte Install ossfs 1.0 .
Pré-requisitos
-
Os componentes csi-plugin e csi-provisioner devem estar instalados.
Os componentes CSI vêm instalados por padrão. Verifique se eles permanecem ativos. Consulte o status de instalação na página . Recomendamos upgrading the CSI components para a versão mais recente.
-
Create a bucket. O bucket e o cluster precisam pertencer à mesma conta Alibaba Cloud.
Para montar um bucket OSS de outra conta, recomendamos o uso de RRSA para autenticação. Para mais informações, consulte How do I mount an OSS bucket from a different account?
Cenário 1: Usar a CMK padrão do KMS
-
Copie o conteúdo abaixo para um arquivo chamado 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>" # Replace with your AccessKey ID akSecret: "<YourAccessKey Secret>" # Replace with your AccessKey Secret path: "/" encrypted: "kms"Parâmetro
Descrição
akIdAccessKey ID
akSecretAccessKey Secret
encryptedMétodo de criptografia do volume:
kms: criptografia KMS.aes256: criptografia AES-256.
-
Crie o volume criptografado.
kubectl create -f kms-cmk-default.yaml -
Visualize o volume criptografado criado.
kubectl get pv
Cenário 2: Usar um ID de CMK do KMS específico
1. Configurar permissões de acesso ao KMS
Para criptografar um objeto OSS com uma CMK específica, conceda permissão de uso dessa CMK ao usuário ou função RAM associado à AccessKey do PV. Para mais informações, consulte Server-side encryption.
Antes de começar, certifique-se de ter created a RAM user ou created a RAM role .
Faça login no console RAM usando uma conta Alibaba Cloud ou como administrador RAM.
No painel de navegação à esquerda, selecione ou Role.
-
Localize o usuário RAM desejado e clique em Add Permissions na coluna Actions. Alternativamente, localize a função RAM alvo e clique em Attach Policy na coluna Actions. Siga as instruções na tela para conceder as permissões. Anexe a política de sistema AliyunKMSFullAccess ou uma política personalizada chamada AliyunOSSEncryptCustomizedPolicy.
A permissão AliyunKMSFullAccess oferece acesso amplo. Para um controle mais granular, create a custom policy chamada AliyunOSSEncryptCustomizedPolicy com o seguinte conteúdo.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*" // This allows the principal to use all KMS keys under this Alibaba Cloud account. To allow access to only a specific CMK, replace the wildcard resource with the ARN of that CMK. ] } ] }
2. Criar o volume criptografado
-
Crie um arquivo chamado 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>" # Replace with your AccessKey ID akSecret: "<YourAccessKey Secret>" # Replace with your AccessKey Secret path: "/" encrypted: "kms" kmsKeyId: "<YourCMKID>" # Replace with your CMK ID -
Crie o volume criptografado.
kubectl create -f kms-cmk.yaml -
Visualize o volume criptografado criado.
kubectl get pv
Cenário 3: Usar chaves gerenciadas pelo OSS
-
Crie um arquivo chamado 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>" # Replace with your AccessKey ID akSecret: "<YourAccessKey Secret>" # Replace with your AccessKey Secret path: "/" encrypted: "aes256" -
Crie o volume criptografado.
kubectl create -f sse-oss.yaml -
Visualize o volume criptografado criado.
kubectl get pv