Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-12 Thread Simo Sorce
On Fri, 12 Dec 2014 10:20:28 +0100
Jan Cholasta  wrote:

> Hi,
> 
> Dne 1.12.2014 v 17:12 Simo Sorce napsal(a):
> > On Mon, 01 Dec 2014 16:17:54 +0100
> > Petr Spacek  wrote:
> >
> >> On 14.11.2014 17:31, Petr Spacek wrote:
> >>> On 14.11.2014 02:22, Simo Sorce wrote:
>  I think what I'd like to see is to be able to configure a DNS
>  zone in LDAP and mark it external.
>  The zone would held the TSIG keys necessary to perform DNS
>  updates.
> 
>  When the regular ipa dnsrecord-add etc... commands are called,
>  the framework detects that the zone is "external", fewttches the
>  TSIG key (if the user has access to it) and spawn an nsupdate
>  command that will perform the update against whatever DNS server
>  is authoritative for the zone.
> 
> >> Would it be feasible to use FreeIPA server as XML-RPC->DNS proxy
> >> instead of nsupdate command (to hide TSIG key behind FreeIPA)?
> 
> > I do not like the XML-RPC->DNS approach as it requires a special
> > client, leaving out the majority of clients.
> 
> I'm confused. Above you have suggested hiding the nsupdate machinery 
> behind the framework and now you are saying that you do not like the 
> XML-RPC->DNS approach. But the framework talks XML-RPC (and JSON-RPC) 
> and using *anything else* would require a special client. Or did you 
> mean some other XML-RPC->DNS?

I do not like XML-RPC -> DNS for when clients need to update the DNS.
For the FreeIPA server itself or the manager working through the
framework it is just fine of course, but then it is an internal detail.


> > Also, I am thinking that we only _need_ to set infrastructure
> > relevant names (like IPA servers SRV records), but if someone
> > decides not to use IPA for the DNS we may decide that it is not our
> > responsibility to provide a full end-to-end client dns update
> > solution.
> >
> > So I would concentrate on making it possible for IPA *Servers* to
> > use a private TSIG key to update infrastructure relevant names, and
> > possibly defer the clients side of the problem.
> >
> > We could use an internal bus on the server to allow the ipa
> > framework to use nsupdate w/o gaining direct access to the TSIG
> > key, this way admins can use ipa dnsrecod-add and friends w/o
> > exposing the key.
> 
> +1, we had a short discussion about external DNS with Petr yesterday
> and reached the same conclusion.

Nice :)

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-12 Thread Jan Cholasta

Hi,

Dne 1.12.2014 v 17:12 Simo Sorce napsal(a):

On Mon, 01 Dec 2014 16:17:54 +0100
Petr Spacek  wrote:


On 14.11.2014 17:31, Petr Spacek wrote:

On 14.11.2014 02:22, Simo Sorce wrote:

I think what I'd like to see is to be able to configure a DNS zone
in LDAP and mark it external.
The zone would held the TSIG keys necessary to perform DNS updates.

When the regular ipa dnsrecord-add etc... commands are called, the
framework detects that the zone is "external", fewttches the TSIG
key (if the user has access to it) and spawn an nsupdate command
that will perform the update against whatever DNS server is
authoritative for the zone.



Would it be feasible to use FreeIPA server as XML-RPC->DNS proxy
instead of nsupdate command (to hide TSIG key behind FreeIPA)?



I do not like the XML-RPC->DNS approach as it requires a special
client, leaving out the majority of clients.


I'm confused. Above you have suggested hiding the nsupdate machinery 
behind the framework and now you are saying that you do not like the 
XML-RPC->DNS approach. But the framework talks XML-RPC (and JSON-RPC) 
and using *anything else* would require a special client. Or did you 
mean some other XML-RPC->DNS?




Also, I am thinking that we only _need_ to set infrastructure relevant
names (like IPA servers SRV records), but if someone decides not to use
IPA for the DNS we may decide that it is not our responsibility to
provide a full end-to-end client dns update solution.

So I would concentrate on making it possible for IPA *Servers* to use a
private TSIG key to update infrastructure relevant names, and possibly
defer the clients side of the problem.

We could use an internal bus on the server to allow the ipa framework
to use nsupdate w/o gaining direct access to the TSIG key, this way
admins can use ipa dnsrecod-add and friends w/o exposing the key.


+1, we had a short discussion about external DNS with Petr yesterday and 
reached the same conclusion.


Honza

--
Jan Cholasta

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-11 Thread Martin Kosek
On 12/11/2014 03:05 PM, Simo Sorce wrote:
> On Thu, 11 Dec 2014 10:43:02 +0100
> Petr Spacek  wrote:
> 
>> On 10.12.2014 18:50, Simo Sorce wrote:
>>> On Wed, 10 Dec 2014 15:13:30 +0100
>>> Petr Spacek  wrote:
>>>
 I think that external DNS could depend on Vault (assuming that
 external DNS support will be purely optional).
>>>
>>> TBH, I do not think this is a sensible option, the Vault will drag
>>> huge dependencies for now, and I would like to avoid that if all we
>>> need is to add a couple of A/SRV records to an external DNS.
>>>
>>> If we can't come up with a service, I think I am ok telling admins
>>> they need to manually copy the TKEY (or use puppet or other similar
>>> configuration manager to push the key file around) on each replica,
>>> and we defer automatic distribution of TKEYs.
>>>
>>> We will have a service that can give out keys, it is identified as
>>> necessary in the replica promotion proposal, so we'll eventually get
>>> there.
>>
>> Thank you for discussion. Now I would like to know in which direction
>> are we heading with external DNS support :-)
>>
>> I have to admit that I don't understand why we are spending time on
>> Vault and at the same time we refuse to use it ...
>>
>> Anyway, someone competent has to decide if we want to implement
>> external DNS support and:
>> - defer key distribution for now
> 
> I vote for deferring for now.
> 
> Simo.

+1, we can defer until we have the Simo's KISS service from replica promotion 
work:

http://www.freeipa.org/page/V4/Replica_Promotion#Key_Interchange_Security_Service_.28KISS.29

Same as Simo, I would also rather avoid the dependency on PKI&Vault for this
base infrastructure feature orthogonal to FreeIPA PKI.

Martin

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-11 Thread Simo Sorce
On Thu, 11 Dec 2014 10:43:02 +0100
Petr Spacek  wrote:

> On 10.12.2014 18:50, Simo Sorce wrote:
> > On Wed, 10 Dec 2014 15:13:30 +0100
> > Petr Spacek  wrote:
> > 
> >> I think that external DNS could depend on Vault (assuming that
> >> external DNS support will be purely optional).
> > 
> > TBH, I do not think this is a sensible option, the Vault will drag
> > huge dependencies for now, and I would like to avoid that if all we
> > need is to add a couple of A/SRV records to an external DNS.
> > 
> > If we can't come up with a service, I think I am ok telling admins
> > they need to manually copy the TKEY (or use puppet or other similar
> > configuration manager to push the key file around) on each replica,
> > and we defer automatic distribution of TKEYs.
> > 
> > We will have a service that can give out keys, it is identified as
> > necessary in the replica promotion proposal, so we'll eventually get
> > there.
> 
> Thank you for discussion. Now I would like to know in which direction
> are we heading with external DNS support :-)
> 
> I have to admit that I don't understand why we are spending time on
> Vault and at the same time we refuse to use it ...
> 
> Anyway, someone competent has to decide if we want to implement
> external DNS support and:
> - defer key distribution for now

I vote for deferring for now.

Simo.

> - use Vault
> - re-invent Vault and use that new cool thing
> 



-- 
Simo Sorce * Red Hat, Inc * New York

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-11 Thread Petr Spacek
On 10.12.2014 18:50, Simo Sorce wrote:
> On Wed, 10 Dec 2014 15:13:30 +0100
> Petr Spacek  wrote:
> 
>> I think that external DNS could depend on Vault (assuming that
>> external DNS support will be purely optional).
> 
> TBH, I do not think this is a sensible option, the Vault will drag huge
> dependencies for now, and I would like to avoid that if all we need is
> to add a couple of A/SRV records to an external DNS.
> 
> If we can't come up with a service, I think I am ok telling admins they
> need to manually copy the TKEY (or use puppet or other similar
> configuration manager to push the key file around) on each replica, and
> we defer automatic distribution of TKEYs.
> 
> We will have a service that can give out keys, it is identified as
> necessary in the replica promotion proposal, so we'll eventually get
> there.

Thank you for discussion. Now I would like to know in which direction are we
heading with external DNS support :-)

I have to admit that I don't understand why we are spending time on Vault and
at the same time we refuse to use it ...

Anyway, someone competent has to decide if we want to implement external DNS
support and:
- defer key distribution for now
- use Vault
- re-invent Vault and use that new cool thing

-- 
Petr^2 Spacek

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-10 Thread Endi Sukma Dewata

On 12/10/2014 9:59 PM, Petr Spacek wrote:

Alternatively we can use Vault for TSIG key storage and use Vault's capability
to share keys among many users. In that case we don't have problem with key
distribution nor authorization.


I am not convinced we should grow Vault dependency for this functionality, it
requires the whole PKI machinery to be available. Many deployments do not use
it though.


Another possibility is to say that replica-deletion can be done only by root
user or that updates to external DNS are supported only when running
ipa-replica-manage as root.


Why does root help? So that TSIG keys will be available on all IPA servers,
regardless whether they have DNS service running or not?

The point is that we need to store TSIG keys "somewhere" to make them
available to ipa* scripts on all replica but at the same not to human-users.

BTW there don't need to be any 'DNS service' if only external DNS integration
is in use.


It would be better to have the TSIG keys available using standard FreeIPA RBAC
roles, i.e. DS ACIs so that privileged users can also use the TSIG. Or am I
missing anything?


Ideologically - no, it sounds fine.
Technically - the problem is in implementation. We need a mechanism for secure
key distribution *among users*, i.e. Vault-like functionality. I would rather
not re-implement Vault just for external DNS.

I think that external DNS could depend on Vault (assuming that external DNS
support will be purely optional).

DNSSEC key distribution is very different because it distributes keys to
*servers* and there is no ACI mechanism on top of that - all DNS servers need
to know all the keys anyway.


So IIUC, the goal would be to put TSIG keys in the Vault and then make them
available for all IPA servers?

I am now not sure if the Vault as proposed can easily select a group of
principals to allow reading the Vault or if it is only confined for the
owner/user principal. We would need to ask Endi (CCed).


I assumed that very first sentence of
http://www.freeipa.org/page/V4/Password_Vault_Implementation#Vault
"Vault is a secure place to store data or a collection of secrets. A vault may
be privately owned by a user, or shared among users, groups, or services."
is correct :-)

Endi, we would like to have one secret which is shared among services & users
at the same time. Is it possible to do that with Vault?


Yes, the access to a particular vault is limited to the vault members & 
owners which can be a set of users, groups, and/or services. See 
http://www.freeipa.org/page/V4/Password_Vault_Implementation#Access_Control


A vault member can list, archive, and retrieve the secrets in a standard 
vault. With symmetric vault the member will need a vault password in 
order to archive and retrieve secrets. With asymmetric vault the member 
can only archive the secrets but not retrieve them since it only has the 
public key and not the private key.


A vault owner can list, archive, and retrieve the secrets like vault 
members, but it has the private key so it can retrieve secrets from 
asymmetric vault. The owner can also manage the list of members and 
owners of the vault, and change the vault password/keys.


There are commands to manage the members/owners. See 
http://www.freeipa.org/page/V4/Password_Vault_Implementation#Adding_vault_member


$ ipa vault-add-member MyVault --groups group1,group2
$ ipa vault-add-owner MyVault --users user1,user2
(we may need a separate option for services)

Below are the vault LDAP ACIs. See 
http://www.freeipa.org/page/V4/Password_Vault_Implementation#Access_Control_Attributes


aci: (targetfilter="(objectClass=ipaVault)")
  (targetattr="*")
  (version 3.0; acl "Vault members can access the vault";
   allow(read, search, compare) userattr="member#USERDN";)
aci: (targetfilter="(objectClass=ipaVault)")
  (targetattr="*")
  (version 3.0; acl "Indirect vault members can access the vault";
   allow(read, search, compare) userattr="member#GROUPDN";)

aci: (targetfilter="(objectClass=ipaVault)")
  (targetattr="*")
  (version 3.0; acl "Vault owners can modify the vault";
   allow(read, search, compare, write) userattr="owner#USERDN";)
aci: (targetfilter="(objectClass=ipaVault)")
  (targetattr="*")
  (version 3.0; acl "Indirect vault owners can modify the vault";
   allow(read, search, compare, write) userattr="owner#GROUPDN";)

Note that the secrets are stored separately in KRA, not in the IPA LDAP 
tree, so they are not directly controlled by the above ACIs. The vault 
service will first verify that you have access to the vault based on the 
above ACIs then it will let you archive/retrieve secrets in KRA.


--
Endi S. Dewata

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-10 Thread Simo Sorce
On Wed, 10 Dec 2014 15:13:30 +0100
Petr Spacek  wrote:

> I think that external DNS could depend on Vault (assuming that
> external DNS support will be purely optional).

TBH, I do not think this is a sensible option, the Vault will drag huge
dependencies for now, and I would like to avoid that if all we need is
to add a couple of A/SRV records to an external DNS.

If we can't come up with a service, I think I am ok telling admins they
need to manually copy the TKEY (or use puppet or other similar
configuration manager to push the key file around) on each replica, and
we defer automatic distribution of TKEYs.

We will have a service that can give out keys, it is identified as
necessary in the replica promotion proposal, so we'll eventually get
there.

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-10 Thread Petr Spacek
On 10.12.2014 15:50, Martin Kosek wrote:
> On 12/10/2014 03:13 PM, Petr Spacek wrote:
>> On 9.12.2014 13:40, Martin Kosek wrote:
>>> On 12/03/2014 05:04 PM, Petr Spacek wrote:
 On 2.12.2014 17:21, Simo Sorce wrote:
> On Tue, 02 Dec 2014 15:56:28 +0100
> Petr Spacek  wrote:
>
>> On 1.12.2014 17:12, Simo Sorce wrote:
>>> On Mon, 01 Dec 2014 16:17:54 +0100
>>> Petr Spacek  wrote:
>>>
 On 14.11.2014 17:31, Petr Spacek wrote:
> On 14.11.2014 02:22, Simo Sorce wrote:
>> On Tue, 11 Nov 2014 16:29:51 +0100
>> Petr Spacek  wrote:
>>
>>> Hello,
>>>
>>> this thread is about RFE
>>> "IPA servers when installed should register themselves in the
>>> external DNS" https://fedorahosted.org/freeipa/ticket/4424
>>>
>>> It is not a complete design, just a raw idea.
>>>
>>>
>>> Use case
>>> 
>>> FreeIPA installation to a network with existing DNS
>>> infrastructure + network administrator who is not willing to
>>> add/maintain new DNS servers "just for FreeIPA".
>>>
>>>
>>> High-level idea
>>> ===
>>> - Transform dns* commands from FreeIPA framework to equivalent
>>> "nsupdate" commands and send DNS updates to existing DNS
>>> servers.
>>> - Provide necessary encryption/signing keys to nsupdate.
>>>
>>>
>>> 1) Integration to FreeIPA framework
>>> ===
>>> First of all, we need to decide if "external DNS integration"
>>> can be used at the same time with FreeIPA-integrated DNS or not.
>>> Side-question is what to do if a first server is installed with
>>> external-DNS but another replica is being installed with
>>> integrated-DNS and so on.
>>
>> I think being able to integrate with an external DNS is
>> important, and not just at the server level, being able to
>> distribute TSIG keys to client would be nice too, though a lot
>> less important, than getting server integration..
>
> Using TSIG on many clients is very problematic. Keep in mind that
> TSIG is basically HMAC computed using symmetric key so:
> a) Every client would have to use the same key - this is a
> security nightmare. b) We would have to distribute and maintain
> many keys for many^2 clients, which is an administrative
> nightmare.
>
> For *clients* I would rather stay with GSS-TSIG which is much more
> manageable because we can use Kerberos trust and Keytab
> distribution is already solved by ipa-client-install.
>
> Alternative for clients would be to use FreeIPA server as proxy
> which encapsulates TSIG keys and issues update requests on behalf
> of clients. This would be FreeIPA-specific but any
> TSIG-distribution mechanism will be FreeIPA-specific anyway.
>
> TSIG standard explicitly says that there is no standardized
> distribution mechanism.
>
>>> In other words, the question is if current "dns.py" plugin
>>> shipped with FreeIPA framework should be:
>>>
>>> a) Extended dns.py with dnsexternal-* commands
>>> --
>>> Disadvantages:
>>> - It complicate FreeIPA DNS interface which is a complex beast
>>> even now.
>>> - We would have add condition to every DNS API call in
>>> installers which would increase horribleness of the installer
>>> code even more (or add another layer of abstraction...).
>>
>> I agree having a special command is undesirable.
>>>
>>> - I don't see a point in using integrated-DNS with external-DNS
>>> at the same time. To use integrated-DNS you have to get a
>>> proper DNS delegation from parent domain - and if you can get
>>> the delegation then there is no point in using external DNS ...
>>
>> I disagree on this point, it makes a lot of sense to have some
>> zones maintained by IPA and ... some not.
>>
>>> Advantages:
>>> - You can use external & integrated DNS at the same time.
>>
>> We can achieve the same w/o a new ipa level command.
>
> This needs to be decided by FreeIPA framework experts ...
>
> Petr^3 came up with clever 'proxy' idea for IPA-commands. This
> proxy would provide all ipa dns* commands and dispatch user-issued
> commands to appropriate FreeIPA-plugin (internal-dns or
> external-dns). This decision could depend on some values in LDAP.
>
>>> b) Replace dns.py with another implementation of current
>>> dnszone-* & dnsrecord-* AP

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-10 Thread Martin Kosek
On 12/10/2014 03:13 PM, Petr Spacek wrote:
> On 9.12.2014 13:40, Martin Kosek wrote:
>> On 12/03/2014 05:04 PM, Petr Spacek wrote:
>>> On 2.12.2014 17:21, Simo Sorce wrote:
 On Tue, 02 Dec 2014 15:56:28 +0100
 Petr Spacek  wrote:

> On 1.12.2014 17:12, Simo Sorce wrote:
>> On Mon, 01 Dec 2014 16:17:54 +0100
>> Petr Spacek  wrote:
>>
>>> On 14.11.2014 17:31, Petr Spacek wrote:
 On 14.11.2014 02:22, Simo Sorce wrote:
> On Tue, 11 Nov 2014 16:29:51 +0100
> Petr Spacek  wrote:
>
>> Hello,
>>
>> this thread is about RFE
>> "IPA servers when installed should register themselves in the
>> external DNS" https://fedorahosted.org/freeipa/ticket/4424
>>
>> It is not a complete design, just a raw idea.
>>
>>
>> Use case
>> 
>> FreeIPA installation to a network with existing DNS
>> infrastructure + network administrator who is not willing to
>> add/maintain new DNS servers "just for FreeIPA".
>>
>>
>> High-level idea
>> ===
>> - Transform dns* commands from FreeIPA framework to equivalent
>> "nsupdate" commands and send DNS updates to existing DNS
>> servers.
>> - Provide necessary encryption/signing keys to nsupdate.
>>
>>
>> 1) Integration to FreeIPA framework
>> ===
>> First of all, we need to decide if "external DNS integration"
>> can be used at the same time with FreeIPA-integrated DNS or not.
>> Side-question is what to do if a first server is installed with
>> external-DNS but another replica is being installed with
>> integrated-DNS and so on.
>
> I think being able to integrate with an external DNS is
> important, and not just at the server level, being able to
> distribute TSIG keys to client would be nice too, though a lot
> less important, than getting server integration..

 Using TSIG on many clients is very problematic. Keep in mind that
 TSIG is basically HMAC computed using symmetric key so:
 a) Every client would have to use the same key - this is a
 security nightmare. b) We would have to distribute and maintain
 many keys for many^2 clients, which is an administrative
 nightmare.

 For *clients* I would rather stay with GSS-TSIG which is much more
 manageable because we can use Kerberos trust and Keytab
 distribution is already solved by ipa-client-install.

 Alternative for clients would be to use FreeIPA server as proxy
 which encapsulates TSIG keys and issues update requests on behalf
 of clients. This would be FreeIPA-specific but any
 TSIG-distribution mechanism will be FreeIPA-specific anyway.

 TSIG standard explicitly says that there is no standardized
 distribution mechanism.

>> In other words, the question is if current "dns.py" plugin
>> shipped with FreeIPA framework should be:
>>
>> a) Extended dns.py with dnsexternal-* commands
>> --
>> Disadvantages:
>> - It complicate FreeIPA DNS interface which is a complex beast
>> even now.
>> - We would have add condition to every DNS API call in
>> installers which would increase horribleness of the installer
>> code even more (or add another layer of abstraction...).
>
> I agree having a special command is undesirable.
>>
>> - I don't see a point in using integrated-DNS with external-DNS
>> at the same time. To use integrated-DNS you have to get a
>> proper DNS delegation from parent domain - and if you can get
>> the delegation then there is no point in using external DNS ...
>
> I disagree on this point, it makes a lot of sense to have some
> zones maintained by IPA and ... some not.
>
>> Advantages:
>> - You can use external & integrated DNS at the same time.
>
> We can achieve the same w/o a new ipa level command.

 This needs to be decided by FreeIPA framework experts ...

 Petr^3 came up with clever 'proxy' idea for IPA-commands. This
 proxy would provide all ipa dns* commands and dispatch user-issued
 commands to appropriate FreeIPA-plugin (internal-dns or
 external-dns). This decision could depend on some values in LDAP.

>> b) Replace dns.py with another implementation of current
>> dnszone-* & dnsrecord-* API.
>> -
>> This seems like a cleaner approach to me. It could be s

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-10 Thread Petr Spacek
On 9.12.2014 13:40, Martin Kosek wrote:
> On 12/03/2014 05:04 PM, Petr Spacek wrote:
>> On 2.12.2014 17:21, Simo Sorce wrote:
>>> On Tue, 02 Dec 2014 15:56:28 +0100
>>> Petr Spacek  wrote:
>>>
 On 1.12.2014 17:12, Simo Sorce wrote:
> On Mon, 01 Dec 2014 16:17:54 +0100
> Petr Spacek  wrote:
>
>> On 14.11.2014 17:31, Petr Spacek wrote:
>>> On 14.11.2014 02:22, Simo Sorce wrote:
 On Tue, 11 Nov 2014 16:29:51 +0100
 Petr Spacek  wrote:

> Hello,
>
> this thread is about RFE
> "IPA servers when installed should register themselves in the
> external DNS" https://fedorahosted.org/freeipa/ticket/4424
>
> It is not a complete design, just a raw idea.
>
>
> Use case
> 
> FreeIPA installation to a network with existing DNS
> infrastructure + network administrator who is not willing to
> add/maintain new DNS servers "just for FreeIPA".
>
>
> High-level idea
> ===
> - Transform dns* commands from FreeIPA framework to equivalent
> "nsupdate" commands and send DNS updates to existing DNS
> servers.
> - Provide necessary encryption/signing keys to nsupdate.
>
>
> 1) Integration to FreeIPA framework
> ===
> First of all, we need to decide if "external DNS integration"
> can be used at the same time with FreeIPA-integrated DNS or not.
> Side-question is what to do if a first server is installed with
> external-DNS but another replica is being installed with
> integrated-DNS and so on.

 I think being able to integrate with an external DNS is
 important, and not just at the server level, being able to
 distribute TSIG keys to client would be nice too, though a lot
 less important, than getting server integration..
>>>
>>> Using TSIG on many clients is very problematic. Keep in mind that
>>> TSIG is basically HMAC computed using symmetric key so:
>>> a) Every client would have to use the same key - this is a
>>> security nightmare. b) We would have to distribute and maintain
>>> many keys for many^2 clients, which is an administrative
>>> nightmare.
>>>
>>> For *clients* I would rather stay with GSS-TSIG which is much more
>>> manageable because we can use Kerberos trust and Keytab
>>> distribution is already solved by ipa-client-install.
>>>
>>> Alternative for clients would be to use FreeIPA server as proxy
>>> which encapsulates TSIG keys and issues update requests on behalf
>>> of clients. This would be FreeIPA-specific but any
>>> TSIG-distribution mechanism will be FreeIPA-specific anyway.
>>>
>>> TSIG standard explicitly says that there is no standardized
>>> distribution mechanism.
>>>
> In other words, the question is if current "dns.py" plugin
> shipped with FreeIPA framework should be:
>
> a) Extended dns.py with dnsexternal-* commands
> --
> Disadvantages:
> - It complicate FreeIPA DNS interface which is a complex beast
> even now.
> - We would have add condition to every DNS API call in
> installers which would increase horribleness of the installer
> code even more (or add another layer of abstraction...).

 I agree having a special command is undesirable.
>
> - I don't see a point in using integrated-DNS with external-DNS
> at the same time. To use integrated-DNS you have to get a
> proper DNS delegation from parent domain - and if you can get
> the delegation then there is no point in using external DNS ...

 I disagree on this point, it makes a lot of sense to have some
 zones maintained by IPA and ... some not.

> Advantages:
> - You can use external & integrated DNS at the same time.

 We can achieve the same w/o a new ipa level command.
>>>
>>> This needs to be decided by FreeIPA framework experts ...
>>>
>>> Petr^3 came up with clever 'proxy' idea for IPA-commands. This
>>> proxy would provide all ipa dns* commands and dispatch user-issued
>>> commands to appropriate FreeIPA-plugin (internal-dns or
>>> external-dns). This decision could depend on some values in LDAP.
>>>
> b) Replace dns.py with another implementation of current
> dnszone-* & dnsrecord-* API.
> -
> This seems like a cleaner approach to me. It could be shipped as
> ipa-server-dns-external package (opposed to "standard"
> ipa-server-dns package).
>
> Advantages:
> -

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-09 Thread Martin Kosek
On 12/03/2014 05:04 PM, Petr Spacek wrote:
> On 2.12.2014 17:21, Simo Sorce wrote:
>> On Tue, 02 Dec 2014 15:56:28 +0100
>> Petr Spacek  wrote:
>>
>>> On 1.12.2014 17:12, Simo Sorce wrote:
 On Mon, 01 Dec 2014 16:17:54 +0100
 Petr Spacek  wrote:

> On 14.11.2014 17:31, Petr Spacek wrote:
>> On 14.11.2014 02:22, Simo Sorce wrote:
>>> On Tue, 11 Nov 2014 16:29:51 +0100
>>> Petr Spacek  wrote:
>>>
 Hello,

 this thread is about RFE
 "IPA servers when installed should register themselves in the
 external DNS" https://fedorahosted.org/freeipa/ticket/4424

 It is not a complete design, just a raw idea.


 Use case
 
 FreeIPA installation to a network with existing DNS
 infrastructure + network administrator who is not willing to
 add/maintain new DNS servers "just for FreeIPA".


 High-level idea
 ===
 - Transform dns* commands from FreeIPA framework to equivalent
 "nsupdate" commands and send DNS updates to existing DNS
 servers.
 - Provide necessary encryption/signing keys to nsupdate.


 1) Integration to FreeIPA framework
 ===
 First of all, we need to decide if "external DNS integration"
 can be used at the same time with FreeIPA-integrated DNS or not.
 Side-question is what to do if a first server is installed with
 external-DNS but another replica is being installed with
 integrated-DNS and so on.
>>>
>>> I think being able to integrate with an external DNS is
>>> important, and not just at the server level, being able to
>>> distribute TSIG keys to client would be nice too, though a lot
>>> less important, than getting server integration..
>>
>> Using TSIG on many clients is very problematic. Keep in mind that
>> TSIG is basically HMAC computed using symmetric key so:
>> a) Every client would have to use the same key - this is a
>> security nightmare. b) We would have to distribute and maintain
>> many keys for many^2 clients, which is an administrative
>> nightmare.
>>
>> For *clients* I would rather stay with GSS-TSIG which is much more
>> manageable because we can use Kerberos trust and Keytab
>> distribution is already solved by ipa-client-install.
>>
>> Alternative for clients would be to use FreeIPA server as proxy
>> which encapsulates TSIG keys and issues update requests on behalf
>> of clients. This would be FreeIPA-specific but any
>> TSIG-distribution mechanism will be FreeIPA-specific anyway.
>>
>> TSIG standard explicitly says that there is no standardized
>> distribution mechanism.
>>
 In other words, the question is if current "dns.py" plugin
 shipped with FreeIPA framework should be:

 a) Extended dns.py with dnsexternal-* commands
 --
 Disadvantages:
 - It complicate FreeIPA DNS interface which is a complex beast
 even now.
 - We would have add condition to every DNS API call in
 installers which would increase horribleness of the installer
 code even more (or add another layer of abstraction...).
>>>
>>> I agree having a special command is undesirable.

 - I don't see a point in using integrated-DNS with external-DNS
 at the same time. To use integrated-DNS you have to get a
 proper DNS delegation from parent domain - and if you can get
 the delegation then there is no point in using external DNS ...
>>>
>>> I disagree on this point, it makes a lot of sense to have some
>>> zones maintained by IPA and ... some not.
>>>
 Advantages:
 - You can use external & integrated DNS at the same time.
>>>
>>> We can achieve the same w/o a new ipa level command.
>>
>> This needs to be decided by FreeIPA framework experts ...
>>
>> Petr^3 came up with clever 'proxy' idea for IPA-commands. This
>> proxy would provide all ipa dns* commands and dispatch user-issued
>> commands to appropriate FreeIPA-plugin (internal-dns or
>> external-dns). This decision could depend on some values in LDAP.
>>
 b) Replace dns.py with another implementation of current
 dnszone-* & dnsrecord-* API.
 -
 This seems like a cleaner approach to me. It could be shipped as
 ipa-server-dns-external package (opposed to "standard"
 ipa-server-dns package).

 Advantages:
 - It could seamlessly work with FreeIPA client installer because
 the dns*->nsupdate command transformation would be done on
 FreeIPA serve

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-03 Thread Petr Spacek
On 2.12.2014 17:21, Simo Sorce wrote:
> On Tue, 02 Dec 2014 15:56:28 +0100
> Petr Spacek  wrote:
> 
>> On 1.12.2014 17:12, Simo Sorce wrote:
>>> On Mon, 01 Dec 2014 16:17:54 +0100
>>> Petr Spacek  wrote:
>>>
 On 14.11.2014 17:31, Petr Spacek wrote:
> On 14.11.2014 02:22, Simo Sorce wrote:
>> On Tue, 11 Nov 2014 16:29:51 +0100
>> Petr Spacek  wrote:
>>
>>> Hello,
>>>
>>> this thread is about RFE
>>> "IPA servers when installed should register themselves in the
>>> external DNS" https://fedorahosted.org/freeipa/ticket/4424
>>>
>>> It is not a complete design, just a raw idea.
>>>
>>>
>>> Use case
>>> 
>>> FreeIPA installation to a network with existing DNS
>>> infrastructure + network administrator who is not willing to
>>> add/maintain new DNS servers "just for FreeIPA".
>>>
>>>
>>> High-level idea
>>> ===
>>> - Transform dns* commands from FreeIPA framework to equivalent
>>> "nsupdate" commands and send DNS updates to existing DNS
>>> servers.
>>> - Provide necessary encryption/signing keys to nsupdate.
>>>
>>>
>>> 1) Integration to FreeIPA framework
>>> ===
>>> First of all, we need to decide if "external DNS integration"
>>> can be used at the same time with FreeIPA-integrated DNS or not.
>>> Side-question is what to do if a first server is installed with
>>> external-DNS but another replica is being installed with
>>> integrated-DNS and so on.
>>
>> I think being able to integrate with an external DNS is
>> important, and not just at the server level, being able to
>> distribute TSIG keys to client would be nice too, though a lot
>> less important, than getting server integration..
>
> Using TSIG on many clients is very problematic. Keep in mind that
> TSIG is basically HMAC computed using symmetric key so:
> a) Every client would have to use the same key - this is a
> security nightmare. b) We would have to distribute and maintain
> many keys for many^2 clients, which is an administrative
> nightmare.
>
> For *clients* I would rather stay with GSS-TSIG which is much more
> manageable because we can use Kerberos trust and Keytab
> distribution is already solved by ipa-client-install.
>
> Alternative for clients would be to use FreeIPA server as proxy
> which encapsulates TSIG keys and issues update requests on behalf
> of clients. This would be FreeIPA-specific but any
> TSIG-distribution mechanism will be FreeIPA-specific anyway.
>
> TSIG standard explicitly says that there is no standardized
> distribution mechanism.
>
>>> In other words, the question is if current "dns.py" plugin
>>> shipped with FreeIPA framework should be:
>>>
>>> a) Extended dns.py with dnsexternal-* commands
>>> --
>>> Disadvantages:
>>> - It complicate FreeIPA DNS interface which is a complex beast
>>> even now.
>>> - We would have add condition to every DNS API call in
>>> installers which would increase horribleness of the installer
>>> code even more (or add another layer of abstraction...).
>>
>> I agree having a special command is undesirable.
>>>
>>> - I don't see a point in using integrated-DNS with external-DNS
>>> at the same time. To use integrated-DNS you have to get a
>>> proper DNS delegation from parent domain - and if you can get
>>> the delegation then there is no point in using external DNS ...
>>
>> I disagree on this point, it makes a lot of sense to have some
>> zones maintained by IPA and ... some not.
>>
>>> Advantages:
>>> - You can use external & integrated DNS at the same time.
>>
>> We can achieve the same w/o a new ipa level command.
>
> This needs to be decided by FreeIPA framework experts ...
>
> Petr^3 came up with clever 'proxy' idea for IPA-commands. This
> proxy would provide all ipa dns* commands and dispatch user-issued
> commands to appropriate FreeIPA-plugin (internal-dns or
> external-dns). This decision could depend on some values in LDAP.
>
>>> b) Replace dns.py with another implementation of current
>>> dnszone-* & dnsrecord-* API.
>>> -
>>> This seems like a cleaner approach to me. It could be shipped as
>>> ipa-server-dns-external package (opposed to "standard"
>>> ipa-server-dns package).
>>>
>>> Advantages:
>>> - It could seamlessly work with FreeIPA client installer because
>>> the dns*->nsupdate command transformation would be done on
>>> FreeIPA server and client doesn't need to know about it.
>>> - Does not require re-training/not much new documentation
>>> because commands are the same.
>>>

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-02 Thread Simo Sorce
On Tue, 02 Dec 2014 15:56:28 +0100
Petr Spacek  wrote:

> On 1.12.2014 17:12, Simo Sorce wrote:
> > On Mon, 01 Dec 2014 16:17:54 +0100
> > Petr Spacek  wrote:
> > 
> >> On 14.11.2014 17:31, Petr Spacek wrote:
> >>> On 14.11.2014 02:22, Simo Sorce wrote:
>  On Tue, 11 Nov 2014 16:29:51 +0100
>  Petr Spacek  wrote:
> 
> > Hello,
> >
> > this thread is about RFE
> > "IPA servers when installed should register themselves in the
> > external DNS" https://fedorahosted.org/freeipa/ticket/4424
> >
> > It is not a complete design, just a raw idea.
> >
> >
> > Use case
> > 
> > FreeIPA installation to a network with existing DNS
> > infrastructure + network administrator who is not willing to
> > add/maintain new DNS servers "just for FreeIPA".
> >
> >
> > High-level idea
> > ===
> > - Transform dns* commands from FreeIPA framework to equivalent
> > "nsupdate" commands and send DNS updates to existing DNS
> > servers.
> > - Provide necessary encryption/signing keys to nsupdate.
> >
> >
> > 1) Integration to FreeIPA framework
> > ===
> > First of all, we need to decide if "external DNS integration"
> > can be used at the same time with FreeIPA-integrated DNS or not.
> > Side-question is what to do if a first server is installed with
> > external-DNS but another replica is being installed with
> > integrated-DNS and so on.
> 
>  I think being able to integrate with an external DNS is
>  important, and not just at the server level, being able to
>  distribute TSIG keys to client would be nice too, though a lot
>  less important, than getting server integration..
> >>>
> >>> Using TSIG on many clients is very problematic. Keep in mind that
> >>> TSIG is basically HMAC computed using symmetric key so:
> >>> a) Every client would have to use the same key - this is a
> >>> security nightmare. b) We would have to distribute and maintain
> >>> many keys for many^2 clients, which is an administrative
> >>> nightmare.
> >>>
> >>> For *clients* I would rather stay with GSS-TSIG which is much more
> >>> manageable because we can use Kerberos trust and Keytab
> >>> distribution is already solved by ipa-client-install.
> >>>
> >>> Alternative for clients would be to use FreeIPA server as proxy
> >>> which encapsulates TSIG keys and issues update requests on behalf
> >>> of clients. This would be FreeIPA-specific but any
> >>> TSIG-distribution mechanism will be FreeIPA-specific anyway.
> >>>
> >>> TSIG standard explicitly says that there is no standardized
> >>> distribution mechanism.
> >>>
> > In other words, the question is if current "dns.py" plugin
> > shipped with FreeIPA framework should be:
> >
> > a) Extended dns.py with dnsexternal-* commands
> > --
> > Disadvantages:
> > - It complicate FreeIPA DNS interface which is a complex beast
> > even now.
> > - We would have add condition to every DNS API call in
> > installers which would increase horribleness of the installer
> > code even more (or add another layer of abstraction...).
> 
>  I agree having a special command is undesirable.
> >
> > - I don't see a point in using integrated-DNS with external-DNS
> > at the same time. To use integrated-DNS you have to get a
> > proper DNS delegation from parent domain - and if you can get
> > the delegation then there is no point in using external DNS ...
> 
>  I disagree on this point, it makes a lot of sense to have some
>  zones maintained by IPA and ... some not.
> 
> > Advantages:
> > - You can use external & integrated DNS at the same time.
> 
>  We can achieve the same w/o a new ipa level command.
> >>>
> >>> This needs to be decided by FreeIPA framework experts ...
> >>>
> >>> Petr^3 came up with clever 'proxy' idea for IPA-commands. This
> >>> proxy would provide all ipa dns* commands and dispatch user-issued
> >>> commands to appropriate FreeIPA-plugin (internal-dns or
> >>> external-dns). This decision could depend on some values in LDAP.
> >>>
> > b) Replace dns.py with another implementation of current
> > dnszone-* & dnsrecord-* API.
> > -
> > This seems like a cleaner approach to me. It could be shipped as
> > ipa-server-dns-external package (opposed to "standard"
> > ipa-server-dns package).
> >
> > Advantages:
> > - It could seamlessly work with FreeIPA client installer because
> > the dns*->nsupdate command transformation would be done on
> > FreeIPA server and client doesn't need to know about it.
> > - Does not require re-training/not much new documentation
> > because commands are the same.
> >
> > Disadvantages:
> > - You can't u

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-02 Thread Petr Spacek
On 1.12.2014 17:12, Simo Sorce wrote:
> On Mon, 01 Dec 2014 16:17:54 +0100
> Petr Spacek  wrote:
> 
>> On 14.11.2014 17:31, Petr Spacek wrote:
>>> On 14.11.2014 02:22, Simo Sorce wrote:
 On Tue, 11 Nov 2014 16:29:51 +0100
 Petr Spacek  wrote:

> Hello,
>
> this thread is about RFE
> "IPA servers when installed should register themselves in the
> external DNS" https://fedorahosted.org/freeipa/ticket/4424
>
> It is not a complete design, just a raw idea.
>
>
> Use case
> 
> FreeIPA installation to a network with existing DNS
> infrastructure + network administrator who is not willing to
> add/maintain new DNS servers "just for FreeIPA".
>
>
> High-level idea
> ===
> - Transform dns* commands from FreeIPA framework to equivalent
> "nsupdate" commands and send DNS updates to existing DNS servers.
> - Provide necessary encryption/signing keys to nsupdate.
>
>
> 1) Integration to FreeIPA framework
> ===
> First of all, we need to decide if "external DNS integration" can
> be used at the same time with FreeIPA-integrated DNS or not.
> Side-question is what to do if a first server is installed with
> external-DNS but another replica is being installed with
> integrated-DNS and so on.

 I think being able to integrate with an external DNS is important,
 and not just at the server level, being able to distribute TSIG
 keys to client would be nice too, though a lot less important,
 than getting server integration..
>>>
>>> Using TSIG on many clients is very problematic. Keep in mind that
>>> TSIG is basically HMAC computed using symmetric key so:
>>> a) Every client would have to use the same key - this is a security
>>> nightmare. b) We would have to distribute and maintain many keys
>>> for many^2 clients, which is an administrative nightmare.
>>>
>>> For *clients* I would rather stay with GSS-TSIG which is much more
>>> manageable because we can use Kerberos trust and Keytab
>>> distribution is already solved by ipa-client-install.
>>>
>>> Alternative for clients would be to use FreeIPA server as proxy
>>> which encapsulates TSIG keys and issues update requests on behalf
>>> of clients. This would be FreeIPA-specific but any
>>> TSIG-distribution mechanism will be FreeIPA-specific anyway.
>>>
>>> TSIG standard explicitly says that there is no standardized
>>> distribution mechanism.
>>>
> In other words, the question is if current "dns.py" plugin shipped
> with FreeIPA framework should be:
>
> a) Extended dns.py with dnsexternal-* commands
> --
> Disadvantages:
> - It complicate FreeIPA DNS interface which is a complex beast
> even now.
> - We would have add condition to every DNS API call in installers
> which would increase horribleness of the installer code even more
> (or add another layer of abstraction...).

 I agree having a special command is undesirable.
>
> - I don't see a point in using integrated-DNS with external-DNS at
> the same time. To use integrated-DNS you have to get a proper DNS
> delegation from parent domain - and if you can get the delegation
> then there is no point in using external DNS ...

 I disagree on this point, it makes a lot of sense to have some
 zones maintained by IPA and ... some not.

> Advantages:
> - You can use external & integrated DNS at the same time.

 We can achieve the same w/o a new ipa level command.
>>>
>>> This needs to be decided by FreeIPA framework experts ...
>>>
>>> Petr^3 came up with clever 'proxy' idea for IPA-commands. This
>>> proxy would provide all ipa dns* commands and dispatch user-issued
>>> commands to appropriate FreeIPA-plugin (internal-dns or
>>> external-dns). This decision could depend on some values in LDAP.
>>>
> b) Replace dns.py with another implementation of current
> dnszone-* & dnsrecord-* API.
> -
> This seems like a cleaner approach to me. It could be shipped as
> ipa-server-dns-external package (opposed to "standard"
> ipa-server-dns package).
>
> Advantages:
> - It could seamlessly work with FreeIPA client installer because
> the dns*->nsupdate command transformation would be done on
> FreeIPA server and client doesn't need to know about it.
> - Does not require re-training/not much new documentation because
> commands are the same.
>
> Disadvantages:
> - You can't use integrated & external DNS at the same time (but I
> don't think it justifies the added complexity).

 I disagree.

 One of the reason to use a mix is to allow smooth migrations where
 zones are moved into (or out of) IPA one by one.
>>>
>>> Good point, I agree. I will 

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-01 Thread Alexander Bokovoy

On Mon, 01 Dec 2014, Simo Sorce wrote:

On Mon, 01 Dec 2014 16:17:54 +0100
Petr Spacek  wrote:


On 14.11.2014 17:31, Petr Spacek wrote:
> On 14.11.2014 02:22, Simo Sorce wrote:
>> On Tue, 11 Nov 2014 16:29:51 +0100
>> Petr Spacek  wrote:
>>
>>> Hello,
>>>
>>> this thread is about RFE
>>> "IPA servers when installed should register themselves in the
>>> external DNS" https://fedorahosted.org/freeipa/ticket/4424
>>>
>>> It is not a complete design, just a raw idea.
>>>
>>>
>>> Use case
>>> 
>>> FreeIPA installation to a network with existing DNS
>>> infrastructure + network administrator who is not willing to
>>> add/maintain new DNS servers "just for FreeIPA".
>>>
>>>
>>> High-level idea
>>> ===
>>> - Transform dns* commands from FreeIPA framework to equivalent
>>> "nsupdate" commands and send DNS updates to existing DNS servers.
>>> - Provide necessary encryption/signing keys to nsupdate.
>>>
>>>
>>> 1) Integration to FreeIPA framework
>>> ===
>>> First of all, we need to decide if "external DNS integration" can
>>> be used at the same time with FreeIPA-integrated DNS or not.
>>> Side-question is what to do if a first server is installed with
>>> external-DNS but another replica is being installed with
>>> integrated-DNS and so on.
>>
>> I think being able to integrate with an external DNS is important,
>> and not just at the server level, being able to distribute TSIG
>> keys to client would be nice too, though a lot less important,
>> than getting server integration..
>
> Using TSIG on many clients is very problematic. Keep in mind that
> TSIG is basically HMAC computed using symmetric key so:
> a) Every client would have to use the same key - this is a security
> nightmare. b) We would have to distribute and maintain many keys
> for many^2 clients, which is an administrative nightmare.
>
> For *clients* I would rather stay with GSS-TSIG which is much more
> manageable because we can use Kerberos trust and Keytab
> distribution is already solved by ipa-client-install.
>
> Alternative for clients would be to use FreeIPA server as proxy
> which encapsulates TSIG keys and issues update requests on behalf
> of clients. This would be FreeIPA-specific but any
> TSIG-distribution mechanism will be FreeIPA-specific anyway.
>
> TSIG standard explicitly says that there is no standardized
> distribution mechanism.
>
>>> In other words, the question is if current "dns.py" plugin shipped
>>> with FreeIPA framework should be:
>>>
>>> a) Extended dns.py with dnsexternal-* commands
>>> --
>>> Disadvantages:
>>> - It complicate FreeIPA DNS interface which is a complex beast
>>> even now.
>>> - We would have add condition to every DNS API call in installers
>>> which would increase horribleness of the installer code even more
>>> (or add another layer of abstraction...).
>>
>> I agree having a special command is undesirable.
>>>
>>> - I don't see a point in using integrated-DNS with external-DNS at
>>> the same time. To use integrated-DNS you have to get a proper DNS
>>> delegation from parent domain - and if you can get the delegation
>>> then there is no point in using external DNS ...
>>
>> I disagree on this point, it makes a lot of sense to have some
>> zones maintained by IPA and ... some not.
>>
>>> Advantages:
>>> - You can use external & integrated DNS at the same time.
>>
>> We can achieve the same w/o a new ipa level command.
>
> This needs to be decided by FreeIPA framework experts ...
>
> Petr^3 came up with clever 'proxy' idea for IPA-commands. This
> proxy would provide all ipa dns* commands and dispatch user-issued
> commands to appropriate FreeIPA-plugin (internal-dns or
> external-dns). This decision could depend on some values in LDAP.
>
>>> b) Replace dns.py with another implementation of current
>>> dnszone-* & dnsrecord-* API.
>>> -
>>> This seems like a cleaner approach to me. It could be shipped as
>>> ipa-server-dns-external package (opposed to "standard"
>>> ipa-server-dns package).
>>>
>>> Advantages:
>>> - It could seamlessly work with FreeIPA client installer because
>>> the dns*->nsupdate command transformation would be done on
>>> FreeIPA server and client doesn't need to know about it.
>>> - Does not require re-training/not much new documentation because
>>> commands are the same.
>>>
>>> Disadvantages:
>>> - You can't use integrated & external DNS at the same time (but I
>>> don't think it justifies the added complexity).
>>
>> I disagree.
>>
>> One of the reason to use a mix is to allow smooth migrations where
>> zones are moved into (or out of) IPA one by one.
>
> Good point, I agree. I will focus on supporting both (internal and
> external) DNS at the same time.
>
>>> Petr^3 or anyone else, what do you propose?
>>
>> I think what I'd like to see is to be able to configure a DNS zone
>> in LDAP and mark it external.
>> The z

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-01 Thread Simo Sorce
On Mon, 01 Dec 2014 16:17:54 +0100
Petr Spacek  wrote:

> On 14.11.2014 17:31, Petr Spacek wrote:
> > On 14.11.2014 02:22, Simo Sorce wrote:
> >> On Tue, 11 Nov 2014 16:29:51 +0100
> >> Petr Spacek  wrote:
> >>
> >>> Hello,
> >>>
> >>> this thread is about RFE
> >>> "IPA servers when installed should register themselves in the
> >>> external DNS" https://fedorahosted.org/freeipa/ticket/4424
> >>>
> >>> It is not a complete design, just a raw idea.
> >>>
> >>>
> >>> Use case
> >>> 
> >>> FreeIPA installation to a network with existing DNS
> >>> infrastructure + network administrator who is not willing to
> >>> add/maintain new DNS servers "just for FreeIPA".
> >>>
> >>>
> >>> High-level idea
> >>> ===
> >>> - Transform dns* commands from FreeIPA framework to equivalent
> >>> "nsupdate" commands and send DNS updates to existing DNS servers.
> >>> - Provide necessary encryption/signing keys to nsupdate.
> >>>
> >>>
> >>> 1) Integration to FreeIPA framework
> >>> ===
> >>> First of all, we need to decide if "external DNS integration" can
> >>> be used at the same time with FreeIPA-integrated DNS or not.
> >>> Side-question is what to do if a first server is installed with
> >>> external-DNS but another replica is being installed with
> >>> integrated-DNS and so on.
> >>
> >> I think being able to integrate with an external DNS is important,
> >> and not just at the server level, being able to distribute TSIG
> >> keys to client would be nice too, though a lot less important,
> >> than getting server integration..
> > 
> > Using TSIG on many clients is very problematic. Keep in mind that
> > TSIG is basically HMAC computed using symmetric key so:
> > a) Every client would have to use the same key - this is a security
> > nightmare. b) We would have to distribute and maintain many keys
> > for many^2 clients, which is an administrative nightmare.
> > 
> > For *clients* I would rather stay with GSS-TSIG which is much more
> > manageable because we can use Kerberos trust and Keytab
> > distribution is already solved by ipa-client-install.
> > 
> > Alternative for clients would be to use FreeIPA server as proxy
> > which encapsulates TSIG keys and issues update requests on behalf
> > of clients. This would be FreeIPA-specific but any
> > TSIG-distribution mechanism will be FreeIPA-specific anyway.
> > 
> > TSIG standard explicitly says that there is no standardized
> > distribution mechanism.
> > 
> >>> In other words, the question is if current "dns.py" plugin shipped
> >>> with FreeIPA framework should be:
> >>>
> >>> a) Extended dns.py with dnsexternal-* commands
> >>> --
> >>> Disadvantages:
> >>> - It complicate FreeIPA DNS interface which is a complex beast
> >>> even now.
> >>> - We would have add condition to every DNS API call in installers
> >>> which would increase horribleness of the installer code even more
> >>> (or add another layer of abstraction...).
> >>
> >> I agree having a special command is undesirable.
> >>>
> >>> - I don't see a point in using integrated-DNS with external-DNS at
> >>> the same time. To use integrated-DNS you have to get a proper DNS
> >>> delegation from parent domain - and if you can get the delegation
> >>> then there is no point in using external DNS ...
> >>
> >> I disagree on this point, it makes a lot of sense to have some
> >> zones maintained by IPA and ... some not.
> >>
> >>> Advantages:
> >>> - You can use external & integrated DNS at the same time.
> >>
> >> We can achieve the same w/o a new ipa level command.
> > 
> > This needs to be decided by FreeIPA framework experts ...
> > 
> > Petr^3 came up with clever 'proxy' idea for IPA-commands. This
> > proxy would provide all ipa dns* commands and dispatch user-issued
> > commands to appropriate FreeIPA-plugin (internal-dns or
> > external-dns). This decision could depend on some values in LDAP.
> > 
> >>> b) Replace dns.py with another implementation of current
> >>> dnszone-* & dnsrecord-* API.
> >>> -
> >>> This seems like a cleaner approach to me. It could be shipped as
> >>> ipa-server-dns-external package (opposed to "standard"
> >>> ipa-server-dns package).
> >>>
> >>> Advantages:
> >>> - It could seamlessly work with FreeIPA client installer because
> >>> the dns*->nsupdate command transformation would be done on
> >>> FreeIPA server and client doesn't need to know about it.
> >>> - Does not require re-training/not much new documentation because
> >>> commands are the same.
> >>>
> >>> Disadvantages:
> >>> - You can't use integrated & external DNS at the same time (but I
> >>> don't think it justifies the added complexity).
> >>
> >> I disagree.
> >>
> >> One of the reason to use a mix is to allow smooth migrations where
> >> zones are moved into (or out of) IPA one by one.
> > 
> > Good point, I agree. I will focus on supporting both (internal a

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-12-01 Thread Petr Spacek
On 14.11.2014 17:31, Petr Spacek wrote:
> On 14.11.2014 02:22, Simo Sorce wrote:
>> On Tue, 11 Nov 2014 16:29:51 +0100
>> Petr Spacek  wrote:
>>
>>> Hello,
>>>
>>> this thread is about RFE
>>> "IPA servers when installed should register themselves in the
>>> external DNS" https://fedorahosted.org/freeipa/ticket/4424
>>>
>>> It is not a complete design, just a raw idea.
>>>
>>>
>>> Use case
>>> 
>>> FreeIPA installation to a network with existing DNS infrastructure +
>>> network administrator who is not willing to add/maintain new DNS
>>> servers "just for FreeIPA".
>>>
>>>
>>> High-level idea
>>> ===
>>> - Transform dns* commands from FreeIPA framework to equivalent
>>> "nsupdate" commands and send DNS updates to existing DNS servers.
>>> - Provide necessary encryption/signing keys to nsupdate.
>>>
>>>
>>> 1) Integration to FreeIPA framework
>>> ===
>>> First of all, we need to decide if "external DNS integration" can be
>>> used at the same time with FreeIPA-integrated DNS or not.
>>> Side-question is what to do if a first server is installed with
>>> external-DNS but another replica is being installed with
>>> integrated-DNS and so on.
>>
>> I think being able to integrate with an external DNS is important, and
>> not just at the server level, being able to distribute TSIG keys to
>> client would be nice too, though a lot less important, than getting
>> server integration..
> 
> Using TSIG on many clients is very problematic. Keep in mind that TSIG is
> basically HMAC computed using symmetric key so:
> a) Every client would have to use the same key - this is a security nightmare.
> b) We would have to distribute and maintain many keys for many^2 clients,
> which is an administrative nightmare.
> 
> For *clients* I would rather stay with GSS-TSIG which is much more manageable
> because we can use Kerberos trust and Keytab distribution is already solved
> by ipa-client-install.
> 
> Alternative for clients would be to use FreeIPA server as proxy which
> encapsulates TSIG keys and issues update requests on behalf of clients. This
> would be FreeIPA-specific but any TSIG-distribution mechanism will be
> FreeIPA-specific anyway.
> 
> TSIG standard explicitly says that there is no standardized distribution
> mechanism.
> 
>>> In other words, the question is if current "dns.py" plugin shipped
>>> with FreeIPA framework should be:
>>>
>>> a) Extended dns.py with dnsexternal-* commands
>>> --
>>> Disadvantages:
>>> - It complicate FreeIPA DNS interface which is a complex beast even
>>> now.
>>> - We would have add condition to every DNS API call in installers
>>> which would increase horribleness of the installer code even more (or
>>> add another layer of abstraction...).
>>
>> I agree having a special command is undesirable.
>>>
>>> - I don't see a point in using integrated-DNS with external-DNS at
>>> the same time. To use integrated-DNS you have to get a proper DNS
>>> delegation from parent domain - and if you can get the delegation
>>> then there is no point in using external DNS ...
>>
>> I disagree on this point, it makes a lot of sense to have some zones
>> maintained by IPA and ... some not.
>>
>>> Advantages:
>>> - You can use external & integrated DNS at the same time.
>>
>> We can achieve the same w/o a new ipa level command.
> 
> This needs to be decided by FreeIPA framework experts ...
> 
> Petr^3 came up with clever 'proxy' idea for IPA-commands. This proxy would
> provide all ipa dns* commands and dispatch user-issued commands to appropriate
> FreeIPA-plugin (internal-dns or external-dns). This decision could depend on
> some values in LDAP.
> 
>>> b) Replace dns.py with another implementation of current dnszone-* &
>>> dnsrecord-* API.
>>> -
>>> This seems like a cleaner approach to me. It could be shipped as
>>> ipa-server-dns-external package (opposed to "standard" ipa-server-dns
>>> package).
>>>
>>> Advantages:
>>> - It could seamlessly work with FreeIPA client installer because the
>>> dns*->nsupdate command transformation would be done on FreeIPA server
>>> and client doesn't need to know about it.
>>> - Does not require re-training/not much new documentation because
>>> commands are the same.
>>>
>>> Disadvantages:
>>> - You can't use integrated & external DNS at the same time (but I
>>> don't think it justifies the added complexity).
>>
>> I disagree.
>>
>> One of the reason to use a mix is to allow smooth migrations where
>> zones are moved into (or out of) IPA one by one.
> 
> Good point, I agree. I will focus on supporting both (internal and external)
> DNS at the same time.
> 
>>> Petr^3 or anyone else, what do you propose?
>>
>> I think what I'd like to see is to be able to configure a DNS zone in
>> LDAP and mark it external.
>> The zone would held the TSIG keys necessary to perform DNS updates.
>>
>> When the regular ip

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-11-14 Thread Petr Spacek
On 14.11.2014 02:22, Simo Sorce wrote:
> On Tue, 11 Nov 2014 16:29:51 +0100
> Petr Spacek  wrote:
> 
>> Hello,
>>
>> this thread is about RFE
>> "IPA servers when installed should register themselves in the
>> external DNS" https://fedorahosted.org/freeipa/ticket/4424
>>
>> It is not a complete design, just a raw idea.
>>
>>
>> Use case
>> 
>> FreeIPA installation to a network with existing DNS infrastructure +
>> network administrator who is not willing to add/maintain new DNS
>> servers "just for FreeIPA".
>>
>>
>> High-level idea
>> ===
>> - Transform dns* commands from FreeIPA framework to equivalent
>> "nsupdate" commands and send DNS updates to existing DNS servers.
>> - Provide necessary encryption/signing keys to nsupdate.
>>
>>
>> 1) Integration to FreeIPA framework
>> ===
>> First of all, we need to decide if "external DNS integration" can be
>> used at the same time with FreeIPA-integrated DNS or not.
>> Side-question is what to do if a first server is installed with
>> external-DNS but another replica is being installed with
>> integrated-DNS and so on.
> 
> I think being able to integrate with an external DNS is important, and
> not just at the server level, being able to distribute TSIG keys to
> client would be nice too, though a lot less important, than getting
> server integration..

Using TSIG on many clients is very problematic. Keep in mind that TSIG is
basically HMAC computed using symmetric key so:
a) Every client would have to use the same key - this is a security nightmare.
b) We would have to distribute and maintain many keys for many^2 clients,
which is an administrative nightmare.

For *clients* I would rather stay with GSS-TSIG which is much more manageable
because we can use Kerberos trust and Keytab distribution is already solved
by ipa-client-install.

Alternative for clients would be to use FreeIPA server as proxy which
encapsulates TSIG keys and issues update requests on behalf of clients. This
would be FreeIPA-specific but any TSIG-distribution mechanism will be
FreeIPA-specific anyway.

TSIG standard explicitly says that there is no standardized distribution
mechanism.

>> In other words, the question is if current "dns.py" plugin shipped
>> with FreeIPA framework should be:
>>
>> a) Extended dns.py with dnsexternal-* commands
>> --
>> Disadvantages:
>> - It complicate FreeIPA DNS interface which is a complex beast even
>> now.
>> - We would have add condition to every DNS API call in installers
>> which would increase horribleness of the installer code even more (or
>> add another layer of abstraction...).
> 
> I agree having a special command is undesirable.
>> 
>> - I don't see a point in using integrated-DNS with external-DNS at
>> the same time. To use integrated-DNS you have to get a proper DNS
>> delegation from parent domain - and if you can get the delegation
>> then there is no point in using external DNS ...
> 
> I disagree on this point, it makes a lot of sense to have some zones
> maintained by IPA and ... some not.
> 
>> Advantages:
>> - You can use external & integrated DNS at the same time.
> 
> We can achieve the same w/o a new ipa level command.

This needs to be decided by FreeIPA framework experts ...

Petr^3 came up with clever 'proxy' idea for IPA-commands. This proxy would
provide all ipa dns* commands and dispatch user-issued commands to appropriate
FreeIPA-plugin (internal-dns or external-dns). This decision could depend on
some values in LDAP.

>> b) Replace dns.py with another implementation of current dnszone-* &
>> dnsrecord-* API.
>> -
>> This seems like a cleaner approach to me. It could be shipped as
>> ipa-server-dns-external package (opposed to "standard" ipa-server-dns
>> package).
>>
>> Advantages:
>> - It could seamlessly work with FreeIPA client installer because the
>> dns*->nsupdate command transformation would be done on FreeIPA server
>> and client doesn't need to know about it.
>> - Does not require re-training/not much new documentation because
>> commands are the same.
>>
>> Disadvantages:
>> - You can't use integrated & external DNS at the same time (but I
>> don't think it justifies the added complexity).
> 
> I disagree.
> 
> One of the reason to use a mix is to allow smooth migrations where
> zones are moved into (or out of) IPA one by one.

Good point, I agree. I will focus on supporting both (internal and external)
DNS at the same time.

>> Petr^3 or anyone else, what do you propose?
> 
> I think what I'd like to see is to be able to configure a DNS zone in
> LDAP and mark it external.
> The zone would held the TSIG keys necessary to perform DNS updates.
> 
> When the regular ipa dnsrecord-add etc... commands are called, the
> framework detects that the zone is "external", fewttches the TSIG key
> (if the user has access to it) and spawn an nsupdate command tha

Re: [Freeipa-devel] FreeIPA integration with external DNS services

2014-11-13 Thread Simo Sorce
On Tue, 11 Nov 2014 16:29:51 +0100
Petr Spacek  wrote:

> Hello,
> 
> this thread is about RFE
> "IPA servers when installed should register themselves in the
> external DNS" https://fedorahosted.org/freeipa/ticket/4424
> 
> It is not a complete design, just a raw idea.
> 
> 
> Use case
> 
> FreeIPA installation to a network with existing DNS infrastructure +
> network administrator who is not willing to add/maintain new DNS
> servers "just for FreeIPA".
> 
> 
> High-level idea
> ===
> - Transform dns* commands from FreeIPA framework to equivalent
> "nsupdate" commands and send DNS updates to existing DNS servers.
> - Provide necessary encryption/signing keys to nsupdate.
> 
> 
> 1) Integration to FreeIPA framework
> ===
> First of all, we need to decide if "external DNS integration" can be
> used at the same time with FreeIPA-integrated DNS or not.
> Side-question is what to do if a first server is installed with
> external-DNS but another replica is being installed with
> integrated-DNS and so on.

I think being able to integrate with an external DNS is important, and
not just at the server level, being able to distribute TSIG keys to
client would be nice too, though a lot less important, than getting
server integration..

> In other words, the question is if current "dns.py" plugin shipped
> with FreeIPA framework should be:
> 
> a) Extended dns.py with dnsexternal-* commands
> --
> Disadvantages:
> - It complicate FreeIPA DNS interface which is a complex beast even
> now.
> - We would have add condition to every DNS API call in installers
> which would increase horribleness of the installer code even more (or
> add another layer of abstraction...).

I agree having a special command is undesirable.

> - I don't see a point in using integrated-DNS with external-DNS at
> the same time. To use integrated-DNS you have to get a proper DNS
> delegation from parent domain - and if you can get the delegation
> then there is no point in using external DNS ...

I disagree on this point, it makes a lot of sense to have some zones
maintained by IPA and ... some not.

> Advantages:
> - You can use external & integrated DNS at the same time.

We can achieve the same w/o a new ipa level command.

> b) Replace dns.py with another implementation of current dnszone-* &
> dnsrecord-* API.
> -
> This seems like a cleaner approach to me. It could be shipped as
> ipa-server-dns-external package (opposed to "standard" ipa-server-dns
> package).
> 
> Advantages:
> - It could seamlessly work with FreeIPA client installer because the
> dns*->nsupdate command transformation would be done on FreeIPA server
> and client doesn't need to know about it.
> - Does not require re-training/not much new documentation because
> commands are the same.
> 
> Disadvantages:
> - You can't use integrated & external DNS at the same time (but I
> don't think it justifies the added complexity).

I disagree.

One of the reason to use a mix is to allow smooth migrations where
zones are moved into (or out of) IPA one by one.

> Petr^3 or anyone else, what do you propose?

I think what I'd like to see is to be able to configure a DNS zone in
LDAP and mark it external.
The zone would held the TSIG keys necessary to perform DNS updates.

When the regular ipa dnsrecord-add etc... commands are called, the
framework detects that the zone is "external", fewttches the TSIG key
(if the user has access to it) and spawn an nsupdate command that will
perform the update against whatever DNS server is authoritative for the
zone.

Some commands may be disabled if the zone is external and appropriate
errors would be returned.


> 2) Authentication to external DNS server/keys
> =
> This is separate problem from FreeIPA framework integration.
> We will have to somehow store raw symmetric keys (for DNS TSIG) or
> keytabs (for DNS GSS-TSIG) and distribute them somehow to replicas so
> every replica can update DNS records as necessary.

For TSIG keys I think we should just store them in a LDAP record, see
above.
For keytabs we can simply store them just like any  other kerberos key
if we really need it (in a trust case for example, we may not need a
new keytab, we may be allowed to use our own credentials through the
trust. So we'll need to explore a bit how to properly express that in
configuration. REtrieval ok keytabs is then just a matter of running
ipa-getkeytab -r on the replica that needs it.

> This will be the funny part because in case of AD trusts we have
> chicken-egg problem. You need to establish trust to get ticket for
> DNS/dc1.ad.example@AD principal but you can't (I guess) establish
> trust until proper DNS records are in place ...

No, in this case we should create the records at trust establishment
time using the admin credentials we have been provi

[Freeipa-devel] FreeIPA integration with external DNS services

2014-11-11 Thread Petr Spacek
Hello,

this thread is about RFE
"IPA servers when installed should register themselves in the external DNS"
https://fedorahosted.org/freeipa/ticket/4424

It is not a complete design, just a raw idea.


Use case

FreeIPA installation to a network with existing DNS infrastructure + network
administrator who is not willing to add/maintain new DNS servers "just for
FreeIPA".


High-level idea
===
- Transform dns* commands from FreeIPA framework to equivalent "nsupdate"
commands and send DNS updates to existing DNS servers.
- Provide necessary encryption/signing keys to nsupdate.


1) Integration to FreeIPA framework
===
First of all, we need to decide if "external DNS integration" can be used at
the same time with FreeIPA-integrated DNS or not. Side-question is what to do
if a first server is installed with external-DNS but another replica is being
installed with integrated-DNS and so on.

In other words, the question is if current "dns.py" plugin shipped with
FreeIPA framework should be:

a) Extended dns.py with dnsexternal-* commands
--
Disadvantages:
- It complicate FreeIPA DNS interface which is a complex beast even now.
- We would have add condition to every DNS API call in installers which would
increase horribleness of the installer code even more (or add another layer of
abstraction...).
- I don't see a point in using integrated-DNS with external-DNS at the same
time. To use integrated-DNS you have to get a proper DNS delegation from
parent domain - and if you can get the delegation then there is no point in
using external DNS ...

Advantages:
- You can use external & integrated DNS at the same time.


b) Replace dns.py with another implementation of current dnszone-* &
dnsrecord-* API.
-
This seems like a cleaner approach to me. It could be shipped as
ipa-server-dns-external package (opposed to "standard" ipa-server-dns package).

Advantages:
- It could seamlessly work with FreeIPA client installer because the
dns*->nsupdate command transformation would be done on FreeIPA server and
client doesn't need to know about it.
- Does not require re-training/not much new documentation because commands are
the same.

Disadvantages:
- You can't use integrated & external DNS at the same time (but I don't think
it justifies the added complexity).


Petr^3 or anyone else, what do you propose?


2) Authentication to external DNS server/keys
=
This is separate problem from FreeIPA framework integration.
We will have to somehow store raw symmetric keys (for DNS TSIG) or keytabs
(for DNS GSS-TSIG) and distribute them somehow to replicas so every replica
can update DNS records as necessary.

This will be the funny part because in case of AD trusts we have chicken-egg
problem. You need to establish trust to get ticket for DNS/dc1.ad.example@AD
principal but you can't (I guess) establish trust until proper DNS records are
in place ...

For 'experimental' phase I would go with pre-populated CCcache, i.e. admin
will manually do kinit Administrator@AD and then run FreeIPA installer.

Maybe we can re-use trust secret somehow? I don't know, I will reach out to AD
experts with questions.

This area needs more research but for now it seems feasible to re-use DNSSEC
key distribution system for TSIG keys and keytabs so "only" the chicken-egg
problem is left.

This will need new LDAP schema but I will propose something when I'm done with
investigation.

-- 
Petr^2 Spacek

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel