> Can you explain why such restriction is necessary ?

Reencryption should have a minimum impact on the cluster.

> Most likely having a currently re-encrypting node serving only demand 
> requests will have least preformance impact on a grid.

Current design assumes that reencryption will started on all noes 
simultaneously.


Makes sense?

> 25 мая 2020 г., в 11:16, Alexei Scherbakov <alexey.scherbak...@gmail.com> 
> написал(а):
> 
> I mean: serving supply requests.
> 
> пн, 25 мая 2020 г. в 11:15, Alexei Scherbakov <alexey.scherbak...@gmail.com
>> :
> 
>> Nikolay,
>> 
>> Can you explain why such restriction is necessary ?
>> Most likely having a currently re-encrypting node serving only demand
>> requests will have least preformance impact on a grid.
>> 
>> пн, 25 мая 2020 г. в 11:08, Nikolay Izhikov <nizhi...@apache.org>:
>> 
>>> Hello, Alexei.
>>> 
>>> I think we want to implement this feature without nodes restart.
>>> In the ideal scenario all nodes will stay alive and respond to the user
>>> requests.
>>> 
>>>> 24 мая 2020 г., в 15:24, Alexei Scherbakov <
>>> alexey.scherbak...@gmail.com> написал(а):
>>>> 
>>>> Pavel Pereslegin,
>>>> 
>>>> I see another opportunity.
>>>> We can use rebalancing to re-encrypt node data with a new key.
>>>> It's a trivial procedure for me: stop a node, clear database, change a
>>> key,
>>>> start node and wait for rebalancing to complete.
>>>> Data will be re-encrypted during rebalancing.
>>>> 
>>>> Did I miss something ?
>>>> 
>>>> пт, 22 мая 2020 г. в 16:14, Ivan Rakov <ivan.glu...@gmail.com>:
>>>> 
>>>>> Folks,
>>>>> 
>>>>> Just keeping you informed: I and my colleagues are highly interested
>>> in TDE
>>>>> in general and keys rotations specifically, but we don't have enough
>>> time
>>>>> so far.
>>>>> We'll dive into this feature and participate in reviews next month.
>>>>> 
>>>>> --
>>>>> Best Regards,
>>>>> Ivan Rakov
>>>>> 
>>>>> On Sun, May 17, 2020 at 10:51 PM Pavel Pereslegin <xxt...@gmail.com>
>>>>> wrote:
>>>>> 
>>>>>> Hello, Alexey.
>>>>>> 
>>>>>>> is the encryption key for the data the same on all nodes in the
>>>>> cluster?
>>>>>> Yes, each encrypted cache group has its own encryption key, the key is
>>>>>> the same on all nodes.
>>>>>> 
>>>>>>> Clearly, during the re-encryption there will exist pages
>>>>>>> encrypted with both new and old keys at the same time.
>>>>>> Yes, there will be pages encrypted with different keys at the same
>>> time.
>>>>>> Currently, we only store one key for one cache group. To rotate a key,
>>>>>> at a certain point in time it is necessary to support several keys (at
>>>>>> least for reading the WAL).
>>>>>> For the "in place" strategy, we'll store the encryption key identifier
>>>>>> on each encrypted page (we currently have some unused space on
>>>>>> encrypted page, so I don't expect any memory overhead here). Thus, we
>>>>>> will have several keys for reading and one key for writing. I assume
>>>>>> that the old key will be automatically deleted when a specific WAL
>>>>>> segment is deleted (and re-encryption is finished).
>>>>>> 
>>>>>>> Will a node continue to re-encrypt the data after it restarts?
>>>>>> Yes.
>>>>>> 
>>>>>>> If a node goes down during the re-encryption, but the rest of the
>>>>>>> cluster finishes re-encryption, will we consider the procedure
>>>>> complete?
>>>>>> I'm not sure, but it looks like the key rotation is complete when we
>>>>>> set the new key on all nodes so that the updates will be encrypted
>>>>>> with the new key (as required by PCI DSS).
>>>>>> Status of re-encryption can be obtained separately (locally or cluster
>>>>>> wide).
>>>>>> 
>>>>>> I forgot to mention that with “in place” re-encryption it will be
>>>>>> impossible to quickly cancel re-encryption, because by canceling we
>>>>>> mean re-encryption with the old key.
>>>>>> 
>>>>>>> How do you see the whole key rotation procedure will work?
>>>>>> Initial design for re-encryption with "partition copying" is described
>>>>>> here [1]. I'll prepare detailed design for "in place" re-encryption if
>>>>>> we'll go this way. In short, send the new encryption key cluster-wide,
>>>>>> each node adds a new key and starts background re-encryption.
>>>>>> 
>>>>>> [1]
>>>>>> 
>>>>> 
>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95652384#TDE.Phase-3.Cachekeyrotation.-Copywithre-encryptiondesign
>>>>>> .
>>>>>> 
>>>>>> вс, 17 мая 2020 г. в 18:35, Alexey Goncharuk <
>>> alexey.goncha...@gmail.com
>>>>>> :
>>>>>>> 
>>>>>>> Pavel, Anton,
>>>>>>> 
>>>>>>> How do you see the whole key rotation procedure will work? Clearly,
>>>>>> during
>>>>>>> the re-encryption there will exist pages encrypted with both new and
>>>>> old
>>>>>>> keys at the same time. Will a node continue to re-encrypt the data
>>>>> after
>>>>>> it
>>>>>>> restarts? If a node goes down during the re-encryption, but the rest
>>> of
>>>>>> the
>>>>>>> cluster finishes re-encryption, will we consider the procedure
>>>>> complete?
>>>>>> By
>>>>>>> the way, is the encryption key for the data the same on all nodes in
>>>>> the
>>>>>>> cluster?
>>>>>>> 
>>>>>>> чт, 14 мая 2020 г. в 11:30, Anton Vinogradov <a...@apache.org>:
>>>>>>> 
>>>>>>>> +1 to "In place re-encryption".
>>>>>>>> 
>>>>>>>> - It has a simple design.
>>>>>>>> - Clusters under load may require just load to re-encrypt the data.
>>>>>>>> (Friendly to load).
>>>>>>>> - Easy to throttle.
>>>>>>>> - Easy to continue.
>>>>>>>> - Design compatible with the multi-key architecture.
>>>>>>>> - It can be optimized to use own WAL buffer and to re-encrypt pages
>>>>>> without
>>>>>>>> restoring them to on-heap.
>>>>>>>> 
>>>>>>>> On Thu, May 14, 2020 at 1:54 AM Pavel Pereslegin <xxt...@gmail.com>
>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Hello Igniters.
>>>>>>>>> 
>>>>>>>>> Recently, master key rotation for Apache Ignite Transparent Data
>>>>>>>>> Encryption was implemented [1], but some security standards (PCI
>>>>> DSS
>>>>>>>>> at least) require rotation of all encryption keys [2]. Currently,
>>>>>>>>> encryption occurs when reading/writing pages to disk, cache
>>>>>> encryption
>>>>>>>>> keys are stored in metastore.
>>>>>>>>> 
>>>>>>>>> I'm going to contribute cache encryption key rotation and want to
>>>>>>>>> consult what is the best way to re-encrypting existing data, I see
>>>>>> two
>>>>>>>>> different strategies.
>>>>>>>>> 
>>>>>>>>> 1. In place re-encryption:
>>>>>>>>> Using the old key, sequentially read all the pages from the
>>>>>> datastore,
>>>>>>>>> mark as dirty and log them into the WAL. After checkpoint pages
>>>>> will
>>>>>>>>> be stored to disk encrypted with the new key (as usual, along with
>>>>>>>>> updates). This strategy requires store the identifier (number) of
>>>>> the
>>>>>>>>> encryption key into the encrypted page.
>>>>>>>>> pros:
>>>>>>>>> - can work in the background with minimal performance impact
>>>>> (this
>>>>>>>>> impact can be managed).
>>>>>>>>> cons:
>>>>>>>>> - page duplication in the WAL may affect performance and
>>>>> historical
>>>>>>>>> rebalance.
>>>>>>>>> 
>>>>>>>>> 2. Copy partition with re-encryption.
>>>>>>>>> This strategy is similar to partition snapshotting [3] - create
>>>>>>>>> partition copy encrypted with the new key and then replace the
>>>>>>>>> original partition file with the new one (see details [4]).
>>>>>>>>> pros:
>>>>>>>>> - should work faster than "in place" re-encryption.
>>>>>>>>> cons:
>>>>>>>>> - re-encryption in active cluster (and on unstable topology) can
>>>>> be
>>>>>>>>> difficult to implement.
>>>>>>>>> 
>>>>>>>>> (See more detailed comparison [5])
>>>>>>>>> 
>>>>>>>>> Re-encryption of existing data is a long and rare procedure (It is
>>>>>>>>> recommended to change the key every 6 months, but at least once
>>>>> every
>>>>>>>>> 2 years). Thus, re-encryption can be implemented for maintenance
>>>>> mode
>>>>>>>>> (for example, on a stable topology in a read-only cluster) and in
>>>>>> such
>>>>>>>>> case the approach with partition copying seems simpler and faster.
>>>>>>>>> 
>>>>>>>>> So, what do you think - do we need "online" re-encryption and which
>>>>>> of
>>>>>>>>> the proposed options is best suited for this?
>>>>>>>>> 
>>>>>>>>> [1] https://issues.apache.org/jira/browse/IGNITE-12186
>>>>>>>>> [2]
>>>>>> https://www.pcisecuritystandards.org/documents/PCI_DSS_v3-2-1.pdf
>>>>>>>>> [3]
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-43%3A+Cluster+snapshots#IEP-43:Clustersnapshots-Partitionscopystrategy
>>>>>>>>> [4]
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95652384#TDE.Phase-3.Cachekeyrotation.-Copywithre-encryptiondesign
>>>>>>>>> .
>>>>>>>>> [5]
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=95652384#TDE.Phase-3.Cachekeyrotation.-Comparison
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> --
>>>> 
>>>> Best regards,
>>>> Alexei Scherbakov
>>> 
>>> 
>> 
>> --
>> 
>> Best regards,
>> Alexei Scherbakov
>> 
> 
> 
> -- 
> 
> Best regards,
> Alexei Scherbakov

Reply via email to