Writing and Reading Event Records
Once the repository is initialized, all provenance event record write operations are serialized according to the configured schema writer (
EventIdFirstSchemaRecordWriter by default for
WriteAheadProvenanceRepository) to a
byte. Those bytes are then encrypted using an implementation of
ProvenanceEventEncryptor (the only current implementation is
AES/GCM/NoPadding) and the encryption metadata (
IV) is serialized and prepended. The complete
byte is then written to the repository on disk as normal.
On record read, the process is reversed. The encryption metadata is parsed and used to decrypt the serialized bytes, which are then deserialized into a
ProvenanceEventRecord object. The delegation to the normal schema record writer/reader allows for "random-access" (i.e. immediate seek without decryption of unnecessary records).
Within the NiFi UI/API, there is no detectable difference between an encrypted and unencrypted provenance repository. The Provenance Query operations work as expected with no change to the process.