Tous les produits
Search
Centre de documentation

Hologres:Encrypt data at rest

Dernière mise à jour :Aug 31, 2026

Chiffrez les données au repos dans Hologres à l'aide de clés gérées par KMS afin de protéger les données stockées et de répondre aux exigences de conformité. Cette rubrique explique le fonctionnement du chiffrement au repos, ses limites, la procédure pour l'activer au niveau de la base de données et de la table, ainsi que la méthode pour remplacer une clé KMS en migrant les données vers une nouvelle base de données.

Pourquoi chiffrer les données au repos avec KMS

Key Management Service (KMS) est un service Alibaba Cloud qui crée, stocke et gère des clés de chiffrement pour protéger les données sensibles au repos et en transit.

Hologres utilise des clés KMS pour chiffrer les données stockées dans une base de données. Le chiffrement au repos protège les données au niveau de la couche de stockage contre les attaques externes et aide à respecter les réglementations et les exigences de conformité des entreprises.

Fonctionnement

Hologres chiffre et déchiffre les données à l'aide de clés gérées par KMS. Le mécanisme de chiffrement fonctionne comme suit :

  • Hologres chiffre et déchiffre les données stockées par base de données via KMS. Les données sont chiffrées au niveau de la couche de stockage, et seule la clé correspondante peut les déchiffrer.

  • KMS génère et gère vos clés tout en assurant leur sécurité.

  • Hologres prend en charge les algorithmes de chiffrement AES256, AESCTR et RC4.

  • Hologres chiffre et déchiffre les données uniquement avec une clé Bring Your Own Key (BYOK). Deux types de matériel de clé sont pris en charge : le matériel de clé généré par KMS lors de la création d'une clé maître cliente (CMK) et le matériel de clé que vous importez.

    Créez une clé BYOK dans KMS et sélectionnez-la dans Hologres pour chiffrer une base de données. Pour plus d'informations sur la création d'une clé BYOK dans KMS, consultez Créer une clé.

  • Lors des lectures et écritures de données, Hologres appelle les opérations API KMS pour obtenir les informations de clé et met ces informations en cache pendant 24 heures par défaut.

Notes d'utilisation

  • Portée du chiffrement — Le chiffrement au repos s'applique uniquement aux tables créées après l'activation de la fonctionnalité. Les tables créées avant l'activation ne sont pas chiffrées.

  • Types de tables pris en charge — Seules les tables orientées colonne et la partie orientée colonne des tables hybrides ligne-colonne sont chiffrées. Les autres types de tables ne sont pas chiffrés. Après avoir activé le chiffrement au repos, vous pouvez toujours créer des tables étrangères Hologres dans MaxCompute pour lire et écrire des données.

  • Clés au niveau de la table — Hologres V2.0 et versions ultérieures prennent en charge un paramètre de chiffrement distinct pour chaque table, ce qui permet de chiffrer différentes tables avec différentes clés KMS. Pour plus d'informations, consultez Paramètres de chiffrement au niveau de la table.

  • Performances — Le chiffrement et le déchiffrement ajoutent une surcharge de traitement. Le chiffrement au repos réduit les performances des requêtes et des écritures d'environ 20 % à 40 %, selon les caractéristiques des requêtes.

  • Opérations sur les clés — Les opérations sur les clés KMS, telles que la désactivation ou la suppression d'une clé BYOK, affectent le chiffrement et le déchiffrement dans Hologres. Étant donné que Hologres met en cache les informations de clé, ces opérations prennent effet dans un délai de 24 heures.

  • Disponibilité des clés — Si la clé KMS utilisée par une table chiffrée est désactivée ou invalide, la table devient illisible et inaccessible en écriture.

  • Remplacement de clé — Hologres ne prend pas en charge le changement de clé KMS d'une base de données déjà chiffrée. Pour chiffrer les données avec une autre clé, créez une nouvelle base de données et migrez-y les données. Pour plus d'informations, consultez Rotation de la clé KMS et migration des données.

  • Désactivation du chiffrement — La désactivation du chiffrement au repos pour une base de données ne déchiffre pas les données déjà chiffrées. Pour plus d'informations, consultez Désactiver le chiffrement au repos pour une base de données.

Facturation

Le chiffrement au repos engendre des frais KMS car Hologres appelle les opérations API KMS pour obtenir les informations de clé. Pour plus d'informations sur les tarifs, consultez Facturation KMS.

Prérequis

  • Votre instance Hologres exécute la version V1.1 ou ultérieure. Seules les versions Hologres V1.1 et ultérieures prennent en charge le chiffrement au repos. Si votre instance exécute une version antérieure, mettez-la à niveau. Pour résoudre les erreurs de préparation de la mise à niveau, consultez Résolution des erreurs de préparation de la mise à niveau, ou rejoignez le groupe DingTalk Hologres pour obtenir de l'aide. Pour plus d'informations, consultez Comment obtenir plus de support en ligne ?.

  • Les instances antérieures à la version V1.3.31 nécessitent des configurations backend pour le chiffrement au repos. Ce n'est pas le cas pour les instances V1.3.31 et ultérieures. (Recommandé) Mettre à niveau votre instance.

  • KMS est activé dans votre région.

  • Un rôle RAM est créé. Vous spécifiez le nom de ce rôle dans le paramètre de chiffrement.

Activer le chiffrement au repos pour une base de données

  1. Créez une politique personnalisée qui accorde à Hologres les permissions KMS requises.

    1. Connectez-vous à la console RAM. Dans le volet de navigation de gauche, choisissez Permissions > Policies. Sur la page Policies, cliquez sur Create Policy.

      权限策略

    2. Sur la page Create Policy, cliquez sur JSON. Dans l'éditeur de code, saisissez la politique suivante, puis définissez Name sur AliyunHologresEncryptionDefaultRolePolicy.

      创建权限策略

      Cette politique accorde à Hologres les permissions KMS nécessaires pour obtenir et déchiffrer les clés de données lors de l'interrogation des données MaxCompute chiffrées.

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "kms:Encrypt",
                      "kms:Decrypt",
                      "kms:GenerateDataKey",
                      "kms:DescribeKey"
                  ],
                  "Resource": "acs:kms:*:*:*/*",
                  "Effect": "Allow"
              }
          ]
      }
    3. Cliquez sur OK. La politique personnalisée est créée.

  2. Créez un rôle RAM pour Hologres et attachez la politique.

    Hologres a besoin d'un rôle RAM pour appeler les API KMS en votre nom. Créez le rôle et attachez la politique créée à l'étape 1.

    1. Connectez-vous à la console RAM. Dans le volet de navigation de gauche, choisissez Identities > Roles.

    2. Sur la page Roles, cliquez sur Create Role. Définissez Principal Type sur Cloud Service et Principal Name sur Hologres.

    3. Cliquez sur OK. Dans la boîte de dialogue, saisissez AliyunHologresEncryptionDefaultRole dans le champ Role Name, puis cliquez sur OK.

      创建角色

    4. Sur la page des détails du rôle, cliquez sur Grant Permission.

    5. Dans le panneau Grant Permission, définissez Resource Scope sur Account. Pour Policy, sélectionnez AliyunHologresEncryptionDefaultRolePolicy.

      添加权限

    6. Cliquez sur OK. Sur la page des détails du rôle, cliquez sur l'onglet Trust Policy pour vérifier la politique de confiance.

  3. Créez une clé.

    Pour plus de détails, consultez Créer une clé.

    Hologres prend uniquement en charge les clés symétriques de type Aliyun_AES_256.

  4. Configurez le paramètre de chiffrement.

    1. Connectez-vous à l'instance de base de données pour laquelle vous souhaitez activer le chiffrement au repos. Pour obtenir des instructions, consultez Se connecter à une instance de base de données.

    2. Sur la page Ad-hoc Query, définissez Instance Name et Database, saisissez l'instruction suivante dans l'éditeur de requête SQL, puis cliquez sur Run.

ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';

Le tableau suivant décrit les paramètres.

Parameter

Description

db_name

Le nom de la base de données que vous souhaitez chiffrer.

encryption_type

L'algorithme de chiffrement. Valeurs valides : AES256, AESCTR et RC4.

cmk_id

L'ID de la clé. Connectez-vous à la console Key Management Service et récupérez l'ID depuis la page des détails de la clé.

ram_role

Le nom du rôle RAM que vous avez créé.

uid

Votre ID de compte Alibaba Cloud. Pour savoir comment l'obtenir, consultez Afficher l'ID du compte.

L'exemple suivant configure un paramètre de chiffrement, puis interroge les données.

  1. Activez le chiffrement au repos pour la base de données.

    ALTER DATABASE hoxxxx set hg_experimental_encryption_options=
    'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,187xxxxxxxxxxxxx';
  2. Créez une table et insérez des données.

    DROP TABLE IF EXISTS a;
    
    CREATE TABLE a(id int);
    
    INSERT INTO a values(1);
    
    SELECT hg_admin_command('flush'); -- For testing only. This lets you see the result immediately.
  3. Interrogez les données.

    SELECT * FROM a;

Si vous désactivez la clé dans KMS, une erreur est signalée lorsque vous interrogez la table a après le redémarrage de l'instance ou après 24 heures.

Dans Hologres V2.0 et versions ultérieures, vous pouvez également afficher le paramètre de chiffrement qui s'applique à chaque table. Pour obtenir des instructions, consultez Afficher les paramètres de chiffrement.

Désactiver le chiffrement au repos pour une base de données

Si vous exécutez l'instruction suivante pour désactiver le chiffrement au repos pour une base de données, les données des tables créées avant la désactivation restent chiffrées. Seules les tables créées après la désactivation ne sont pas chiffrées.

ALTER DATABASE <database_name> set hg_experimental_encryption_options='';

Paramètres de chiffrement au niveau de la table

À partir de Hologres V2.0, une fois le chiffrement au repos activé pour une base de données, vous pouvez configurer une politique de chiffrement différente pour des tables individuelles. Les tables peuvent rester non chiffrées ou utiliser une clé KMS autre que celle par défaut de la base de données.

Configurez un paramètre de chiffrement au niveau de la table lorsque les tables d'une même base de données doivent utiliser différentes clés KMS, ou lorsque des tables spécifiques doivent rester non chiffrées.

Définir un paramètre de chiffrement au niveau de la table

Tenez compte des points suivants avant de définir un paramètre de chiffrement au niveau de la table :

  • Si vous ne configurez pas de paramètre de chiffrement distinct pour une table, la table utilise le paramètre spécifié par hg_experimental_encryption_options.

  • Configurez le paramètre lors de la création de la table. Vous ne pouvez pas le configurer après la création de la table.

Exécutez l'instruction suivante pour définir le paramètre de chiffrement d'une table :

CALL SET_TABLE_PROPERTY('<table_name>', 'encryption_options', '<encryption_type>,<cmk_id>,<ram_role>,<uid>');

Le tableau suivant décrit les paramètres. À l'exception de table_name, ces paramètres sont identiques à ceux du paramètre de chiffrement au niveau de la base de données.

Parameter

Description

table_name

Le nom de la table que vous souhaitez chiffrer.

encryption_type

L'algorithme de chiffrement. Valeurs valides : AES256, AESCTR et RC4.

cmk_id

L'ID de la clé. Connectez-vous à la console Key Management Service et récupérez l'ID depuis la page des détails de la clé.

ram_role

Le nom du rôle RAM que vous avez créé.

uid

Votre ID de compte Alibaba Cloud. Pour savoir comment l'obtenir, consultez Afficher l'ID du compte.

L'exemple suivant crée une table nommée lineitem et la chiffre avec l'algorithme AES256 et la clé 623c26ee-xxxx-xxxx-xxxx-91d323cc4855.

BEGIN;
CREATE TABLE LINEITEM
(
    L_ORDERKEY      BIGINT      NOT NULL,
    L_PARTKEY       INT         NOT NULL,
    L_SUPPKEY       INT         NOT NULL,
    L_LINENUMBER    INT         NOT NULL,
    L_QUANTITY      DECIMAL(15,2) NOT NULL,
    L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,
    L_DISCOUNT      DECIMAL(15,2) NOT NULL,
    L_TAX           DECIMAL(15,2) NOT NULL,
    L_RETURNFLAG    TEXT        NOT NULL,
    L_LINESTATUS    TEXT        NOT NULL,
    L_SHIPDATE      TIMESTAMPTZ NOT NULL,
    L_COMMITDATE    TIMESTAMPTZ NOT NULL,
    L_RECEIPTDATE   TIMESTAMPTZ NOT NULL,
    L_SHIPINSTRUCT  TEXT        NOT NULL,
    L_SHIPMODE      TEXT        NOT NULL,
    L_COMMENT       TEXT        NOT NULL,
    PRIMARY KEY (L_ORDERKEY,L_LINENUMBER)
);
CALL SET_TABLE_PROPERTY('LINEITEM', 'encryption_options', 'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,153xxxxxxxxxxxxx');
COMMIT;

Afficher les paramètres de chiffrement

Dans Hologres V2.0 et versions ultérieures, exécutez l'instruction SQL suivante pour afficher le paramètre de chiffrement de chaque table :

SELECT
    *
FROM
    hologres.hg_table_properties
WHERE
    property_key = 'encryption_options';

Exemple de résultat :

Le résultat contient quatre colonnes : table_namespace, table_name, property_key et property_value. La colonne property_value enregistre l'algorithme de chiffrement (par exemple, AES256), l'ID CMK, le rôle RAM (par exemple, AliyunHologresEncryptionDefaultRole) et l'UID.

Rotation de la clé KMS et migration des données

Hologres ne prend pas en charge le changement de clé KMS d'une base de données déjà chiffrée. Les données chiffrées avec une clé ne peuvent être déchiffrées que par cette clé, et une base de données ne peut avoir qu'un seul paramètre de chiffrement effectif au niveau de la base de données. Si vous exécutez ALTER DATABASE sur une base de données chiffrée pour pointer vers une nouvelle clé, l'instruction peut retourner un succès sans erreur, mais la clé n'est pas changée et les données existantes sont toujours déchiffrées avec la clé d'origine.

Pour remplacer la clé KMS, par exemple lorsque la clé actuelle est sur le point d'être désactivée, créez une base de données avec le nouveau paramètre de chiffrement et migrez-y les données. Cette procédure s'applique au paramètre de chiffrement au niveau de la base de données.

Avertissement

Ne désactivez ni ne supprimez la clé d'origine tant que la migration n'est pas terminée. Si la clé KMS utilisée par une table chiffrée est désactivée ou invalide, la table devient illisible et inaccessible en écriture.

Important

Configurez le paramètre de chiffrement pour la nouvelle base de données avant de migrer les données. Le chiffrement au repos s'applique uniquement aux tables créées après l'activation du chiffrement. Si vous migrez d'abord les données et configurez ensuite le paramètre de chiffrement, les tables créées pendant la migration ne seront pas chiffrées.

Migrez les données dans l'ordre suivant :

  1. Créez une nouvelle base de données.

  2. Configurez le nouveau paramètre de chiffrement KMS pour la nouvelle base de données. Utilisez la même syntaxe que dans Activer le chiffrement au repos pour une base de données.

    ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';
  3. Utilisez une tâche de synchronisation de données, telle qu'une tâche Flink ou DataWorks, pour migrer les données de l'ancienne base de données vers la nouvelle.