Todos los productos
Search
Centro de documentos

Hologres:Encrypt data at rest

Última actualización: Sep 05, 2026

Cifre los datos en reposo en Hologres mediante claves administradas por KMS para proteger la información almacenada y cumplir con los requisitos normativos. Este tema describe el funcionamiento del cifrado en reposo, sus límites, cómo habilitarlo a nivel de base de datos y de tabla, y cómo reemplazar una clave de KMS mediante la migración de datos a una nueva base de datos.

Por qué cifrar datos en reposo con KMS

Key Management Service (KMS) es un servicio de Alibaba Cloud que crea, almacena y administra claves de cifrado para proteger datos confidenciales en reposo y en tránsito.

Hologres utiliza claves de KMS para cifrar los datos que usted almacena en una base de datos. El cifrado en reposo protege los datos en la capa de almacenamiento contra ataques externos y ayuda a cumplir con los requisitos regulatorios y de cumplimiento empresarial.

Funcionamiento

Hologres cifra y descifra datos con claves administradas por KMS. El mecanismo de cifrado funciona de la siguiente manera:

  • Hologres cifra y descifra los datos almacenados por base de datos a través de KMS. Los datos se cifran como texto cifrado en la capa de almacenamiento, y solo la clave correspondiente puede descifrarlos.

  • KMS genera y administra sus claves, y las mantiene seguras.

  • Hologres admite los algoritmos de cifrado AES256, AESCTR y RC4.

  • Hologres cifra y descifra datos únicamente con Bring Your Own Key (BYOK). Se admiten dos tipos de material de clave: el material de clave que KMS genera cuando usted crea una customer master key (CMK) y el material de clave que usted importa.

    Usted crea una clave BYOK en KMS y la selecciona en Hologres para cifrar una base de datos. Para obtener más información sobre cómo crear una clave BYOK en KMS, consulte Create a key.

  • Durante las operaciones de lectura y escritura de datos, Hologres llama a operaciones de la API de KMS para obtener información de la clave y almacena dicha información en caché durante 24 horas de forma predeterminada.

Notas de uso

  • Alcance del cifrado: El cifrado en reposo se aplica únicamente a las tablas que se crean después de habilitar la función. Las tablas creadas antes de habilitarla no se cifran.

  • Tipos de tabla compatibles: Solo se cifran las tablas orientadas a columnas y la parte orientada a columnas de las tablas híbridas de filas y columnas. Los demás tipos de tabla no se cifran. Después de habilitar el cifrado en reposo, todavía puede crear tablas externas de Hologres en MaxCompute para leer y escribir datos.

  • Claves a nivel de tabla: Hologres V2.0 y versiones posteriores admiten una configuración de cifrado independiente para cada tabla, lo que permite cifrar diferentes tablas con distintas claves de KMS. Para obtener más información, consulte Configuración de cifrado a nivel de tabla.

  • Rendimiento: El cifrado y descifrado añaden sobrecarga de procesamiento. El cifrado en reposo reduce el rendimiento de consultas y escrituras entre un 20 % y un 40 %, aproximadamente, según las características de la consulta.

  • Operaciones de clave: Las operaciones de claves de KMS, como deshabilitar o eliminar una BYOK, afectan el cifrado y descifrado en Hologres. Dado que Hologres almacena la información de la clave en caché, estas operaciones surten efecto dentro de las 24 horas siguientes.

  • Disponibilidad de la clave: Si la clave de KMS utilizada por una tabla cifrada se deshabilita o deja de ser válida, la tabla no podrá leerse ni modificarse.

  • Reemplazo de clave: Hologres no admite cambiar la clave de KMS de una base de datos que ya está cifrada. Para cifrar datos con una clave diferente, cree una nueva base de datos y migre los datos hacia ella. Para obtener más información, consulte Rotar la clave de KMS y migrar datos.

  • Deshabilitar el cifrado: Deshabilitar el cifrado en reposo para una base de datos no descifra los datos que ya están cifrados. Para obtener más información, consulte Deshabilitar el cifrado en reposo para una base de datos.

Facturación

El cifrado en reposo genera cargos de KMS porque Hologres llama a operaciones de la API de KMS para obtener información de la clave. Para consultar los precios, véase KMS billing.

Requisitos previos

  • Su instancia de Hologres ejecuta la versión V1.1 o posterior. Solo Hologres V1.1 y versiones posteriores admiten el cifrado en reposo. Si su instancia ejecuta una versión anterior, actualícela. Para conocer los errores de preparación de actualización, consulte Troubleshooting upgrade preparation errors, o únase al grupo de DingTalk de Hologres para obtener asistencia. Para obtener más información, consulte How do I get more online support?.

  • Las instancias anteriores a la V1.3.31 requieren configuraciones de backend para el cifrado en reposo. Las instancias V1.3.31 y posteriores no las necesitan. (Recomendado) Upgrade your instance.

  • KMS está activado en su región.

  • Se ha creado un rol de RAM. Debe especificar el nombre de este rol en la configuración de cifrado.

Habilitar el cifrado en reposo para una base de datos

  1. Cree una política personalizada que otorgue a Hologres los permisos de KMS obligatorios.

    1. Inicie sesión en la consola de RAM. En el panel de navegación izquierdo, seleccione Permissions > Policies. En la página Policies, haga clic en Create Policy.

      权限策略

    2. En la página Create Policy, haga clic en JSON. En el editor de código, introduzca la siguiente política y luego establezca Name como AliyunHologresEncryptionDefaultRolePolicy.

      创建权限策略

      Esta política otorga a Hologres los permisos de KMS necesarios para obtener y descifrar claves de datos al consultar datos cifrados de MaxCompute.

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "kms:Encrypt",
                      "kms:Decrypt",
                      "kms:GenerateDataKey",
                      "kms:DescribeKey"
                  ],
                  "Resource": "acs:kms:*:*:*/*",
                  "Effect": "Allow"
              }
          ]
      }
    3. Haga clic en OK. La política personalizada se crea correctamente.

  2. Cree un rol de RAM para Hologres y asocie la política.

    Hologres necesita un rol de RAM para llamar a las API de KMS en su nombre. Cree el rol y asocie la política creada en el paso 1.

    1. Inicie sesión en la consola de RAM. En el panel de navegación izquierdo, seleccione Identities > Roles.

    2. En la página Roles, haga clic en Create Role. Establezca Principal Type como Cloud Service y Principal Name como Hologres.

    3. Haga clic en OK. En el cuadro de diálogo, introduzca AliyunHologresEncryptionDefaultRole en el campo Role Name y luego haga clic en OK.

      创建角色

    4. En la página de detalles del rol, haga clic en Grant Permission.

    5. En el panel Grant Permission, establezca Resource Scope como Account. Para Policy, seleccione AliyunHologresEncryptionDefaultRolePolicy.

      添加权限

    6. Haga clic en OK. En la página de detalles del rol, haga clic en la pestaña Trust Policy para comprobar la política de confianza.

  3. Cree una clave.

    Para más detalles, consulte Create a key.

    Hologres solo admite claves simétricas del tipo Aliyun_AES_256.

  4. Configure el parámetro de cifrado.

    1. Conéctese a la instancia de base de datos para la cual desea habilitar el cifrado en reposo. Para obtener instrucciones, consulte Connect to a database instance.

    2. En la página Ad-hoc Query, configure Instance Name y Database, introduzca la siguiente sentencia en el editor de consultas SQL y luego haga clic en Run.

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

La siguiente tabla describe los parámetros.

Parámetro

Descripción

db_name

El nombre de la base de datos que desea cifrar.

encryption_type

El algoritmo de cifrado. Valores válidos: AES256, AESCTR y RC4.

cmk_id

El ID de la clave. Inicie sesión en la consola de Key Management Service y obtenga el ID desde la página de detalles de la clave.

ram_role

El nombre del rol de RAM que creó.

uid

Su ID de cuenta de Alibaba Cloud. Para obtener más información sobre cómo conseguirlo, consulte View the account ID.

El siguiente ejemplo configura un parámetro de cifrado y luego consulta los datos.

  1. Habilite el cifrado en reposo para la base de datos.

    ALTER DATABASE hoxxxx set hg_experimental_encryption_options=
    'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,187xxxxxxxxxxxxx';
  2. Cree una tabla e inserte datos.

    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. Consulte los datos.

    SELECT * FROM a;

Si deshabilita la clave en KMS, se notifica un error al consultar la tabla a después de reiniciar la instancia o transcurridas 24 horas.

En Hologres V2.0 y versiones posteriores, también puede ver la configuración de cifrado que se aplica a cada tabla. Para obtener instrucciones, consulte Ver configuraciones de cifrado.

Deshabilitar el cifrado en reposo para una base de datos

Si ejecuta la siguiente sentencia para deshabilitar el cifrado en reposo de una base de datos, los datos de las tablas creadas antes de la deshabilitación permanecen cifrados. Solo las tablas creadas después de deshabilitarlo quedan sin cifrar.

ALTER DATABASE <database_name> set hg_experimental_encryption_options='';

Configuración de cifrado a nivel de tabla

A partir de Hologres V2.0, una vez habilitado el cifrado en reposo para una base de datos, puede configurar una política de cifrado diferente para tablas individuales. Las tablas pueden permanecer sin cifrar o utilizar una clave de KMS distinta a la predeterminada de la base de datos.

Configure un parámetro de cifrado a nivel de tabla cuando las tablas de una misma base de datos deban usar diferentes claves de KMS, o cuando ciertas tablas específicas deban permanecer sin cifrar.

Establecer una configuración de cifrado a nivel de tabla

Tenga en cuenta lo siguiente antes de establecer una configuración de cifrado a nivel de tabla:

  • Si no configura un parámetro de cifrado independiente para una tabla, esta utilizará la configuración especificada por hg_experimental_encryption_options.

  • Configure el parámetro al crear la tabla. No es posible configurarlo después de crearla.

Ejecute la siguiente sentencia para establecer la configuración de cifrado de una tabla:

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

La siguiente tabla describe los parámetros. A excepción de table_name, estos parámetros son los mismos que los de la configuración de cifrado a nivel de base de datos.

Parámetro

Descripción

table_name

El nombre de la tabla que desea cifrar.

encryption_type

El algoritmo de cifrado. Valores válidos: AES256, AESCTR y RC4.

cmk_id

El ID de la clave. Inicie sesión en la consola de Key Management Service y obtenga el ID desde la página de detalles de la clave.

ram_role

El nombre del rol de RAM que creó.

uid

Su ID de cuenta de Alibaba Cloud. Para obtener más información sobre cómo conseguirlo, consulte View the account ID.

El siguiente ejemplo crea una tabla llamada lineitem y la cifra con el algoritmo AES256 y la clave 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;

Ver configuraciones de cifrado

En Hologres V2.0 y versiones posteriores, ejecute la siguiente sentencia SQL para ver la configuración de cifrado de cada tabla:

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

Resultado de ejemplo:

El resultado contiene cuatro columnas: table_namespace, table_name, property_key y property_value. La columna property_value registra el algoritmo de cifrado (por ejemplo, AES256), el ID de CMK, el rol de RAM (por ejemplo, AliyunHologresEncryptionDefaultRole) y el UID.

Rotar la clave de KMS y migrar datos

Hologres no admite cambiar la clave de KMS de una base de datos que ya está cifrada. Los datos cifrados con una clave solo pueden descifrarse con esa misma clave, y una base de datos solo puede tener una configuración de cifrado efectiva a nivel de base de datos. Si ejecuta ALTER DATABASE en una base de datos cifrada para apuntar a una nueva clave, la sentencia podría ejecutarse correctamente sin errores, pero la clave no se cambia y los datos existentes siguen descifrándose con la clave original.

Para reemplazar la clave de KMS, por ejemplo cuando la clave actual está a punto de desactivarse, cree una base de datos con la nueva configuración de cifrado y migre los datos hacia ella. Este procedimiento se aplica a la configuración de cifrado a nivel de base de datos.

Aviso

No deshabilite ni elimine la clave original hasta completar la migración. Si la clave de KMS utilizada por una tabla cifrada se deshabilita o deja de ser válida, la tabla no podrá leerse ni modificarse.

Importante

Configure el parámetro de cifrado para la nueva base de datos antes de migrar los datos. El cifrado en reposo se aplica únicamente a las tablas creadas después de habilitar el cifrado. Si migra los datos primero y configura el parámetro de cifrado después, las tablas creadas durante la migración no se cifrarán.

Migre los datos en el siguiente orden:

  1. Cree una nueva base de datos.

  2. Configure el nuevo parámetro de cifrado de KMS para la nueva base de datos. Utilice la misma sintaxis que en Habilitar el cifrado en reposo para una base de datos.

    ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';
  3. Utilice una tarea de sincronización de datos, como una tarea de Flink o DataWorks, para migrar los datos de la base de datos antigua a la nueva.