To:
ietf-provreg@cafax.se
From:
Eric Brunner-Williams in Portland Maine <brunner@nic-naa.net>
Date:
Wed, 11 Apr 2001 17:36:12 -0400
Sender:
owner-ietf-provreg@cafax.se
Subject:
Privacy: policy{access,statement{purpose,recipient,retention},expiry}
Introduction In this memo I'll cover data collection considerations in detail. The requirement to meet is: (draft-ietf-provreg-grrp-reqs-01.txt, bis) provide services to identify data collection policies The 25-word summary is a data collection policy vocabulary is specified which identifies domain-name registration data collection policies. The vocabulary is expressed in in ABNF (grammer representation of XML syntax) and in XSD. The protocol transports these schema as it does any other, to provide the required service. In the following, indentation is used to show relationships. Policy Access Statement Purpose Recipient Retention Expiry There are seven sections that follow: policy {access, statement {purpose, recipient, retention}, expiry} Each resembles the note I sent earlier this week on the ACCESS element, which appears here again with corrections (thanks Scott), and as I remarked in the earlier note, there are issues to resolve: 1. does the set of <pick-an-element> attributes cover the R* problem space discussed in the provreg WG list? 2. is the XML right? Motivational discussion can get flushed out in the list, here I'm just getting the (I think) the functional requirement met, or getting significantly closer to that goal. Eric BEGIN BEGIN BEGIN X. The POLICY element The POLICY element is defined as the container for data collection policy statements. The POLICY element MUST contain all of the following elements: <ACCESS/> defined subsequent <STATEMENT/> one or more, defined subsequent ("statement-blocks"), <EXPIRY/> defined subsequent // Policy ABNF (grammer representation of XML syntax) policy = "<POLICY>" access *statement-block expiry "</POLICY>" <!-- Policy XSD fragment --> <element name='POLICY'> <complexType> <sequence> <element ref='abc:ACCESS'/> <element ref='abc:STATEMENT' minOccurs='0' maxOccurs='unbounded'/> <element ref='abc:EXPIRY'/> </sequence> </complexType> </element> X.1. The ACCESS element The ACCESS element is defined as the ability of registrant to view registrant originated data and address questions or concerns to the registration service provider. Registration service providers MUST disclose one value for the access attribute. The method of access is not specified. The ACCESS element must contain one of the following elements: <social/> access is provided to all social data only <technical/> access is provided to all technical data only <all/> access is provided to all technical and social data <noaccess/> registrant data exists but access is not provided <null/> registrant data is not persistent // Access ABNF (grammer representation of XML syntax) access = "<ACCESS>" access_disclosure "</ACCESS>" access_disclosure = "<social/>" | ; socal data only "<technical/>" | ; technical data only "<all/>" | ; all data "<noaccess/>" | ; access not provided "<null/>" | ; data not persistent <!-- Access XSD fragment --> <element name='ACCESS'> <complexType name="access-value"> <sequence> <choice> <element name='social' type='abc:access-value'/> <element name='technical' type='abc:access-value'/> <element name='all' type='abc:access-value'/> <element name='noaccess' type='abc:access-value'/> <element name='null' type='abc:access-value'/> </choice> </sequence> </complexType> </element> X.2 The STATEMENT element The STATEMENT element is defined as a container that groups together PURPOSE element, RECIPIENT element, RETENTION element, and DATA-GROUP elements. // Statement ABNF (grammer representation of XML syntax) statement-block = "<STATEMENT>" purpose recipient retention 1*data-group "</STATEMENT>" <!-- Statement XSD fragment --> <element name='STATEMENT'> <complexType> <sequence> <element ref='abc:PURPOSE'/> <element ref='abc:RECIPIENT'/> <element ref='abc:RETENTION'/> <element ref='abc:DATA-GROUP' maxOccurs='unbounded'/> </sequence> </complexType> </element> X.2.1 The PURPOSE element Each STATEMENT element MUST contain a PURPOSE element that contains one or more purposes of data collection or uses of data. Registration service providers MUST classify their data practices into one one or more of the purposes specified below. The PURPOSE element MUST contain all that apply of the following: <dnreg/> dn name registration (dnso) <tmreg/> tm mark registration (trademark) <ipreg/> ip address registration (aso) <contact/> contacting registrants for marketing purposes <other-purpose> something other than the above // Access ABNF (grammer representation of XML syntax) purpose = "<PURPOSE>" 1*purposevalue "</PURPOSE>" purposevalue = "<dnreg/>" "<tmreg/>" "<ipreg/>" "<contact/>" "<other-purpose/>" <!-- Purpose XSD fragment --> <element name='PURPOSE'> <complexType> <sequence> <choice maxOccurs='unbounded'> <element name='dnreg' type='abc:purpose-value'/> <element name='tmreg' type='abc:purpose-value'/> <element name='ipreg' type='abc:purpose-value'/> <element name='contact' type='abc:purpose-value'/> <element name='other-purpose'> <complexType mixed='true'> <attribute name='required' use='optional' type='abc:required-value'/> </complexType> </element> </choice> </sequence> </complexType> </element> X.2.2 The RECIPIENT element Each STATEMENT element MUST contain a RECIPIENT element that contains one or more recipients of the collected data. Registration service providers MUST classify their recipients into one or more of the recipients specified below. The RECIPIENT element MUST contain all that apply of the following: <ours/> ourselves and/or our agents and/or us as agents <same/> legal entities following our practices <other-recipient/> legal entities following unknown practices <unrelated/> unrelated third parties <public> public fora // Recipient ABNF (grammer representation of XML syntax) recipient = "<RECIPIENT>" 1*recipientvalue "</RECIPIENT>" recipientvalue = "<ours/>" "<same/>" "<other-recipient/>" "<unrelated/>" "<public/>" <!-- Recipient XSD fragment --> <element name='RECIPIENT'> <complexType> <sequence> <choice maxOccurs='unbounded'> <element name='ours' type='abc:recipient-value'/> <element name='same' type='abc:recipient-value'/> <element name='other-recipient' type='abc:recipient-value'/> <element name='unrelated' type='abc:recipient-value'/> <element name='public' type='abc:recipient-value'/> </choice> </sequence> </complexType> </element> X.2.3 The RETENTION element Each STATEMENT element MUST contain a RETENTION element that contains one of the following: The RETENTION element MUST contain one of the following: <no-retention/> data is not persistent <stated-purpose/> data is persistent (functional requirement) <legal-requirement/> data is persistent (legal requirement) <business-practices/> data is persistent (non-functional requirement) <indefinitely> data is persistent (indefinitely) // Retention ABNF (grammer representation of XML syntax) retention = "<RETENTION>" 1*retentionvalue "</RETENTION>" recipientvalue = "<no-retention/>" "<stated-purpose/>" "<legal-requirement/>" "<business-practices/>" "<indefinitely/>" <!-- Recipient XSD fragment --> <element name='RETENTION'> <complexType> <sequence> <choice maxOccurs='unbounded'> <element name='no-retention' type='abc:retention-value'/> <element name='stated-purpose' type='abc:retention-value'/> <element name='legal-requirement' type='abc:retention-value'/> <element name='business-practices' type='abc:retention-value'/> <element name='indefinitely' type='abc:retention-value'/> </choice> </sequence> </complexType> </element> X.3 The Expiry element The EXPIRY element is defined as the temporal scope of a policy. The expiry is given as either an absolute expiry time, or a relative expiry time. An absolute expiry time is a dateTime, at which the policy is no longer valid. The lexical representation for dateTime is the [ISO 8601] extended format CCYY-MM-DDThh:mm:ssZ, where "CC" represents the century, "YY" the year, "MM" the month and "DD" the day. The letter "T" is the date/time separator and "hh", "mm", "ss" represent hour, minute and second respectively. The letter "Z" indicates Coordinated Universal Time (UTC) (canonical representation for dateTime). A relative expiry time gives a duration until the policy is no longer valid. The lexical representation for duration is the [ISO 8601] extended format PnYn MnDTnH nMnS, where nY represents the number of years, nM the number of months, nD the number of days, 'T' is the date/time separator, nH the number of hours, nM the number of minutes and nS the number of seconds. // Expiry ABNF (grammer representation of XML syntax) expiry = "<EXPIRY> absolute = `date="` dateTime `"` relative = `time="` timeDuration `"` </EXPIRY> <!-- Expiry XSD fragment --> <element name='EXPIRY'> <complexType> <choice> <attribute name='date' type='dateTime' use='optional'/> <attribute name='time' type='timeDuration' use='optional'/> </choice> </complexType> </element> END END END