Spark on Yarn应用级远程证明
使用OmniShield机密大数据特性执行Spark引擎业务,需通过启动Spark提交任务执行。
为满足国内数据安全合规要求,Spark on YARN现已实现应用级远程证明能力,在原有集群认证机制基础上新增国密合规的可信验证功能,确保从应用提交到资源调度的全生命周期可信执行,为分布式计算作业提供硬件级的安全保障。
- 在virtCCA机密虚拟机内添加用于做IMA度量的用户。
1
useradd attest
- 在virtCCA机密虚机内配置IMA度量策略。
- 打开“policy”文件。
1
vi policy
- 按“i”进入编辑模式,在文件中添加以下内容。
1
measure func=FILE_CHECK mask=MAY_READ fowner=1001
- 1001是#ZH-CN_TOPIC_0000002059324030/li6709341143217中attest用户的ID,policy中fowner指定的ID需根据实际情况修改,可通过cat /etc/passwd | grep attest查看用户ID。
- func=FILE_CHECK表示IMA度量的对象为文件。
- mask=MAY_READ表示IMA度量的触发动作为读取操作。
- fowner=1001表示被度量的文件的属主ID为1001。
- 3条参数规则结合在一起时表示:当属主为1001的文件被读取时将触发IMA度量。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“policy”文件。
- 在virtCCA机密虚机内生效IMA度量策略。
1
cat policy > /sys/kernel/security/ima/policy
- 在virtCCA机密虚机内配置IMA度量用户的环境变量。
- 打开“/etc/profile”文件。
1
vi /etc/profile
- 按“i”进入编辑模式,在文件中添加以下内容。
1
export IMA_USER=attest
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“/etc/profile”文件。
- 在Yarn的ResourceManager节点提交Spark作业并进行远程证明,如可以通过如下指令启动Spark example中计算Pi值的作业。
1
spark-submit --master yarn --class org.apache.spark.examples.SparkPi --num-executors 1 --executor-cores 1 --executor-memory 1G --conf spark.remote.attestation.enable=true --conf spark.remote.attestation.agent.class=rats.RatsTLSRemoteAttestationAgent --conf spark.network.timeout=1200 --conf spark.yarn.max.executor.failures=1 --conf spark.yarn.maxAppAttempts=1 --conf spark.executor.extraClassPath=omnishield-1.0-SNAPSHOT.jar:rats-tls-demo-1.0.jar --driver-class-path omnishield-1.0-SNAPSHOT.jar:rats-tls-demo-1.0.jar --jars "omnishield-1.0-SNAPSHOT.jar,rats-tls-demo-1.0.jar" /usr/local/spark/examples/jars/spark-examples_2.12-3.3.1.jar
- rats-tls-demo-1.0.jar是spark.remote.attestation.agent.class指定的类所在的JAR包,需使用者自行实现。本步骤中以Virtcca rats-tls为例完成演示,具体实现细节和部署步骤请参见OmniShield对接Virtcca rats-tls。
- spark.remote.attestation.enable是OmniShield机密大数据中新增的配置,用于配置启动Executor时是否需要进行远程证明。true表示配置启动Executor时需要远程证明,false表示配置启动Executor时不需要远程证明。
- spark.remote.attestation.agent.class是OmniShield机密大数据中新增的配置,用于配置Executor在开启远程证明后进行远程证明的类的名称,使用者需要根据实际业务自行对接。
- spark.yarn.max.executor.failures=1和spark.yarn.maxAppAttempts=1是Spark的配置, 用于设置Spark on Yarn Executor启动失败后的重试次数。当远程证明不通过时Spark Executor会启动失败,通过以上2项配置可以控制Executor的重启次数。
父主题: 使用特性