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
(keyId
, algorithm
, version
,
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.