支持国密算法的Shuffle安全IO

使用OmniShield机密大数据特性执行Spark引擎业务,需通过启动Spark提交任务执行。

  1. “/opt/omnishield”目录下执行SQL并打开Shuffle IO加密,命令如下。

    1
    spark-sql --driver-cores 5 --driver-memory 20g --num-executors 6 --executor-cores 4 --executor-memory 20g --conf spark.executor.memoryOverhead=20g --master yarn --conf spark.memory.offHeap.enabled=true --conf spark.memory.offHeap.size=18g --conf spark.task.cpus=1 --conf spark.driver.maxResultSize=40g  --conf spark.authenticate.secret=testSecret  --conf spark.authenticate=true --conf spark.io.encryption.enabled=true  --conf spark.io.encryption.commons.config.cipher.classes=com.huawei.boostkit.omnishield.cipher.SM4Cipher --conf spark.io.crypto.cipher.transformation=SM4/GCM/NOPadding  --conf spark.network.crypto.enabled=true  --conf spark.network.crypto.cipher=SM4/GCM/NOPadding  --conf spark.driver.extraClassPath=omnishield-1.0-SNAPSHOT.jar --conf spark.executor.extraClassPath=omnishield-1.0-SNAPSHOT.jar  --jars omnishield-1.0-SNAPSHOT.jar --database tpcds_bin_partitioned_varchar_orc_2 -f /automated/lib/bd/testcase/scripts/omniop/conf/Spark_OmniRuntime_ShuffleEnhance/Spark_OmniRuntime_ShuffleEnhance_002.sql
    
    • Shuffle磁盘IO加密打开需修改以下命令参数:
      • spark.io.encryption.enabled=true
      • spark.io.encryption.commons.config.cipher.classes=自定义实现Cipher类
      • spark.io.crypto.cipher.transformation=SM4/GCM/NOPadding
    • Shuffle网络IO加密打开需修改以下命令参数:
      • spark.authenticate.secret=自定义密钥
      • spark.authenticate=true
      • spark.network.crypto.enabled=true
      • spark.network.crypto.cipher=SM4/GCM/NOPadding。

  2. 查看Shuffle IO支持国密是否生效。

    1. 获取Executor日志。
      1
      yarn logs --applicationId application_xxx > xxx.log
      
    2. 查看是否有使用国密的相关日志,出现Shuffle network IO encryption will use SM4/GCM/NOPadding algorithmShuffle disk IO encryption will use SM4/GCM/NOPadding algorithm即生效。