Re: [DNSOP] Paul Wouters' Discuss on draft-ietf-dnsop-dns-catalog-zones-08: (with DISCUSS and COMMENT)

2023-02-06 Thread Willem Toorop

Hi Paul, Hi Murray,

Hereby the responses to Paul's review. I've CC'ed you Murray, because 
you mentioned explicitly that you support Paul's DISCUSS positions.


Op 04-01-2023 om 05:05 schreef Paul Wouters via Datatracker:

DISCUSS:
-- 
## DISCUSS


### Section 4.3.1 Versioning

What should one do if the version supported is lower than the version of zone
received? Attempt to understand it? preventively fail?

Are version 1 and 2 compatible? In what ways are they not? Should perhaps
version 1 catalog zones always be ignored ?


Version 1 and 2 are not compatible. Version 1 was bind's original but 
not standardized idea/implementation. New implementations are better of 
implementing version 2 because the exact details of version 1 are not 
standardized (and thus kind of unknown).


Commit 
https://github.com/NLnetLabs/draft-toorop-dnsop-dns-catalog-zones/commit/8eed29f 
adds the explicit mention that version 1 catalog zones should also be 
considered broken by catalog consumers that only have version 2 
implemented to the enumeration of section 4.3.1. Schema Version (version 
property).




### Group Properties

It seems like Section 4.4.2 defines "group properties" that are standardized,
while Section 4.5 specifies Private Use group properties.


There are no "group properties", only "group property *values*". The 
values listen in 4.4.2 are only examples and not standardized. Section 
4.5 is about private use properties and is not involved in group values.



But there is actually
no registry created for Group Properties, and no definitions other than
"examples" are given. This makes the status of, for example "nodnssec",
unclear. Is this a custom (eg bind implementation only) property or is this
really a custom private use entry, in which case the example is bad as it
belongs under .bind.ext.

Since "nodnssec" seems a real use case, why does this document not create an
IANA registry for Catalog Zone Group Properties and places "nodnssec" in it?


We have done several modifications to the draft to clarify this better.
  - We refer to the values of group properties now as "group property 
values" or even simply as "group values".
  - The group values now have non-descriptive names as to not suggest 
that they have meanings in implementations (it's the operator that 
determines the "meaning" and not the implementation)
  - We have extended the lines about catalog producers publishing at 
two consumer operators and how mapping of group values is a matter of 
those producer/consumer relationships, so it now reads:


  "Implementations MAY facilitate mapping of a specific group value 
to specific configuration configurable on a per catalog zone basis to 
allow for producers that publish their catalog zone at multiple consumer 
operators. Consumer operators SHOULD namespace their group values to 
reduce the risk of having to resolve clashes."



The co-authors do recognize that a registry for *properties* is a good 
idea and have added that to the draft (with PR 
https://github.com/NLnetLabs/draft-toorop-dnsop-dns-catalog-zones/pull/67 )




### 5.3 "MUST be removed"?
```
 Only when the zone was configured from a specific catalog zone,
 and the zone is removed as a member from that specific catalog
 zone, the zone and associated state (such as zone data and DNSSEC
 keys) MUST be removed.
```

What is "removed" here? I think perhaps it should be limited to "MUST no longer
be served". For example, it would be bad if the operator made an error, and
ended up briefly removing the zone and "removing" (aka destroying) some private
DNSSEC keys, complicating the zone restoration. Also, perhaps the
implementation wants to simply keep the state on disk but move it to a
/var/lib/xxx/zones/archived/ directory. The use of "remove" sounds like that
might not be allowed.


We have added a line explicitly stating this operational consideration 
to Section 5.3. Member zone removal:


   "Consumer operators may consider to temporarily archive associated 
state to facilitate mistake recovery."




### Operational Considerations

What are the risks and benefits of Extension group properties?

Should one try to standardize these instead? Why is this document not doing
that based on its operational experience with eg bind and knot and powerdns ?


This document will standardize three properties: "version", "coo" and 
"group". Implementations can create their own custom properties below 
the "ext" label. Bind9 has several custom properties ("primaries", 
"allow-query" and "allow-transfer"), but the other implementations don't 
have them yet. When the other implementations will create similar custom 
properties (from operator feedback) they can be considered to be 
standardized as regular (and not custom) properties and don't need to be 
below the "ext" label.



if one is experimenting with further properties in the extension 

[DNSOP] Paul Wouters' Discuss on draft-ietf-dnsop-dns-catalog-zones-08: (with DISCUSS and COMMENT)

2023-01-03 Thread Paul Wouters via Datatracker
Paul Wouters has entered the following ballot position for
draft-ietf-dnsop-dns-catalog-zones-08: Discuss

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)


Please refer to 
https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/ 
for more information about how to handle DISCUSS and COMMENT positions.


The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-dnsop-dns-catalog-zones/



--
DISCUSS:
--

# Sec AD review of draft-ietf-dnsop-dns-catalog-zones-08

CC @paulwouters

Please refer to
https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/
for more information about how to handle DISCUSS and COMMENT positions.

This review uses the format specified in https://github.com/mnot/ietf-comments/
which allows automated tools to process items (eg to produce github issues)

Note that I am a happy user of catalog zones since a few months. While I
originally thought this seemed like an "if all you have is a DNS hammer"
solution, it actually has some very clear advantages over other configuration
synchronization methods. Thanks for this work, I am a fan!

I do have some issues I'd like to discuss though :)

## DISCUSS

### Section 4.3.1 Versioning

What should one do if the version supported is lower than the version of zone
received? Attempt to understand it? preventively fail?

Are version 1 and 2 compatible? In what ways are they not? Should perhaps
version 1 catalog zones always be ignored ?

### Group Properties

It seems like Section 4.4.2 defines "group properties" that are standardized,
while Section 4.5 specifies Private Use group properties. But there is actually
no registry created for Group Properties, and no definitions other than
"examples" are given. This makes the status of, for example "nodnssec",
unclear. Is this a custom (eg bind implementation only) property or is this
really a custom private use entry, in which case the example is bad as it
belongs under .bind.ext.

Since "nodnssec" seems a real use case, why does this document not create an
IANA registry for Catalog Zone Group Properties and places "nodnssec" in it?

### 5.3 "MUST be removed"?
```
Only when the zone was configured from a specific catalog zone,
and the zone is removed as a member from that specific catalog
zone, the zone and associated state (such as zone data and DNSSEC
keys) MUST be removed.
```

What is "removed" here? I think perhaps it should be limited to "MUST no longer
be served". For example, it would be bad if the operator made an error, and
ended up briefly removing the zone and "removing" (aka destroying) some private
DNSSEC keys, complicating the zone restoration. Also, perhaps the
implementation wants to simply keep the state on disk but move it to a
/var/lib/xxx/zones/archived/ directory. The use of "remove" sounds like that
might not be allowed.

### Operational Considerations

What are the risks and benefits of Extension group properties?

Should one try to standardize these instead? Why is this document not doing
that based on its operational experience with eg bind and knot and powerdns ?

### Security Considerations

Dealing with high value domains eg gmail.com is missing. If a large DNS hoster
would enable catalog zones for its customers, how can it prevent rogue
takeovers? If fully automated, it can never be safely deployed. If each zone
needs a manual check, well than we don't really have "catalog zones"
auto-populating name servers.

Is there an expectation that nameservers can do some authorization call before
adding a new domain that is already delegated elsewhere? Eg if GoDaddy uses
catalog zones, and I am their tiny customer with "nohats.ca" and then add a new
zone "gmail.com", that could cause a significant disruption. Especially if the
malicious person would create another domain that depends on "gmail.com" in
such a way that GoDaddy's servers will start sending "gmail.com" data in their
additional data reply for other domains. The section only has a "consumer(s)
MAY ", which in my opinion, is far too weak as a
security control. As the above example shows, it is just too easy to start
poisoning nameservers via implementations that skip this one MAY clause in the
Security Considerations.


--
COMMENT:
--

## Comments

### Appendix A

The appendix implementation status only mentions version 2 for bind.
Presumably, the other implementations never supported version 1, but this could
be made more clear (although granted, it is a little weird so late in the
process to do this as