@Private
public class BlockTokenSecretManager
extends org.apache.hadoop.security.token.SecretManager<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier>
| Modifier and Type | Field | Description |
|---|---|---|
static org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> |
DUMMY_TOKEN |
|
static org.slf4j.Logger |
LOG |
| Constructor | Description |
|---|---|
BlockTokenSecretManager(long keyUpdateInterval,
long tokenLifetime,
int nnIndex,
int numNNs,
java.lang.String blockPoolId,
java.lang.String encryptionAlgorithm,
boolean useProto) |
|
BlockTokenSecretManager(long keyUpdateInterval,
long tokenLifetime,
int nnIndex,
int numNNs,
java.lang.String blockPoolId,
java.lang.String encryptionAlgorithm,
boolean useProto,
boolean shouldWrapQOP) |
|
BlockTokenSecretManager(long keyUpdateInterval,
long tokenLifetime,
java.lang.String blockPoolId,
java.lang.String encryptionAlgorithm,
boolean useProto) |
Constructor for workers.
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
addKeys(ExportedBlockKeys exportedKeys) |
Set block keys, only to be used in worker mode
|
void |
checkAccess(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier id,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode) |
|
void |
checkAccess(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier id,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode,
org.apache.hadoop.fs.StorageType[] storageTypes) |
Check if access should be allowed.
|
void |
checkAccess(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier id,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode,
org.apache.hadoop.fs.StorageType[] storageTypes,
java.lang.String[] storageIds) |
Check if access should be allowed.
|
void |
checkAccess(org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> token,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode) |
Check if access should be allowed.
|
void |
checkAccess(org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> token,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode,
org.apache.hadoop.fs.StorageType[] storageTypes,
java.lang.String[] storageIds) |
Check if access should be allowed.
|
static <T> void |
checkAccess(T[] candidates,
T[] requested,
java.lang.String msg) |
Check if the requested values can be satisfied with the values in the
BlockToken.
|
void |
clearAllKeysForTesting() |
|
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier |
createIdentifier() |
Create an empty block token identifier
|
protected byte[] |
createPassword(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier identifier) |
Create a new password/secret for the given block token identifier.
|
ExportedBlockKeys |
exportKeys() |
Export block keys, only to be used in master mode
|
org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey |
generateDataEncryptionKey() |
Generate a data encryption key for this block pool, using the current
BlockKey.
|
org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> |
generateToken(java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
java.util.EnumSet<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode> modes,
org.apache.hadoop.fs.StorageType[] storageTypes,
java.lang.String[] storageIds) |
Generate a block token for a specified user
|
org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> |
generateToken(org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
java.util.EnumSet<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode> modes,
org.apache.hadoop.fs.StorageType[] storageTypes,
java.lang.String[] storageIds) |
Generate an block token for current user
|
BlockKey |
getCurrentKey() |
|
int |
getSerialNoForTesting() |
|
boolean |
hasKey(int keyId) |
|
byte[] |
retrieveDataEncryptionKey(int keyId,
byte[] nonce) |
Recreate an encryption key based on the given key id and nonce.
|
byte[] |
retrievePassword(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier identifier) |
Look up the token password/secret for the given block token identifier.
|
void |
setBlockPoolId(java.lang.String blockPoolId) |
|
void |
setKeyUpdateIntervalForTesting(long millis) |
|
void |
setSerialNo(int nextNo) |
|
void |
setTokenLifetime(long tokenLifetime) |
set token lifetime.
|
boolean |
updateKeys(long updateTime) |
Update block keys if update time > update interval.
|
public static final org.slf4j.Logger LOG
public static final org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> DUMMY_TOKEN
public BlockTokenSecretManager(long keyUpdateInterval,
long tokenLifetime,
java.lang.String blockPoolId,
java.lang.String encryptionAlgorithm,
boolean useProto)
keyUpdateInterval - how often a new key will be generatedtokenLifetime - how long an individual token is validuseProto - should we use new protobuf style tokenspublic BlockTokenSecretManager(long keyUpdateInterval,
long tokenLifetime,
int nnIndex,
int numNNs,
java.lang.String blockPoolId,
java.lang.String encryptionAlgorithm,
boolean useProto)
public BlockTokenSecretManager(long keyUpdateInterval,
long tokenLifetime,
int nnIndex,
int numNNs,
java.lang.String blockPoolId,
java.lang.String encryptionAlgorithm,
boolean useProto,
boolean shouldWrapQOP)
@VisibleForTesting public void setSerialNo(int nextNo)
public void setBlockPoolId(java.lang.String blockPoolId)
public ExportedBlockKeys exportKeys()
public void addKeys(ExportedBlockKeys exportedKeys) throws java.io.IOException
java.io.IOExceptionpublic boolean updateKeys(long updateTime)
throws java.io.IOException
java.io.IOExceptionpublic org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> generateToken(org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
java.util.EnumSet<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode> modes,
org.apache.hadoop.fs.StorageType[] storageTypes,
java.lang.String[] storageIds)
throws java.io.IOException
java.io.IOExceptionpublic org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> generateToken(java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
java.util.EnumSet<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode> modes,
org.apache.hadoop.fs.StorageType[] storageTypes,
java.lang.String[] storageIds)
public void checkAccess(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier id,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode,
org.apache.hadoop.fs.StorageType[] storageTypes,
java.lang.String[] storageIds)
throws org.apache.hadoop.security.token.SecretManager.InvalidToken
org.apache.hadoop.security.token.SecretManager.InvalidTokenpublic void checkAccess(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier id,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode,
org.apache.hadoop.fs.StorageType[] storageTypes)
throws org.apache.hadoop.security.token.SecretManager.InvalidToken
org.apache.hadoop.security.token.SecretManager.InvalidTokenpublic void checkAccess(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier id,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode)
throws org.apache.hadoop.security.token.SecretManager.InvalidToken
org.apache.hadoop.security.token.SecretManager.InvalidTokenpublic static <T> void checkAccess(T[] candidates,
T[] requested,
java.lang.String msg)
throws org.apache.hadoop.security.token.SecretManager.InvalidToken
org.apache.hadoop.security.token.SecretManager.InvalidTokenpublic void checkAccess(org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> token,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode,
org.apache.hadoop.fs.StorageType[] storageTypes,
java.lang.String[] storageIds)
throws org.apache.hadoop.security.token.SecretManager.InvalidToken
org.apache.hadoop.security.token.SecretManager.InvalidTokenpublic void checkAccess(org.apache.hadoop.security.token.Token<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier> token,
java.lang.String userId,
org.apache.hadoop.hdfs.protocol.ExtendedBlock block,
org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode mode)
throws org.apache.hadoop.security.token.SecretManager.InvalidToken
org.apache.hadoop.security.token.SecretManager.InvalidTokenpublic void setTokenLifetime(long tokenLifetime)
public org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier createIdentifier()
createIdentifier in class org.apache.hadoop.security.token.SecretManager<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier>protected byte[] createPassword(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier identifier)
createPassword in class org.apache.hadoop.security.token.SecretManager<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier>identifier - the block token identifierpublic byte[] retrievePassword(org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier identifier)
throws org.apache.hadoop.security.token.SecretManager.InvalidToken
retrievePassword in class org.apache.hadoop.security.token.SecretManager<org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier>identifier - the block token identifier to look uporg.apache.hadoop.security.token.SecretManager.InvalidTokenpublic org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey generateDataEncryptionKey()
public byte[] retrieveDataEncryptionKey(int keyId,
byte[] nonce)
throws org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException
keyId - identifier of the secret key used to generate the encryption key.nonce - random value used to create the encryption keyorg.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyExceptionpublic BlockKey getCurrentKey()
@VisibleForTesting public void setKeyUpdateIntervalForTesting(long millis)
@VisibleForTesting public void clearAllKeysForTesting()
@VisibleForTesting public boolean hasKey(int keyId)
@VisibleForTesting public int getSerialNoForTesting()
Copyright © 2008–2025 Apache Software Foundation. All rights reserved.