Details
Description
As discovered in HADOOP-14441, KMS HA using LoadBalancingKMSClientProvider do not share delegation tokens. (a client uses KMS address/port as the key for delegation token)
if (!creds.getAllTokens().isEmpty()) { InetSocketAddress serviceAddr = new InetSocketAddress(url.getHost(), url.getPort()); Text service = SecurityUtil.buildTokenService(serviceAddr); dToken = creds.getToken(service);
But KMS doc states:
Delegation Tokens
Similar to HTTP authentication, KMS uses Hadoop Authentication for delegation tokens too.
Under HA, A KMS instance must verify the delegation token given by another KMS instance, by checking the shared secret used to sign the delegation token. To do this, all KMS instances must be able to retrieve the shared secret from ZooKeeper.
We should either update the KMS documentation, or fix this code to share delegation tokens.
Attachments
Attachments
Issue Links
- breaks
-
HADOOP-15408 HADOOP-14445 broke Spark.
- Resolved
-
HADOOP-15431 KMSTokenRenewer should work with KMS_DELEGATION_TOKEN which has ip:port as service
- Resolved
-
HADOOP-15861 Move DelegationTokenIssuer to the right path
- Resolved
-
HADOOP-15997 KMS client uses wrong UGI after HADOOP-14445
- Resolved
-
HADOOP-16199 KMSLoadBlanceClientProvider does not select token correctly
- Resolved
-
HDFS-13430 Fix TestEncryptionZonesWithKMS failure due to HADOOP-14445
- Resolved
- is duplicated by
-
HADOOP-14134 KMSTokenRenewer should renew token from the service address in token.
- Resolved
-
HADOOP-14441 LoadBalancingKMSClientProvider#addDelegationTokens should add delegation tokens from all KMS instances
- Resolved
- relates to
-
HADOOP-15414 Job submit not work well on HDFS Federation with Transparent Encryption feature
- Resolved