[ 
https://issues.apache.org/jira/browse/SPARK-6229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14360808#comment-14360808
 ] 

Aaron Davidson commented on SPARK-6229:
---------------------------------------

The reason we did not originally put the SASL stuff into the middle of the 
TransportContext was to keep the latter simple, allowing SASL to effectively be 
a plugin on top. This is pretty critical to the design of not pushing 
application-level concerns into the transport layer whenever possible.

That said, clearly encryption cannot work without another layer in the 
pipeline. My inclination would be to add a pluggable encryption handler as an 
argument to TransportContext. The interface could be something simple like:

{code}
trait EncryptionHandler {
  def createChannelHandlers(): List[ChannelHandler]
}
{code}

which are then attached appropriately to the pipeline on channel initialization.

In particular, in my imagination, a user would either want to use SSL 
encryption or SASL-based encryption, but not both, so making a single, 
optional, EncryptionHandler is sufficient. Second, a user may want to use SSL 
and SASL authentication together (maybe not, but I could imagine SSL only being 
used for encryption over the wire and SASL being used for more fine-grained 
access control), so ideally this could keep the SASL bootstrap, but the SASL 
encryption mechanism has a handle to the SASL RPC Handler and waits for it to 
say OK before beginning encryption.

If, however, there is no good use-case for SSL + SASL auth, then you could 
still do the refactoring you had in mind of putting the SASL authentication as 
part of the handler instead of a bootstrap.

> Support encryption in network/common module
> -------------------------------------------
>
>                 Key: SPARK-6229
>                 URL: https://issues.apache.org/jira/browse/SPARK-6229
>             Project: Spark
>          Issue Type: Sub-task
>          Components: Spark Core
>            Reporter: Marcelo Vanzin
>
> After SASL support has been added to network/common, supporting encryption 
> should be rather simple. Encryption is supported for DIGEST-MD5 and GSSAPI. 
> Since the latter requires a valid kerberos login to work (and so doesn't 
> really work with executors), encryption would require the use of DIGEST-MD5.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to