A system comprising: one or more processors; and a memory storing instructions that, when executed by the one or more processors, cause the system to perform: encrypting a symmetric key using a public key of a log producer that has authority to produce a log for a dataset to generate a first key; encrypting the symmetric key using a public key of a log accessor that has authority to access the log to generate a second key; storing the first key and the second key in a first datastore; encrypting the dataset using the symmetric key; storing the encrypted dataset in a second datastore; receiving, from the log producer, a first request to access the encrypted dataset; returning the first key to the log producer, wherein, after being decrypted using a secret key of the log producer, the decrypted first key enables decryption of the encrypted dataset and access to the dataset, and wherein the decrypted first key enables encryption of the log, wherein the decrypted first key is usable for a limited time, or becomes unusable upon generating the encrypted log; receiving, from the log accessor, a second request to obtain the second key; and returning the second key to the log accessor, wherein after being decrypted using a secret key of the log accessor, the decrypted second key enables decryption of and access to the encrypted log, wherein the decrypted second key is usable for a limited time, or becomes unusable upon decrypting the encrypted log. one or more processors; and a memory storing instructions that, when executed by the one or more processors, cause the system to perform: encrypting a symmetric key using a public key of a log producer that has authority to produce a log for a dataset to generate a first key; encrypting the symmetric key using a public key of a log accessor that has authority to access the log to generate a second key; storing the first key and the second key in a first datastore; encrypting the dataset using the symmetric key; storing the encrypted dataset in a second datastore; receiving, from the log producer, a first request to access the encrypted dataset; returning the first key to the log producer, wherein, after being decrypted using a secret key of the log producer, the decrypted first key enables decryption of the encrypted dataset and access to the dataset, and wherein the decrypted first key enables encryption of the log, wherein the decrypted first key is usable for a limited time, or becomes unusable upon generating the encrypted log; receiving, from the log accessor, a second request to obtain the second key; and returning the second key to the log accessor, wherein after being decrypted using a secret key of the log accessor, the decrypted second key enables decryption of and access to the encrypted log, wherein the decrypted second key is usable for a limited time, or becomes unusable upon decrypting the encrypted log. encrypting a symmetric key using a public key of a log producer that has authority to produce a log for a dataset to generate a first key; encrypting the symmetric key using a public key of a log accessor that has authority to access the log to generate a second key; storing the first key and the second key in a first datastore; encrypting the dataset using the symmetric key; storing the encrypted dataset in a second datastore; receiving, from the log producer, a first request to access the encrypted dataset; returning the first key to the log producer, wherein, after being decrypted using a secret key of the log producer, the decrypted first key enables decryption of the encrypted dataset and access to the dataset, and wherein the decrypted first key enables encryption of the log, wherein the decrypted first key is usable for a limited time, or becomes unusable upon generating the encrypted log; receiving, from the log accessor, a second request to obtain the second key; and returning the second key to the log accessor, wherein after being decrypted using a secret key of the log accessor, the decrypted second key enables decryption of and access to the encrypted log, wherein the decrypted second key is usable for a limited time, or becomes unusable upon decrypting the encrypted log.