配置 TLS/SSL
概述
在本指南中,您可以学习如何配置TLS/SSL 用于确保 MongoDB Spark 连接器和您的 MongoDB 部署之间的通信安全。
要使用 TLS/SSL,您的应用程序和每个 Spark 工作进程都必须有权访问证明其身份的加密证书。将这些证书存储在您的 JVM 信任存储和 JVM 密钥存储中。您可以通过 Spark 配置文件或从命令行启动 Spark 作业来配置对这些证书的访问。
创建 JVM 信任存储
JVM 信任存储保存了识别与您的应用程序交互的其他应用程序的证书。使用这些证书,您的应用程序可以证明与另一个应用程序的连接是真实且安全的。
使用 JDK 提供的命令行工具 keytool 创建信任存储
keytool -importcert -trustcacerts -file <path to certificate authority file> -keystore <path to trust store> -storepass <password>
创建 JVM 密钥库
JVM 密钥库保存了用于安全地识别您的应用程序的其他应用程序的证书。使用这些证书,其他应用程序可以证明与您的应用程序的连接是真实且安全的。
启用 TLS/SSL
您可以通过连接 URI 中的 tls
参数来启用 MongoDB 实例的连接 TLS/SSL。。
以下示例展示了带有 tls
选项并设置为 true
的连接 URI,以启用 TLS/SSL。
"mongodb+srv://<username>:<password>@<cluster-url>?tls=true"
有关创建连接字符串的更多信息,请参阅服务器手册中的 连接字符串指南。
配置对证书存储的访问
为了配置您的 Spark 应用程序以访问存储在 JVM 信任存储和 JVM 密钥存储中的证书,必须设置以下系统属性
javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
javax.net.ssl.keyStore
javax.net.ssl.keyStorePassword
在您的 Spark 配置文件中设置属性
您可以在 Spark 配置文件中按以下方式设置系统属性
spark.executor.extraJavaOptions=-Djavax.net.ssl.trustStore=<Path to your trust store> -Djavax.net.ssl.trustStorePassword=<Your trust store password> -Djavax.net.ssl.keyStore=<Path to your key store> -Djavax.net.ssl.keyStorePassword=<Your key store password>" spark.driver.extraJavaOptions=-Djavax.net.ssl.trustStore=<Path to your trust store> -Djavax.net.ssl.trustStorePassword=<Your trust store password> -Djavax.net.ssl.keyStore=<Path to your key store> -Djavax.net.ssl.keyStorePassword=<Your key store password>"
从命令行设置属性
您可以通过在提交 Spark 作业时使用 --conf
标志来添加系统属性,从命令行设置系统属性
./bin/spark-submit --name "<Your app name>" \ --master "<Master URL>" \ --conf "spark.executor.extraJavaOptions=-Djavax.net.ssl.trustStore=<Path to your trust store> -Djavax.net.ssl.trustStorePassword=<Your trust store password> -Djavax.net.ssl.keyStore=<Path to your key store> -Djavax.net.ssl.keyStorePassword=<Your key store password>" \ sparkApplication.jar \ --conf "spark.driver.extraJavaOptions=-Djavax.net.ssl.trustStore=<Path to your trust store> -Djavax.net.ssl.trustStorePassword=<Your trust store password> -Djavax.net.ssl.keyStore=<Path to your key store> -Djavax.net.ssl.keyStorePassword=<Your key store password>" \ sparkApplication.jar