Spark接続のセキュリティ保護

Sparkアプリケーションとトランザクション・ノード間の通信、マスターとワーカー、Sparkドライバーとエグゼキューター間の相互通信は、暗号化できます。

Sparkアプリケーションとトランザクション・ノード間の通信、マスターとワーカー、Sparkドライバーとエグゼキューター間の相互通信は、暗号化できます。暗号化はクラスター内のノードごとに構成する必要があります。

SparkプロセスとDSE間の暗号化は、クライアントとノード間の暗号化cassandra.yaml内で有効にすることで構成されます。

Sparkマスターとワーカー間を含むSparkアプリケーション間の暗号化を構成するには、dse.yamlでSparkセキュリティを有効にします。

クライアント・アプリケーションのSparkドライバーとエグゼキューター間の暗号化は、アプリケーションの構成プロパティでSparkセキュリティを有効にすることで構成するか、Spark構成ディレクトリーのspark-defaults.confおよびspark-daemon-defaults.confでデフォルトで構成します。

Spark構成ファイルのデフォルトの場所は、インストールのタイプによって異なります。
  • パッケージ・インストール:/etc/dse/spark/
  • tarボール・インストール:installation_location/resources/spark/conf

cassandra.yaml

cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/cassandra/cassandra.yaml
tarボール・インストール installation_location/resources/cassandra/conf/cassandra.yaml

dse.yaml

dse.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/dse/dse.yaml
tarボール・インストール installation_location/resources/dse/conf/dse.yaml

手順

  1. Sparkマスター・ノードとワーカー・ノード間の相互認証および暗号化を dse.yamlで有効にします。
    ヒント: DSE 6.7.4以降で、DSE認証が認証オプションdse.yaml内)で有効になっている場合は、Sparkセキュリティは、これらの設定に関係なく有効になります。
    1. 相互認証を有効にするには、spark_security_enabledtrueに設定します。
    2. 暗号化を有効にするには、spark_security_encryption_enabledtrueに設定します。
    spark_security_enabled: true
    spark_security_encryption_enabled: true
    
    注: 暗号化を有効にするには、相互認証も有効にする必要があります。
  2. Sparkアプリケーションとマスター間の通信を暗号化するため、DSEはクライアントとクラスター間の接続暗号化オプションを継承します。
  3. Spark Web UIは、デフォルトでクライアントとクラスター間の暗号化設定を使用して、WebインターフェイスのSSLセキュリティを有効にします。DSEのクライアントとクラスター間の暗号化とは別にSSLセキュリティを有効にするには、spark_ui_optionsの下の dse.yamlの設定を変更します。encryptioncustomに設定してから、encryption_optionsでキーストア設定を設定します。
    Spark Web UIサーバーは、SA、SHA1、またはMD5の接尾辞で終わるすべての暗号アルゴリズムを自動的に破棄します。暗号化用に暗号スイートを手動で指定する場合は、指定した暗号スイートがサーバーによって無視されず、Spark Web UIへのアクセスに使用されるWebブラウザーによってサポートされていることを確認します。たとえば、サーバーと現在のWebブラウザーの両方でサポートされている2つの256ビットの暗号スイートはTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384です。
  4. AlwaysOn SQLサーバーは、オプションでSSLを使用してクライアント接続を暗号化できます。
  5. 変更を認識させるため、ノードを再起動します。
  6. Sparkアプリケーションごとに、以下のクライアントの暗号化オプションをspark-defaults.confファイル内でtrueに設定して、Sparkドライバーとエグゼキューター間の暗号化を有効にします。
    オプション 説明
    spark.authenticate 秘密鍵を使用して相互認証を有効または無効にします。デフォルトはfalseです。
    spark.authenticate.enableSaslEncryption Sparkドライバーとそのエグゼキューター間のSASL暗号化を有効または無効にします。デフォルトはfalseです。
    spark.io.encryption.enabled ドライバーがディスクに直接格納するデータの暗号化を有効または無効にします。

    デフォルトですべてのSparkアプリケーションの暗号化を有効にするには、Spark構成ディレクトリーのspark-defaults.confファイルのオプションを変更します。サーバーに格納されているデータをデフォルトで暗号化するには、spark-daemon-defaults.confファイルのオプションを変更します。

    オプション 説明
    spark.io.encryption.enabled エグゼキューターおよびシャッフル・サービスによりディスクに直接格納されているデータの暗号化を有効または無効にします。