Le chiffrement des données est recommandé pour les scénarios exigeant un niveau élevé de sécurité ou de conformité. Utilisez des clés principales client (CMK) du service Key Management Service (KMS) ou des clés gérées par le service Object Storage Service (OSS) pour chiffrer les volumes OSS dans les clusters ACK. Cette approche garantit la confidentialité des données et vous permet d'en garder le contrôle.
Méthodes de chiffrement
Le chiffrement des volumes OSS se divise en deux catégories : le chiffrement côté serveur (SSE) et le chiffrement côté client. ACK prend uniquement en charge le SSE.
Chiffrement côté serveur : OSS chiffre les données avant leur enregistrement sur les disques d'un centre de données, puis les déchiffre automatiquement lorsque vous téléchargez les objets.
Chiffrement côté client : utilisez un kit de développement logiciel (SDK) de chiffrement côté client pour chiffrer les données localement avant de les envoyer vers OSS.
OSS propose deux méthodes de chiffrement côté serveur adaptées à différents cas d'usage. Un objet ne peut être associé qu'à une seule méthode de chiffrement côté serveur à la fois.
-
Utilisation de CMK KMS pour le chiffrement (SSE-KMS)
Utilisation de la CMK par défaut : lors du téléchargement d'un objet, définissez l'en-tête de requête
X-OSS-server-side-encryptionsurKMSsans spécifier d'ID de CMK.Utilisation d'un ID de CMK spécifique : lors du téléchargement d'un objet, définissez l'en-tête de requête
X-OSS-server-side-encryptionsurKMSet renseignez le paramètreX-OSS-server-side-encryption-key-idavec l'ID de la CMK.
ImportantL'utilisation des clés KMS entraîne des frais minimes liés aux appels API. Pour plus d'informations sur la facturation, consultez la rubrique Facturation de KMS 1.0.
Cette solution s'avère économique, car les données n'ont pas besoin de transiter par le réseau vers le serveur KMS pour être chiffrées ou déchiffrées.
-
Utilisation de clés gérées par OSS pour le chiffrement (SSE-OSS)
Cette méthode de chiffrement s'appuie sur des clés gérées par OSS. Le chiffrement constitue une propriété de l'objet.
OSS génère et gère les clés de chiffrement des données en utilisant l'algorithme de chiffrement standard du secteur AES-256.
Lors du téléchargement d'un objet, définissez l'en-tête de requête
X-OSS-server-side-encryptionsurAES256.
Configurez les paramètres de chiffrement d'un volume OSS à l'aide de l'outil ossfs. La configuration devient effective au moment du montage du volume persistant (PV).
Pour savoir comment configurer et installer ossfs, reportez-vous à la rubrique Installation d'ossfs 1.0 .
Prérequis
-
Les composants csi-plugin et csi-provisioner sont installés.
Les composants CSI sont installés par défaut. Vérifiez qu'ils sont toujours présents. Consultez leur statut d'installation sur la page . Nous vous recommandons de mettre à jour les composants CSI vers la dernière version disponible.
-
Un bucket OSS a été créé. Pour plus de détails, consultez la rubrique Création de buckets. Le bucket et le cluster doivent appartenir au même compte Alibaba Cloud.
ImportantN'utilisez pas OSS avec des comptes différents.
Le service Key Management Service (KMS) est activé.
Scénario 1 : Utiliser la CMK par défaut hébergée dans KMS pour le chiffrement
-
Copiez le contenu suivant dans un fichier nommé
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"Paramètre
Description
akIdID de la clé AccessKey
akSecretSecret de la clé AccessKey
encryptedMéthode de chiffrement appliquée au volume :
kms: chiffrement KMS.aes256: chiffrement AES-256.
-
Créez le volume chiffré.
kubectl create -f kms-cmk-default.yaml -
Consultez le volume chiffré nouvellement créé.
kubectl get pv
Scénario 2 : Utiliser un ID de CMK spécifique hébergé dans KMS pour le chiffrement
1. Configurer les autorisations d'accès à KMS
Pour chiffrer un objet OSS avec un ID de CMK spécifique géré par KMS, accordez des autorisations d'accès à KMS à l'utilisateur RAM ou au rôle associé à la clé AccessKey du PV. Pour plus de détails, reportez-vous à la rubrique Chiffrement côté serveur.
Avant de commencer, assurez-vous d'avoir créé un utilisateur Resource Access Management (RAM) ou créé un rôle RAM .
Dans le volet de navigation de gauche, sélectionnez Identities > Users ou Roles.
-
Repérez l'utilisateur RAM cible et cliquez sur Add Permissions dans la colonne Actions. Si vous travaillez avec un rôle RAM, localisez-le et cliquez sur Grant Permission dans la colonne Actions. Suivez les instructions affichées à l'écran pour ajouter les autorisations. Choisissez la stratégie système AliyunKMSFullAccess ou la stratégie personnalisée AliyunOSSEncryptCustomizedPolicy.
L'autorisation AliyunKMSFullAccess offre un accès étendu. Si vous avez besoin d'un contrôle d'accès plus granulaire, créez une stratégie personnalisée nommée AliyunOSSEncryptCustomizedPolicy avec le contenu suivant.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*" // This allows the entity to call all KMS keys under this Alibaba Cloud account ID. If you want to allow the use of only a specific CMK, enter the corresponding CMK ID. ] } ] }
2. Créer le volume chiffré
-
Créez un fichier nommé
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. -
Créez le volume chiffré.
kubectl create -f kms-cmk.yaml -
Consultez le volume chiffré nouvellement créé.
kubectl get pv
Scénario 3 : Utiliser des clés entièrement gérées par OSS pour le chiffrement
-
Créez un fichier nommé
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" -
Créez le volume chiffré.
kubectl create -f sse-oss.yaml -
Consultez le volume chiffré nouvellement créé.
kubectl get pv