配置 TLS/SSL
在此页面上
Overview
在本指南中,您可以学习;了解如何配置 TLS/SSL 以保护MongoDB Spark Connector和MongoDB 部署之间的通信。
要使用 TLS/SSL,您的应用程序和每个 Spark 工作线程都必须有权访问证明其身份的加密证书。 将证书存储在 JVM 信任存储区和 JVM 密钥存储区中。 您可以通过 Spark 配置文件或在从命令行启动 Spark 作业时配置对这些证书的访问权限。
创建 Java虚拟机(JVM)信任存储区
Java虚拟机(JVM)信任存储区保存的证书可安全地标识与您的应用程序交互的其他应用程序。使用这些证书,您的应用程序可以证明与另一个应用程序的连接是真实且安全的。
使用 keytool 创建信任存储 作为 JDK 的一部分提供的命令行工具:
keytool -importcert -trustcacerts -file <path to certificate authority file> -keystore <path to trust store> -storepass <password>
创建 Java虚拟机(JVM) 密钥存储
JVM 密钥存储区保存的证书可向其他应用程序安全地标识您的应用程序。 使用这些证书,其他应用程序可以证明与您的应用程序的连接是真实且安全的。
启用 TLS/SSL
您可以通过连接 URI 中的 tls
参数为与 MongoDB 实例的连接启用 TLS/SSL。
以下示例显示了一个连接 URI,其中将tls
选项分配给true
以启用 TLS/SSL:
"mongodb+srv://<username>:<password>@<cluster-url>?tls=true"
有关创建连接string的更多信息,请参阅服务器手册上的连接string指南。
配置对证书存储区的访问权限
要将 Spark 应用程序配置为访问 Java虚拟机(JVM)信任存储和 Java虚拟机(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