[Freeipa-devel] DNSSEC: LDAP schema requirements

Petr Spacek pspacek at redhat.com
Wed Mar 12 17:08:18 UTC 2014


On 12.3.2014 16:54, Ludwig Krispenz wrote:
>
> On 03/12/2014 04:28 PM, Petr Spacek wrote:
>> On 12.3.2014 14:07, Ludwig Krispenz wrote:
>>>
>>> On 03/12/2014 01:09 PM, Petr Spacek wrote:
>>>> On 12.3.2014 12:12, Ludwig Krispenz wrote:
>>>>> On 03/11/2014 11:33 AM, Petr Spacek wrote:
>>>>>> On 10.3.2014 12:08, Martin Kosek wrote:
>>>>>>> On 03/10/2014 11:49 AM, Petr Spacek wrote:
>>>>>>>> On 7.3.2014 17:33, Dmitri Pal wrote:
>>>>>>>>> I do not think it is the right architectural approach to try to fix a
>>>>>>>>> specific
>>>>>>>>> use case with one off solution while we already know that we need a key
>>>>>>>>> storage.
>>>>>>>>> I would rather do things right and reusable than jam them into the
>>>>>>>>> currently
>>>>>>>>> proposed release boundaries.
>>>>>>>> I want to make clear that I'm not opposed to Vault in general. I'm
>>>>>>>> questioning
>>>>>>>> the necessity of Vault from the beginning because it will delay DNSSEC
>>>>>>>> significantly.
>>>>>>>
>>>>>>> +1, I also now see number of scenarios where Vault will be needed.
>>>>>>>
>>>>>>>>
>>>>>>>> One of the proposals in this thread is to use something simple for DNSSEC
>>>>>>>> keys
>>>>>>>> (with few lines of Python code) and migrate DNSSEC with Vault when
>>>>>>>> Vault is
>>>>>>>> available and stable enough (in some later release).
>>>>>>>>
>>>>>>>>> I understand that Vault brings a lot of work to the table. But let us
>>>>>>>>> do it
>>>>>>>>> right and if it does not fit into 4.0 let us do it in 4.1.
>>>>>>>> We will have one huge release with DNSSEC + Vault at once if we to
>>>>>>>> postpone
>>>>>>>> DNSSEC to the same release as Vault.
>>>>>>>>
>>>>>>>> As a result, it would be harder to debug it because we will have to
>>>>>>>> find if
>>>>>>>> something is broken because of:
>>>>>>>> - DNSSEC-IPA integration
>>>>>>>> - Vault-IPA integration
>>>>>>>> - DNSSEC-Vault integration.
>>>>>>>>
>>>>>>>> I don't think it is a good idea to make such huge release.
>>>>>>>>
>>>>>>>> "Release early, release often"
>>>>>>>>
>>>>>>>
>>>>>>> I must say I tend to agree with Petr. If the "poor man's solution" of
>>>>>>> DNSSEC
>>>>>>> without Vault does not cost us too much time and it would seem that the
>>>>>>> Vault
>>>>>>> is not going to squeeze in 4.0 deadlines, I would rather release the poor
>>>>>>> man's
>>>>>>> solution in 4.0 and switch to Vault when it's available in 4.1.
>>>>>>>
>>>>>>> This would let our users test the non-Vault parts of our DNSSEC solution
>>>>>>> instead of waiting to test a perfect solution.
>>>>>>
>>>>>> Yesterday we have agreed that DNSSEC support is not going to depend on
>>>>>> Vault
>>>>>> from the beginning and that we can migrate to Vault later.
>>>>>>
>>>>>> Here I'm proposing safe upgrade path from non-vault to Vault solution.
>>>>>>
>>>>>> After all, it seems relatively easy.
>>>>>>
>>>>>> TL;DR version
>>>>>> =============
>>>>>> Use information in cn=masters to detect if there are old replicas and
>>>>>> temporarily convert new keys from Vault to LDAP storage (until all old
>>>>>> replicas are deleted).
>>>>>>
>>>>>> Full version
>>>>>> ============
>>>>>> IPA 4.0 is going to have OpenDNSSEC key generator on a single IPA server
>>>>>> and
>>>>>> separate key import/export daemon (i.e. script called from cron or
>>>>>> something
>>>>>> like that) on all IPA servers.
>>>>>>
>>>>>> In 4.0, we can add new LDAP objects for DNSSEC-related IPA services (please
>>>>>> propose better names :-):
>>>>>> - key generator:
>>>>>> cn=OpenDNSSECv1,cn=vm.example.com,cn=masters,cn=ipa,cn=etc,dc=ipa,dc=example
>>>>>>
>>>>>>
>>>>>> - key imported/exporter:
>>>>>> cn=DNSSECKeyImporterv1,cn=vm.example.com,cn=masters,cn=ipa,cn=etc,dc=ipa,dc=example
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Initial state before upgrade:
>>>>>> - N IPA 4.0 replicas
>>>>>> - N DNSSECKeyImporterv1 service instances (i.e. key distribution for IPA
>>>>>> 4.0)
>>>>>> - 1 OpenDNSSECv1 service instance (key generator)
>>>>>>
>>>>>> Now we want to upgrade a first replica to IPA 4.1. For simplicity, let's
>>>>>> add
>>>>>> a *requirement* to upgrade the replica with OpenDNSSECv1 first. (We can
>>>>>> generalize the procedure if this requirement is not acceptable.)
>>>>>>
>>>>>> Upgrade procedure:
>>>>>> - stop OpenDNSSECv1 service
>>>>>> - stop DNSSECKeyImporterv1 service
>>>>>> - convert OpenDNSSECv1 database to OpenDNSSECv2
>>>>>> This step is not related to Vault. We need to covert local SQLite database
>>>>>> from single-node OpenDNSSEC to LDAP-backed distributed OpenDNSSEC.
>>>>> do we need to convert SQLite ? I thought in phase 1 we would have scripts
>>>>> exporting from OpenDNSSEC database and store in ldap, then the data already
>>>>> exist in ldap. We would ned to replace the sofhthsm module by our own pkcs11
>>>>> module using ldap dn directly
>>>>
>>>> I'm sorry for not being clear.
>>>>
>>>> The short-term plain is going to be executed without significant changes:
>>>> https://fedorahosted.org/bind-dyndb-ldap/wiki/BIND9/Design/DNSSEC/Keys/Shortterm
>>>>
>>>>
>>>>
>>>> This discussion is more about potential problems with upgrade from
>>>> short-term solution to the long-term one - I'm updating
>>>> https://fedorahosted.org/bind-dyndb-ldap/wiki/BIND9/Design/DNSSEC/Keys/Longterm
>>>>
>>>> right now.
>>>>
>>>> To answer your question about SQLite database:
>>>> We will have *encryption keys* in LDAP already from the very beginning
>>>> (exported to LDAP by a script) so upgrade from export script to PKCS#11
>>>> module should be be smooth.
>>>>
>>>> The problem is with various metadata stored in OpenDNSSEC's database so we
>>>> will have to convert them to LDAP. In short-term we have neither intent nor
>>>> time to design a LDAP schema for OpenDNSSEC database, just for the keys.
>>> the schema proposal contains attributes for the metadata, so this should be
>> The current schema stores only PKCS#11 metadata but nothing about
>> key&signing policy and other DNSSEC-related stuff.
>>
>> We don't have complete schema and we don't have to have it now. Look at the
>> SQLite database in opendnssecv143.sqlite3.bz2 - it is pretty complex.
> ok, so this is not the softhsm pkcs11 sqlite database, but  a db containing
> other dnssec data, you didn't say that we need ldap schema for this and for
> which subset of it

I'm sorry for the confusion. Let me clarify it:

For short-term we need this:
===========================
1) A future-proof schema for key material storage.
This will be used by scripts in short-term and my PKCS#11 module in long-term. 
It needs to be same. There is nothing specific to DNSSEC.
This schema is being designed on
http://www.freeipa.org/page/V4/PKCS11_in_LDAP/Schema
(This is your original proposal - I have moved it to freeipa.org :-))

2) Some minimal subset of DNSSEC-specific metadata required for converting key 
material from LDAP to BIND key files as we already discussed before. This will 
include just few timestamps, nothing huge.
This small schema will be used by scripts in short-term and by OpenDNSSEC in 
long-term. So we also need to design it in a future-proof way but this should 
be relatively simple in comparison with the PKCS#11 schema.
There is no design page for it right now because I'm still looking into 
OpenDNSSEC sources to make sure that I'm not missing something important.


For long-term we need this:
==========================
3) Prepare full LDAP schema for OpenDNSSEC v2 and migration scripts from 
OpenDNSSEC v1 (with SQL backend) to v2 (with LDAP backend).

4) (optionally) Prepare a schema amendment for PKCS#11 which will allow us to 
store keys in Vault instead of plain LDAP. This will be most probably one new 
objectClass for private keys or something like that. Maybe we can design it 
now and make PKCS#11 to return ENOTIMPLEMENTED if it encounters the new 
objectClass.

Petr^2 Spacek

>> We don't have time to prepare schema & port OpenDNSSECv1 to LDAP backend.
>> (Other aspect is that the schema is different for OpenDNSSEC v2.)
>>
>>> ok. But I think right now the export function available in opendnsssec/softhsm
>>> only exports keys. We would have to have sql scripts to read and convert the
>>> sqlite3 database
>>
>> Yes, we will have to have such script for upgrades from short-term ->
>> long-term solution.




More information about the Freeipa-devel mailing list