You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by Brock Noland <br...@cloudera.com> on 2012/09/06 17:41:21 UTC
Review Request: FLUME-1424: File Channel should support encryption
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/
-----------------------------------------------------------
Review request for Flume.
Description
-------
Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written byt 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
Below is some sample configuration:
Generating a key with a password seperate from the key store password:
keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
-keysize 192 -validity 9000 -keystore test.keystore \
-storetype jceks -storepass keyStorePassword
Generating a key with the password the same as the key store password:
keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
-keystore src/test/resources/test.keystore -storetype jceks \
-storepass keyStorePassword
Here is a basic configuration with key-0 using the same password as the key store:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-0
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0
Let's say you have aged key-0 out and new files should be encrypted with key-1:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
The same scenerio as above, however key-0 has it's own password:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
agent.channels.ch-0.encryption.keys = key-0 key-1
This addresses bug FLUME-1424.
https://issues.apache.org/jira/browse/FLUME-1424
Diffs
-----
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
Diff: https://reviews.apache.org/r/6946/diff/
Testing
-------
Unit tests added and pass.
Thanks,
Brock Noland
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Mike Percy <mp...@apache.org>.
> On Sept. 7, 2012, 10 p.m., Mike Percy wrote:
> > This is good stuff Brock. I'd like to go ahead and commit this, just one thing I'd like to change first:
> >
> > agent.channels.ch-0.encryption.keys = key-0 key-1
> > agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
> >
> > is not consistent with most config conventions we have tright now, I think it should be:
> >
> > agent.channels.ch-0.encryption.keys.key-0.passwordFile = /path/to/key-0.password
I mean:
agent.channels.ch-0.encryption.keys = key-0 key-1
agent.channels.ch-0.encryption.keys.key-0.passwordFile = /path/to/key-0.password
- Mike
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/#review11187
-----------------------------------------------------------
On Sept. 7, 2012, 9:34 p.m., Brock Noland wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/6946/
> -----------------------------------------------------------
>
> (Updated Sept. 7, 2012, 9:34 p.m.)
>
>
> Review request for Flume.
>
>
> Description
> -------
>
> Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
>
> The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
>
>
> Below is some sample configuration:
>
>
> Generating a key with a password seperate from the key store password:
>
> keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
> -keysize 192 -validity 9000 -keystore test.keystore \
> -storetype jceks -storepass keyStorePassword
>
> Generating a key with the password the same as the key store password:
>
> keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
> -keystore src/test/resources/test.keystore -storetype jceks \
> -storepass keyStorePassword
>
> Here is a basic configuration with key-0 using the same password as the key store:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-0
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.keys = key-0
>
> Let's say you have aged key-0 out and new files should be encrypted with key-1:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-1
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.keys = key-0 key-1
>
> The same scenerio as above, however key-0 has it's own password:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-1
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
> agent.channels.ch-0.encryption.keys = key-0 key-1
>
>
> This addresses bug FLUME-1424.
> https://issues.apache.org/jira/browse/FLUME-1424
>
>
> Diffs
> -----
>
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
>
> Diff: https://reviews.apache.org/r/6946/diff/
>
>
> Testing
> -------
>
> Unit tests added and pass.
>
>
> Thanks,
>
> Brock Noland
>
>
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Mike Percy <mp...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/#review11187
-----------------------------------------------------------
This is good stuff Brock. I'd like to go ahead and commit this, just one thing I'd like to change first:
agent.channels.ch-0.encryption.keys = key-0 key-1
agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
is not consistent with most config conventions we have tright now, I think it should be:
agent.channels.ch-0.encryption.keys.key-0.passwordFile = /path/to/key-0.password
- Mike Percy
On Sept. 7, 2012, 9:34 p.m., Brock Noland wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/6946/
> -----------------------------------------------------------
>
> (Updated Sept. 7, 2012, 9:34 p.m.)
>
>
> Review request for Flume.
>
>
> Description
> -------
>
> Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
>
> The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
>
>
> Below is some sample configuration:
>
>
> Generating a key with a password seperate from the key store password:
>
> keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
> -keysize 192 -validity 9000 -keystore test.keystore \
> -storetype jceks -storepass keyStorePassword
>
> Generating a key with the password the same as the key store password:
>
> keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
> -keystore src/test/resources/test.keystore -storetype jceks \
> -storepass keyStorePassword
>
> Here is a basic configuration with key-0 using the same password as the key store:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-0
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.keys = key-0
>
> Let's say you have aged key-0 out and new files should be encrypted with key-1:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-1
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.keys = key-0 key-1
>
> The same scenerio as above, however key-0 has it's own password:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-1
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
> agent.channels.ch-0.encryption.keys = key-0 key-1
>
>
> This addresses bug FLUME-1424.
> https://issues.apache.org/jira/browse/FLUME-1424
>
>
> Diffs
> -----
>
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
>
> Diff: https://reviews.apache.org/r/6946/diff/
>
>
> Testing
> -------
>
> Unit tests added and pass.
>
>
> Thanks,
>
> Brock Noland
>
>
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Mike Percy <mp...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/#review11194
-----------------------------------------------------------
Ship it!
+1 lgtm
- Mike Percy
On Sept. 7, 2012, 10:30 p.m., Brock Noland wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/6946/
> -----------------------------------------------------------
>
> (Updated Sept. 7, 2012, 10:30 p.m.)
>
>
> Review request for Flume.
>
>
> Description
> -------
>
> Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
>
> The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
>
>
> Below is some sample configuration:
>
>
> Generating a key with a password seperate from the key store password:
>
> keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
> -keysize 192 -validity 9000 -keystore test.keystore \
> -storetype jceks -storepass keyStorePassword
>
> Generating a key with the password the same as the key store password:
>
> keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
> -keystore src/test/resources/test.keystore -storetype jceks \
> -storepass keyStorePassword
>
> Here is a basic configuration with key-0 using the same password as the key store:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-0
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.keys = key-0
>
> Let's say you have aged key-0 out and new files should be encrypted with key-1:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-1
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.keys = key-0 key-1
>
> The same scenerio as above, however key-0 has it's own password:
>
> agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
> agent.channels.ch-0.encryption.keyAlias = key-1
> agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
> agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
> agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
> agent.channels.ch-0.encryption.keys = key-0 key-1
> agent.channels.ch-0.encryption.keys.key-0.passwordFile = /path/to/key-0.password
>
>
> This addresses bug FLUME-1424.
> https://issues.apache.org/jira/browse/FLUME-1424
>
>
> Diffs
> -----
>
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
> flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
>
> Diff: https://reviews.apache.org/r/6946/diff/
>
>
> Testing
> -------
>
> Unit tests added and pass.
>
>
> Thanks,
>
> Brock Noland
>
>
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Brock Noland <br...@cloudera.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/
-----------------------------------------------------------
(Updated Sept. 7, 2012, 10:30 p.m.)
Review request for Flume.
Changes
-------
patch which addresses mike's feedback
Description
-------
Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
Below is some sample configuration:
Generating a key with a password seperate from the key store password:
keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
-keysize 192 -validity 9000 -keystore test.keystore \
-storetype jceks -storepass keyStorePassword
Generating a key with the password the same as the key store password:
keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
-keystore src/test/resources/test.keystore -storetype jceks \
-storepass keyStorePassword
Here is a basic configuration with key-0 using the same password as the key store:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-0
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0
Let's say you have aged key-0 out and new files should be encrypted with key-1:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
The same scenerio as above, however key-0 has it's own password:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
agent.channels.ch-0.encryption.keys.key-0.passwordFile = /path/to/key-0.password
This addresses bug FLUME-1424.
https://issues.apache.org/jira/browse/FLUME-1424
Diffs (updated)
-----
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
Diff: https://reviews.apache.org/r/6946/diff/
Testing
-------
Unit tests added and pass.
Thanks,
Brock Noland
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Brock Noland <br...@cloudera.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/
-----------------------------------------------------------
(Updated Sept. 7, 2012, 10:10 p.m.)
Review request for Flume.
Changes
-------
Updated description to match new config syntax.
Description (updated)
-------
Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
Below is some sample configuration:
Generating a key with a password seperate from the key store password:
keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
-keysize 192 -validity 9000 -keystore test.keystore \
-storetype jceks -storepass keyStorePassword
Generating a key with the password the same as the key store password:
keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
-keystore src/test/resources/test.keystore -storetype jceks \
-storepass keyStorePassword
Here is a basic configuration with key-0 using the same password as the key store:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-0
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0
Let's say you have aged key-0 out and new files should be encrypted with key-1:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
The same scenerio as above, however key-0 has it's own password:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
agent.channels.ch-0.encryption.keys.key-0.passwordFile = /path/to/key-0.password
This addresses bug FLUME-1424.
https://issues.apache.org/jira/browse/FLUME-1424
Diffs
-----
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
Diff: https://reviews.apache.org/r/6946/diff/
Testing
-------
Unit tests added and pass.
Thanks,
Brock Noland
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Brock Noland <br...@cloudera.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/
-----------------------------------------------------------
(Updated Sept. 7, 2012, 9:34 p.m.)
Review request for Flume.
Changes
-------
Just rebased on top of FLUME-1487
Description
-------
Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
Below is some sample configuration:
Generating a key with a password seperate from the key store password:
keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
-keysize 192 -validity 9000 -keystore test.keystore \
-storetype jceks -storepass keyStorePassword
Generating a key with the password the same as the key store password:
keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
-keystore src/test/resources/test.keystore -storetype jceks \
-storepass keyStorePassword
Here is a basic configuration with key-0 using the same password as the key store:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-0
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0
Let's say you have aged key-0 out and new files should be encrypted with key-1:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
The same scenerio as above, however key-0 has it's own password:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
agent.channels.ch-0.encryption.keys = key-0 key-1
This addresses bug FLUME-1424.
https://issues.apache.org/jira/browse/FLUME-1424
Diffs (updated)
-----
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
Diff: https://reviews.apache.org/r/6946/diff/
Testing
-------
Unit tests added and pass.
Thanks,
Brock Noland
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Brock Noland <br...@cloudera.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/
-----------------------------------------------------------
(Updated Sept. 7, 2012, 8:25 p.m.)
Review request for Flume.
Changes
-------
Merged in latest changes from FLUME-1487. No manual merging was required.
Description
-------
Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
Below is some sample configuration:
Generating a key with a password seperate from the key store password:
keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
-keysize 192 -validity 9000 -keystore test.keystore \
-storetype jceks -storepass keyStorePassword
Generating a key with the password the same as the key store password:
keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
-keystore src/test/resources/test.keystore -storetype jceks \
-storepass keyStorePassword
Here is a basic configuration with key-0 using the same password as the key store:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-0
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0
Let's say you have aged key-0 out and new files should be encrypted with key-1:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
The same scenerio as above, however key-0 has it's own password:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
agent.channels.ch-0.encryption.keys = key-0 key-1
This addresses bug FLUME-1424.
https://issues.apache.org/jira/browse/FLUME-1424
Diffs (updated)
-----
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
Diff: https://reviews.apache.org/r/6946/diff/
Testing
-------
Unit tests added and pass.
Thanks,
Brock Noland
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Brock Noland <br...@cloudera.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/
-----------------------------------------------------------
(Updated Sept. 6, 2012, 4:24 p.m.)
Review request for Flume.
Changes
-------
Cleaned up Encryptor/Decryptor interface. Instead of wrapping everything in ByteBuffers, we stick with byte[].
Description
-------
Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
Below is some sample configuration:
Generating a key with a password seperate from the key store password:
keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
-keysize 192 -validity 9000 -keystore test.keystore \
-storetype jceks -storepass keyStorePassword
Generating a key with the password the same as the key store password:
keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
-keystore src/test/resources/test.keystore -storetype jceks \
-storepass keyStorePassword
Here is a basic configuration with key-0 using the same password as the key store:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-0
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0
Let's say you have aged key-0 out and new files should be encrypted with key-1:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
The same scenerio as above, however key-0 has it's own password:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
agent.channels.ch-0.encryption.keys = key-0 key-1
This addresses bug FLUME-1424.
https://issues.apache.org/jira/browse/FLUME-1424
Diffs (updated)
-----
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
Diff: https://reviews.apache.org/r/6946/diff/
Testing
-------
Unit tests added and pass.
Thanks,
Brock Noland
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Brock Noland <br...@cloudera.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/
-----------------------------------------------------------
(Updated Sept. 6, 2012, 3:52 p.m.)
Review request for Flume.
Changes
-------
Updated patch to remove whitespace.
Description
-------
Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
Below is some sample configuration:
Generating a key with a password seperate from the key store password:
keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
-keysize 192 -validity 9000 -keystore test.keystore \
-storetype jceks -storepass keyStorePassword
Generating a key with the password the same as the key store password:
keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
-keystore src/test/resources/test.keystore -storetype jceks \
-storepass keyStorePassword
Here is a basic configuration with key-0 using the same password as the key store:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-0
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0
Let's say you have aged key-0 out and new files should be encrypted with key-1:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
The same scenerio as above, however key-0 has it's own password:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
agent.channels.ch-0.encryption.keys = key-0 key-1
This addresses bug FLUME-1424.
https://issues.apache.org/jira/browse/FLUME-1424
Diffs (updated)
-----
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
Diff: https://reviews.apache.org/r/6946/diff/
Testing
-------
Unit tests added and pass.
Thanks,
Brock Noland
Re: Review Request: FLUME-1424: File Channel should support encryption
Posted by Brock Noland <br...@cloudera.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6946/
-----------------------------------------------------------
(Updated Sept. 6, 2012, 3:44 p.m.)
Review request for Flume.
Changes
-------
Updated description
Description (updated)
-------
Patch which resolves FLUME-1424, it's on top of the latest FLUME-1487 patch. Additionally, it changes the output format slightly so we would not want to make a release with only FLUME-1487 since files written by 1487 are not readable by 1424. We could add yet another version to get around this, but since both patches will be committed to trunk in the same major release, it makes sense to make them a pair.
The reason for this change was to make our read interface the same as our write interface. So now we read/write a ByteBuffer and then handle it however we need to.
Below is some sample configuration:
Generating a key with a password seperate from the key store password:
keytool -genseckey -alias key-0 -keypass keyPassword -keyalg AES \
-keysize 192 -validity 9000 -keystore test.keystore \
-storetype jceks -storepass keyStorePassword
Generating a key with the password the same as the key store password:
keytool -genseckey -alias key-1 -keyalg AES -keysize 192 -validity 9000 \
-keystore src/test/resources/test.keystore -storetype jceks \
-storepass keyStorePassword
Here is a basic configuration with key-0 using the same password as the key store:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-0
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0
Let's say you have aged key-0 out and new files should be encrypted with key-1:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.keys = key-0 key-1
The same scenerio as above, however key-0 has it's own password:
agent.channels.ch-0.encryption.keyProvider = JCEKSFILE
agent.channels.ch-0.encryption.keyAlias = key-1
agent.channels.ch-0.encryption.cipherProvider = AESCTRNOPADDING
agent.channels.ch-0.encryption.keyStoreFile = /path/to/my.keystore
agent.channels.ch-0.encryption.keyStorePasswordFile = /path/to/my.keystore.password
agent.channels.ch-0.encryption.key-0 = /path/to/key-0.password
agent.channels.ch-0.encryption.keys = key-0 key-1
This addresses bug FLUME-1424.
https://issues.apache.org/jira/browse/FLUME-1424
Diffs
-----
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/CheckpointRebuilder.java 32b5324
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/FileChannel.java 5d588ea
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/Log.java e13ecc4
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFile.java 2867fc7
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV2.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/LogFileV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/ReplayHandler.java 4e908ec
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/TransactionEventRecord.java 67c68f8
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/AESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/CipherProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/EncryptionConfiguration.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/JCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderFactory.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/java/org/apache/flume/channel/file/encryption/KeyProviderType.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/main/proto/filechannel.proto PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestFileChannel.java 35521d1
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestLogFile.java 193cd2b
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestTransactionEventRecordV3.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/TestUtils.java e64f856
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/CipherProviderTestSuite.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/EncryptionTestUtils.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestAESCTRNoPaddingProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestFileChannelEncryption.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/java/org/apache/flume/channel/file/encryption/TestJCEFileKeyProvider.java PRE-CREATION
flume-ng-channels/flume-file-channel/src/test/resources/test.keystore PRE-CREATION
Diff: https://reviews.apache.org/r/6946/diff/
Testing
-------
Unit tests added and pass.
Thanks,
Brock Noland