Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Cómputo
Elastic Cloud Server
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Redes
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Gestión y gobernanza
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
Cloud Operations Center
Resource Governance Center
Migración
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Análisis
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Otros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Seguridad y cumplimiento
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Blockchain
Blockchain Service
Servicios multimedia
Media Processing Center
Video On Demand
Live
SparkRTC
Almacenamiento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Cloud Server Backup Service
Data Express Service
Dedicated Distributed Storage Service
Contenedores
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bases de datos
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Aplicaciones empresariales
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Data Lake Factory
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Distribución de contenido y cómputo de borde
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluciones
SAP Cloud
High Performance Computing
Servicios para desarrolladores
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
aPaaS MacroVerse
KooPhone
KooDrive

Encriptación de HFile y WAL

Actualización más reciente 2023-11-20 GMT+08:00

Encriptación de HFile y WAL

AVISO:
  • Establecer el modo de encriptación de HFile y WAL a SMS4 o AES tiene un gran impacto en el sistema y causará pérdida de datos en caso de cualquier mal funcionamiento. Por lo tanto, esta operación no se recomienda.
  • La importación de datos por lotes mediante Bulkload no admite la encriptación de datos.

HFile y Write ahead log (WAL) en HBase no están cifrados de forma predeterminada. Para cifrarlos, realice las siguientes operaciones.

  1. En cualquier nodo de HBase, ejecute los siguientes comandos para crear un archivo de clave como usuario omm:

    sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh <path>/hbase.jks <type> <length> <alias>

    • /<path>/hbase.jks indica la ruta para almacenar el archivo JKS generado.
    • <type> indica el tipo de encriptación, que puede ser SMS4 o AES.
    • <length> indica la longitud de la clave. SMS4 soporta 16-bit y AES soporta 128-bit.
    • <alias> indica el alias del archivo de clave. Cuando cree el archivo de clave por primera vez, conserve el valor predeterminado omm.

    Por ejemplo, para generar una clave de encriptación SMS4, ejecute el siguiente comando:

    sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh /home/hbase/conf/hbase.jks SMS4 16 omm

    Para generar una clave de encriptación AES, ejecute el siguiente comando:

    sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh /home/hbase/conf/hbase.jks AES 128 omm

    NOTA:
    • Para asegurarse de que las operaciones se pueden realizar correctamente, el directorio <path>/hbase.jks debe crearse por adelantado y el usuario de la operación del clúster debe tener el permiso rw de este directorio.
    • Después de ejecutar el comando, introduzca el mismo <password> cuatro veces. La contraseña cifrada en el 3 es la misma que la contraseña en este paso.

  2. Distribuya los archivos de clave generados en el mismo directorio en todos los nodos del clúster y asigne permisos de lectura y escritura al usuario omm.

    NOTA:
    • Los administradores deben seleccionar un procedimiento seguro para distribuir claves en función de los requisitos de seguridad de la empresa.
    • Si se pierden los archivos clave de algunos nodos, repita el paso para copiar los archivos clave de otros nodos.

  3. En FusionInsight Manager, establezca hbase.crypto.keyprovider.parameters.encryptedtext en la contraseña cifrada. Establezca hbase.crypto.keyprovider.parameters.uri en la ruta y el nombre del archivo de clave.

    • El formato de hbase.crypto.keyprovider.parameters.uri es jceks://<key_Path_Name>.

      <key_Path_Name> indica la ruta del archivo de clave. Por ejemplo, si la ruta del archivo de clave es /home/hbase/conf/hbase.jks, establezca este parámetro en jceks:///home/hbase/conf/hbase.jks.

    • El formato de hbase.crypto.keyprovider.parameters.encryptedtext es <encrypted_password>.

      <encrypted_password> indica la contraseña cifrada generada durante la creación del archivo de clave. El valor del parámetro se muestra en texto cifrado. Ejecute el siguiente comando como usuario omm para obtener la contraseña cifrada relacionada en los nodos donde está instalado el servicio HBase:

      sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh

      NOTA:

      Después de ejecutar el comando, debe escribir <password>. La contraseña es la misma que la introducida en 1.

  4. En FusionInsight Manager, establezca hbase.crypto.key.algorithm en SMS4 o AES para usar SMS4 o AES para la encriptación de HFile.
  5. En FusionInsight Manager, establezca hbase.crypto.wal.algorithm en SMS4 o AES para usar SMS4 o AES para la encriptación WAL.
  6. En FusionInsight Manager, establezca hbase.regionserver.wal.encryption en true.
  7. Guarde los ajustes y reinicie el servicio HBase para que los ajustes surtan efecto.
  8. Cree una tabla de HBase a través de CLI o código y configure el modo de encriptación para habilitar la encriptación. <type> indica el tipo de encriptación y d indica la familia de columnas.

    • Cuando cree una tabla de HBase a través de CLI, establezca el modo de encriptación en SMS4 o AES para la familia de columnas.

      create '<table name>', {NAME => 'd', ENCRYPTION => '<type>'}

    • Cuando cree una tabla de HBase con código, establezca el modo de encriptación en SMS4 o AES agregando la siguiente información al código:
      public void testCreateTable() 
      { 
          String tableName = "user"; 
          Configuration conf = getConfiguration();    
          HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName)); 
          HColumnDescriptor hcd = new HColumnDescriptor("d"); 
          //Set the encryption mode to SMS4 or AES.
          hcd.setEncryptionType("<type>"); 
          htd.addFamily(hcd); 
          HBaseAdmin admin = null; 
          try 
          { 
              admin = new HBaseAdmin(conf); 
              if(!admin.tableExists(tableName)) 
              { 
                  admin.createTable(htd); 
              } 
          } 
          catch (IOException e) 
          { 
              e.printStackTrace(); 
          } 
          finally 
          { 
              if(admin != null) 
              { 
                  try 
                  { 
                      admin.close(); 
                  } 
                  catch (IOException e) 
                  { 
                      e.printStackTrace(); 
                  } 
              } 
          } 
      }

  9. Para comprobar si la configuración de encriptación se realiza correctamente, consulte Verificación de la configuración de cifrado.
  10. Si ha configurado la encriptación SMS4 o AES mediante 1 a 7, pero no establece el parámetro de encriptación relacionado al crear la tabla en 8, los datos insertados no se cifran.

    En este caso, puede realizar los siguientes pasos para cifrar los datos insertados:

    1. Ejecute el comando flush para que la tabla importe los datos de la memoria al HFile.

      flush'<table_name>'

    2. Ejecute los siguientes comandos para modificar las propiedades de la tabla:

      disable'<table_name>'

      alter'<table_name>',NAME=>'<column_name>',ENCRYPTION => '<type>'

      enable'<table_name>'

    3. Inserte un nuevo registro de datos y limpie la tabla.
      NOTA:

      Se debe insertar un nuevo registro de datos para que el HFile genere un nuevo HFile y los datos no cifrados insertados previamente se reescriban y encripten.

      put'<table_name>','id2','f1:c1','value222222222222222222222222222222222'

      flush'<table_name>'

    4. Realice el siguiente paso para volver a escribir el archivo HFile:
      major_compact'<table_name>'
      AVISO:

      Durante este paso, la tabla HBase está deshabilitada y no puede proporcionar servicios. Tenga cuidado cuando realice este paso.

    5. Puede realizar 6 para comprobar si la configuración de encriptación es correcta.

Verificación de la configuración de cifrado

NOTA:

Esta operación sólo se puede realizar cuando los datos de prueba se pueden escribir en una tabla vacía.

  1. Inicie sesión en el nodo donde está instalado el cliente como usuario de instalación del cliente. Cambie al directorio de instalación del cliente.

    cd /opt/client

  2. Ejecute el siguiente comando para establecer variables de entorno:

    source bigdata_env

  3. Ejecute el siguiente comando para autenticar al usuario actual si se ha habilitado la autenticación Kerberos para el clúster de seguridad actual. El usuario actual debe tener el permiso para leer y escribir tablas de HBase y el permiso de operación de HDFS.

    kinit Component service user

    Ejecute el siguiente comando para establecer el nombre de usuario de Hadoop si la autenticación de Kerberos no está habilitada para el clúster normal actual:

    export HADOOP_USER_NAME=hbase

  4. Ejecute el siguiente comando para iniciar sesión en el cliente de HBase:

    hbase shell

    Ejecute el siguiente comando para insertar un nuevo registro de datos y vaciar la tabla para generar un archivo HFile:

    put'<table_name>','id2','d:c1','value222222222222222222222222222222222'

    flush'<table_name>'

    NOTA:
    • <table_name> indica la tabla configurada con encriptación SMS4 o AES. Para obtener más información sobre cómo configurar la encriptación SMS4 o AES, visite 8.
    • d indica la familia de columnas configurada con encriptación SMS4 o AES. Para obtener más información sobre cómo configurar la encriptación SMS4 o AES, visite 8.

  5. Presione Ctrl+C para salir del cliente de HBase.
  6. Ejecute el siguiente comando para ver el directorio donde se almacena el archivo HFile generado en 4:

    hdfs dfs -ls

    El formato de directorio de archivo es de /hbase/data/<namespace_name>/<table_name>/<region_name>/<columnfamily_name>/<HFile_name>.

    NOTA:

    Si <namespace_name> no se especifica durante la creación de la tabla de HBase, default se utiliza de forma predeterminada.

    Ejemplo:

    /hbase/data/default/create_table/dd61b81b1ba1aad6513b9bdcfd8f871c/d/aa6fe387b27443afaba40f5b584c1fa7

  7. Ejecute el siguiente comando para ver el contenido de HFile:

    hbase hfile -f <HFile path> -p

    NOTA:

    <HFile path> indica el directorio donde se encuentra el archivo HFile.

    El mensaje de error "com.huawei.hadoop.hbase.io.crypto.CryptoRuntimeException" se mostrará en la salida del comando. Sin embargo, el HBase shell todavía puede leer los datos de la tabla, lo que indica que la configuración de encriptación se realizó correctamente.

Modificación de un archivo de clave

AVISO:

La modificación de un archivo de clave tiene un gran impacto en el sistema y causará la pérdida de datos en caso de cualquier mal funcionamiento. Por lo tanto, esta operación no se recomienda.

Durante la operación de Encriptación de HFile y WAL, se debe generar el archivo de clave relacionado y se debe establecer su contraseña para garantizar la seguridad del sistema. Después de un período de ejecución, puede reemplazar el archivo de clave con uno nuevo para cifrar HFile y WAL.

  1. Ejecute el siguiente comando para generar un nuevo archivo de clave como usuario omm:

    sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh <path>/hbase.jks <type> <length> <alias-new>

    • <path>/hbase.jks: indica la ruta para almacenar el archivo hbase.jks generado. La ruta de acceso y el nombre del archivo deben ser coherentes con los del archivo clave generado en Encriptación de HFile y WAL.
    • <alias-new>: indica el alias del archivo de clave. El alias debe ser diferente con el del archivo de clave anterior.
    • <type>: indica el tipo de encriptación, que puede ser SMS4 o AES.
    • <length> indica la longitud de la clave. SMS4 soporta 16-bit y AES soporta 128-bit.

    Por ejemplo, para generar una clave de encriptación SMS4, ejecute el siguiente comando:

    sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh /home/hbase/conf/hbase.jks SMS4 16 omm_new

    Para generar una clave de encriptación AES, ejecute el siguiente comando:

    sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh /home/hbase/conf/hbase.jks AES 128 omm_new

    NOTA:
    • Para asegurarse de que las operaciones se pueden realizar correctamente, el directorio <path>/hbase.jks debe crearse por adelantado y el usuario de la operación del clúster debe tener el permiso rw de este directorio.
    • Después de ejecutar el comando, debe ingresar el mismo <password> tres veces. Esta contraseña es la contraseña del archivo de clave. Puede utilizar la contraseña del archivo antiguo sin ningún riesgo de seguridad.

  2. Distribuya los archivos de clave generados en el mismo directorio en todos los nodos del clúster y asigne permisos de lectura y escritura al usuario omm.

    NOTA:

    Los administradores deben seleccionar un procedimiento seguro para distribuir claves en función de los requisitos de seguridad de la empresa.

  3. En la página de configuración del servicio de HBase de FusionInsight Manager, agregue elementos de configuración personalizados, establezca hbase.crypto.master.key.name en omm_new, establezca hbase.crypto.master.alternate.key.name en omm y guarde la configuración.

  4. Reinicie el servicio HBase para que la configuración surta efecto.
  5. En el shell de HBase, ejecute el comando major compact para generar el archivo HFile basado en el nuevo algoritmo de encriptación.

    major_compact '<table_name>'

  6. Puede ver el progreso compacto más importante desde la página web de HMaster.

  7. Cuando todos los elementos en Compaction Progress lleguen a 100% y los de Remaining KVs sean 0, ejecute el siguiente comando como usuario omm para destruir el archivo de clave anterior:

    sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh <path>/hbase.jks <alias-old>

    • <path>/hbase.jks: indica la ruta para almacenar el archivo hbase.jks generado. La ruta de acceso y el nombre del archivo deben ser coherentes con los del archivo clave generado en Encriptación de HFile y WAL.
    • <alias-old>: indica el alias del archivo de clave antiguo que se va a eliminar.

    Por ejemplo:

    sh ${BIGDATA_HOME}/FusionInsight_HD_xxx/install/FusionInsight-HBase-xxx/hbase/bin/hbase-encrypt.sh /home/hbase/conf/hbase.jks omm

    NOTA:

    Para asegurarse de que las operaciones se pueden realizar correctamente, el directorio <path>/hbase.jks debe crearse por adelantado y el usuario de la operación del clúster debe tener el permiso rw de este directorio.

  8. Repita 2 y distribuya de nuevo los archivos de clave actualizados.
  9. Elimine el elemento de configuración autodefinida de HBase hbase.crypto.master.alternate.key.name agregado en 3 desde FusionInsight Manager.
  10. Repita 4 para que la configuración surta efecto.

Utilizamos cookies para mejorar nuestro sitio y tu experiencia. Al continuar navegando en nuestro sitio, tú aceptas nuestra política de cookies. Descubre más

Comentarios

Comentarios

Comentarios

0/500

Seleccionar contenido

Enviar el contenido seleccionado con los comentarios