Encrypting Data with user + custodian private keys I want to be able to have a private user key (system generated) which, if destroyed, effectively renders all user data unrecoverable. This key would be used across the entire system to protect the user's data. Instead of having to implement and maintain integrations across all systems to delete  a user's sensitive data  we could just delete the key, rendering the data useless. However, the problem with this is that there is no granularity: the system has multiple custodians and each custodian should be able to determine who has access to decrypt the message. 

We've been using KMS data keys for envelope encryption so the system must have permission to decrypt the envelope key before they can decrypt the message. I was hoping to be able to do something similar but incorporating the use of a user-specific key.
I gave this some more thought over the weekend and came up with a simpler solution. We'll store the data encrypted with the user key. For in-transit encryption we'll use a service key. The user data will be decrypted on read with the user key and then re-encrypted with the service key before transmitting the data. The data consumer will be required to have access to the service key to read it. This will also meet the requirement that the data will be rendered unrecoverable by deleting the user key.