home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / ietf / aac / aac-minutes-93nov.txt < prev   
Text File  |  1994-02-23  |  23KB  |  516 lines

  1.  
  2. CURRENT_MEETING_REPORT_
  3.  
  4. Reported by B. Clifford Neuman/Information Sciences Institute and
  5. Piers McMahon/ICL
  6.  
  7. Minutes of the Authorization and Access Control Working Group (AAC)
  8.  
  9.  
  10. The charter, past minutes, mailing-list discussions, and other documents
  11. mentioned in these minutes are available by anonymous FTP from
  12. prospero.isi.edu in the directory /pub/aac.
  13.  
  14.  
  15. Agenda
  16.  
  17.  
  18.    o Presentation of a revised list of restrictions and privilege
  19.      attributes needed by applications and existing security systems,
  20.      and a proposed method for representing them.
  21.  
  22.    o Discussion of the information maintained in the security context
  23.      and where it should come from.  The security context maintains
  24.      information about the user that is used to make authorization
  25.      decisions.
  26.  
  27.    o Discussion of the intended use of the authorization attributes by
  28.      applications, ACL formats for an authorization API, and discussion
  29.      of an API to provide a simple interface for application developers.
  30.  
  31.    o Discussion of guidelines for adding authorization to network
  32.      accessible applications.  These guidelines should be written and
  33.      released initially as an Internet-Draft, and eventually as an
  34.      Informational RFC.
  35.  
  36.  
  37. The purpose of the the initial work on a framework to represent security
  38. attributes and restrictions is to provide a uniform framework for both
  39. distributed authorization and local authorization.  Local authorization
  40. will be based on access control lists.  Distributed authorization will
  41. be based on proxies.  Both have common elements.  These elements (or
  42. attributes) may be stored on access control list entries on security
  43. servers, carried in credentials, and evaluated on the end system the
  44. same way they would be evaluated if stored on an access control list
  45. maintained by the end system itself.
  46.  
  47.  
  48. Presentation of a Revised List of Attributes and Restrictions
  49.  
  50. At the Amsterdam IETF, there was concern that the representation of all
  51. rights conveyed by a set of credentials as restrictions on rights
  52. possessed by the grantor of those credentials was confusing.  A revised
  53. framework for representing rights and restrictions on those rights was
  54. sent to the mailing list and presented at the meeting.  In the Amsterdam
  55. discussion, the use of the term certificate was also confusing.  The
  56. revised framework uses the term proxy which is less confusing, though
  57. more closely tied to one particular proposed implementation of the
  58. framework.
  59.  
  60. In the revised framework for representing privileges, privileges are
  61. conveyed by proxies.  Proxies enumerate positive rights they convey, but
  62. these rights are limited by the rights available to the principal that
  63. signed the proxy (the grantor).  Some proxies specify that all rights
  64. available to the grantor are conveyed, supporting unrestricted
  65. delegation or authentication forwarding.  Proxies may be further
  66. restricted to limit the rights that are conveyed.  Certain restrictions
  67. require the presentation of additional proxies called endorsements
  68. before the original proxy may be used.  A proxy and all required
  69. endorsements together form a proxy chain (a proxy that does not require
  70. endorsements constitutes a chain by itself).  Endorsement may apply
  71. additional restrictions.  The restrictions specified by each proxy in a
  72. chain are applied, resulting in a more restricted set of rights.  A
  73. principal may collect multiple independent proxy chains, and the rights
  74. granted by each chain are added providing additional rights.
  75.  
  76.  
  77. o Attributes and Restrictions
  78.  
  79. A structured set of authorization attributes are associated with each
  80. proxy.  Each attribute in the set is typed, and the interpretation of
  81. the data associated with the attribute is determined by its type.  Some
  82. types of attributes are specific to specific servers.  A flags field
  83. associated with each kind of attribute encodes the appropriate behavior
  84. if the interpretation of the attributed is not known.  The two possible
  85. behaviors are rejection of the request, or ignoring the attribute.
  86.  
  87. Attributes are further divided into three classes:  privilege
  88. attributes, restrictions, and aggregates.  The class is also encoded in
  89. the flags field.
  90.  
  91. Privilege attributes identify some operation that is permitted, or
  92. assert identifying information such as group information or user
  93. identifiers that grant additional rights to the principal that presents
  94. a proxy.  Privilege attributes may be placed in a proxy only at the time
  95. it is created.  They may not be added subsequently, and they may not
  96. appear in endorsements.  Further, in order for a privilege attribute to
  97. apply, the principal granting the proxy must possess the ability to
  98. grant such an attribute.  (Though privilege attributes grant rights,
  99. they are interpreted as explicitly enumerating the rights that are to be
  100. granted by a proxy and all other rights are presumed not to be granted
  101. by the proxy).
  102.  
  103. Restrictions specifically remove rights from those conveyed by a proxy,
  104. or they place additional constraints on when, how, where, or by whom a
  105. proxy may be exercised.  Restriction may be present when a proxy is
  106. initially created, they may be added subsequently and they may be
  107. present in endorsements.  Restrictions that are present in a required
  108. endorsement are applied in addition to the restrictions present in the
  109. proxy that is endorsed.
  110.  
  111. Aggregate attributes may be positive (privilege attributes) or negative
  112. (restrictions).  The rules about where each may appear apply to
  113. aggregates as well.  An aggregate attribute encapsulates a set of
  114. attributes and specifies how they are to be interpreted.  One form of
  115. aggregate limits the application of a set of attributes to a particular
  116. end server or a particular application.
  117.  
  118.  
  119. o Discussion
  120.  
  121. After the initial presentation several questions were raised.  Among the
  122. questions was how one determines which principals are authorized to
  123. issue proxies granting particular rights.  The end server will still
  124. have to maintain access control lists for this information, but these
  125. ACLs only contain the names of the principals that grant rights for an
  126. operation, rather than those authorized to perform the operation.
  127. Presumably this information changes less frequently, and is more
  128. compact.
  129.  
  130. Checking these ACLs would be handled by the authorization API, so the
  131. client does not have to worry about it directly.  The contents of this
  132. ACL might be specified by a configuration option for the local system.
  133. This check might be done when establishing a security context for a
  134. request or a login session, on the remote machine.  Ted Ts'o commented
  135. that the information about the grantor of a privilege should be carried
  136. along as extra information in the security context even after
  137. verification, so that an application that has special requirements can
  138. check it.
  139.  
  140. Another issue raised was concern about placing too much of the burden on
  141. the application programmer to interpret such proxies and proxy chains.
  142. In fact, the interpretation would be handled by two APIs, one of which
  143. would be specific to the distributed authorization method in use, and
  144. one would be the authorization API which was discussed later in the
  145. meeting.  This latter API will take several arguments, and answer yes or
  146. no indicating whether an operation is to be allowed.
  147.  
  148.  
  149. o Enumeration of Attributes and Restrictions
  150.  
  151. An initial set of positive and negative attributes was presented and it
  152. was discussed how they fit into the revised framework.  Some of the
  153. attributes are application specific, and other application specific
  154. attributes can be defined.
  155.  
  156. The positive privilege attributes can only be grated in an initial proxy
  157. and can not be added subsequently, to augment rights.  In enumerating an
  158. initial set, a goal was to cover the rights needed and used by various
  159. distributed authorization mechanisms including ECMA, DCE, and restricted
  160. proxies.
  161.  
  162. Among the positive attributes were:
  163.  
  164.  
  165.  
  166. LOCAL-UID               set UID for local system
  167.  
  168. GROUP-MEMBERSHIP        enumerate local groups to be used locally
  169.  
  170. DCE-PAC                 globally unique groups and uuids
  171.  
  172. AUTHORIZED              encodes list of objects and rights for objects
  173.  
  174. QUOTA                   like authorized, but specifies numeric limit
  175.  
  176.  
  177.  
  178. Other suggested positive attributes include:
  179.  
  180.  
  181.  
  182. ROLE                    to include rights of individual in particular
  183.                         role
  184.  
  185. ALL                     which might be needed to mean all rights of
  186.                         grantor
  187.  
  188.  
  189.  
  190. For the AUTHORIZED attribute, the encoding of the identified objects and
  191. the rights on those objects would be application specific, and opaque to
  192. other parts of the system.
  193.  
  194. Among the negative attributes were:
  195.  
  196.  
  197.  
  198. FOR-USE-BY-PRINCIPAL    who may use a proxy, or compound principal
  199.  
  200. FOR-USE-BY-GROUP        only members of group may use proxy
  201.  
  202. ACCEPT-N-TIMES          can only be exercised N times on a given server
  203.  
  204. VALID-TIME-OF-DAY       e.g.  can only be used between 9AM and 5PM
  205.  
  206. VALID-PERIOD            expires after, not good until
  207.  
  208. NETMASK                 application specific, used by network access
  209.                         server
  210.  
  211. FOR-USE-ON-SERVER       identifies specific server where proxy is valid
  212.  
  213. FOR-USE-FROM            local terminal, secure area, not sure how to
  214.                         implement
  215.  
  216.  
  217.  
  218. Other suggestions for negative attributes included a means to restrict
  219. the day of the week (for example, only Monday through Friday).  John
  220. Linn made the observation that given that time of day is a one time
  221. decision, once logged in, one can do whatever one wants.  This can be
  222. addressed if the application checks periodically, or notes the end time
  223. during the initial check and requires reauthorization at that time.  It
  224. can be made easier for applications to note the end of the authorization
  225. period if an expiration time were returned as an additional value by the
  226. authorization API. Some applications would use this expiration time,
  227. while others might not.  Some systems, AFS in particular, do note the
  228. expiration of credentials.  Finally, though login has a one time
  229. authorization check, other operations like file accesses might not.
  230.  
  231. It was also pointed out that the negative attributes did not include the
  232. ability to exclude enumerated rights.  This might be useful so that one
  233. can list a broad class of positive attributes, then enumerate exceptions
  234. as negative attributes.  Thus, the restriction can be added:
  235.  
  236.  
  237.  
  238. EXCLUDE                 excludes list of objects and rights for objects
  239.  
  240.  
  241.  
  242. The encoding of the objects and rights for EXCLUDE would be application
  243. specific.
  244.  
  245. It was suggested that there be a way to combine positive attributes from
  246. separate proxies into a single proxy.  Unfortunately, this is clearly
  247. not possible when the rights conferred are granted by different
  248. principals.  When granted by a the same principal, a proxy can be
  249. granted to enumerates multiple rights.  Combining them after multiple
  250. proxies have been issued, however, requires the reissuance of the
  251. combined proxy by the grantor.
  252.  
  253. There was some discussion of how the attributes are related to the
  254. authorization API. This discussion appears later in the minutes.  Due to
  255. the limited time for the meeting, the aggregate attributes were not
  256. discussed at the meeting, but are described in the message sent out to
  257. the mailing list.
  258.  
  259.  
  260.  
  261. Discussion of Information Maintained in Security Context
  262.  
  263. Piers McMahon noted that authorization decisions would be made on two
  264. types of application servers:
  265.  
  266.  
  267.   1. Servers which handle multiple requests within a single process
  268.      (e.g.  DCE RPC)
  269.  
  270.   2. Per-request daemons (e.g.:  TELNET)
  271.  
  272.  
  273. He concluded that the authorization security context in the
  274. authorization API must be able to refer to either a security context
  275. (for the former case) or a delegated credential (for the latter case).
  276.  
  277. In order to make the authorization API simpler, he also suggested that
  278. the GSS-API gss_accept_sec_context should always return a credential
  279. which could then be used consistently to represent the authorization
  280. context (in an analogous way to the DCE login context) even if
  281. delegation was not enabled for this context.
  282.  
  283. Ted Ts'o warned that this might inappropriately overload the GSS-API
  284. credential, as such non-delegated ``credentials'' could not be used to
  285. initiate contexts.  In response, Piers observed that this was also true
  286. for acceptor usage credentials, and suggested that the ``usage'' of the
  287. credential could be perhaps extended to include an ``accepted security
  288. context'' type in addition to initiator and acceptor.  After some
  289. further exchanges, it was agreed that further discussion on this topic
  290. should be carried on in the Common Authentication Technology Working
  291. Group (CAT).
  292.  
  293. John Linn commented that it might be appropriate to add a primitive
  294. inquire_security_context, to to query information from the security
  295. context, and perhaps a similar primitive to add information to the
  296. security context after it is initially established.
  297.  
  298.  
  299.  
  300. Discussion of the Authorization API
  301.  
  302. A one-page handout was distributed that outlined the arguments to the
  303. check_authorization function in the authorization API. Some of the goals
  304. in the design of the API were that it be simple to use for simple
  305. applications, but extensible and also easily usable by applications that
  306. have additional constraints and more advanced requirements for
  307. authorization.
  308.  
  309. The arguments to the check authorization function are described below:
  310.  
  311.  
  312.   answer = check_authorization(det_answer,/* Detailed answer (out)     */
  313.                                sc,        /* Security context          */
  314.                                target,    /* Object to be manipulated  */
  315.                                operation, /* Operation to be performed */
  316.                                parameters)/* Modifiers to request      */
  317.  
  318.  
  319. In the interest of providing a simple interface to most applications,
  320. the authorization API returns an answer of yes (0), no (2), or maybe
  321. (1).  Simple applications would treat this as yes, or not yes.  Further,
  322. the first argument to the API is an out parameter containing extra
  323. information that may be used by more advanced applications if the answer
  324. is a maybe.  This structure might also contain information about when
  325. the authorization so granted is due to expire.
  326.  
  327. The form of the security context, the second argument, was already
  328. discussed.  Ideally, information to be contained in the security context
  329. will include the following elements:
  330.  
  331.  
  332.    o verified authentication information - gssapi, uuids, groups
  333.    o unverified authentication information - to be checked when needed
  334.    o verified and unverified authorization information - proxies, etc
  335.    o delegated authorization credentials - to be used with other servers
  336.  
  337.  
  338. It should be possible to add to the security context subsequent to its
  339. initial creation.  This might allow lazy verification of authorization
  340. credentials (i.e.  do not verify them until they are needed for an
  341. operation), as well as requests for additional credentials from clients
  342. for certain operations.
  343.  
  344. The third argument identifies the target of the operation for which
  345. authorization is to be checked.  This would typically be a null
  346. terminated string with the name of the object.  The namespace from which
  347. the name is drawn can be local to an application.  Names for different
  348. applications can be made distinct by specifying a namespace identifier
  349. in the parameters argument described later.
  350.  
  351. There was a question raised about ACL management.  In particular, it was
  352. not clear where there was one manager for all the ACLs, or whether the
  353. application stores the ACL itself.  In fact, both models should be
  354. supported.  For the latter model, one might want to pass in the ACL as
  355. an argument, rather than the name of the object which would then be
  356. looked up by the ACL manager.  One way to support this is using an
  357. additional flag in the parameters argument that would indicated that the
  358. target argument is a pointer to the actual ACL.
  359.  
  360. There was a suggestion to use object identifiers to identify the target,
  361. but they are really not needed.  If you have them, you can use them as
  362. one of the name spaces, but you will not always have object identifiers
  363. as the names of objects in an application.  Only if the application uses
  364. OIDs, would this be the name of the targets.  A separate name space for
  365. OIDs is easily supported in the parameters.
  366.  
  367. The fourth argument is a pointer to a bit vector identifying the
  368. operations for which authorization is being checked, or the bit vector
  369. itself if less than 32 bits.  How the field is interpreted depends on
  370. flags in the parameter argument.  The parameter argument also tells how
  371. the bits are to be interpreted so that privilege bits from one
  372. application (meaning certain rights) are not confused with those from
  373. other applications that might mean something different.
  374.  
  375. The final argument is the parameters argument.  This argument describes
  376. the behavior of the API. It is expected that the argument will remain
  377. fixed for a particular application.  It defines how the other arguments
  378. are to be interpreted.  It identifies the name space of the object names
  379. and the form of the other arguments.  The same structure would be passed
  380. on all calls to check authorization.
  381.  
  382.  
  383. o Access Control List Entries
  384.  
  385. The access control lists used by the API are similar to those in common
  386. use today.  An access control list will be associated with each object
  387. to be protected.  Entries in the list will identify the principals or
  388. groups authorized access by that entry.  The principal and group
  389. specified will be matched against the principal and group identifiers in
  390. the security context by the authorization API. The rights specifically
  391. authorized by the entry will be specified in the entry as a tagged bit
  392. vector.  The tag indicates how the bits in the bit vector are to be
  393. interpreted.
  394.  
  395. The ACLs will be extended beyond those in common use today in that each
  396. entry will have an optional additional list of restrictions (the
  397. negative attributes described earlier in the minutes).  This list of
  398. restrictions places additional constraints on the access granted.  For
  399. example, it might allow access to be granted only between 9AM and 5PM,
  400. or the access might expire at a particular date and time.  Restrictions
  401. in an ACL entry might also encode which intermediaries are allowed to be
  402. involved when authenticating principals that use the entry.
  403.  
  404. Simple applications will never see these restrictions.  Instead, they
  405. will be evaluated by the authorization API itself, and the yes/no answer
  406. seen by the application will already reflect the result of that
  407. evaluation.
  408.  
  409.  
  410. o Use of the Authorization API by Advance Applications
  411.  
  412. More advanced applications will rely on additional information returned
  413. in the detailed answer argument.  Among the information returned will be
  414. an expiration time for access so granted if such a restriction in the
  415. ACL entry is present or if the expiration time of any authentication or
  416. authorization credentials is known.
  417.  
  418. Further, the authorization API can return an answer of maybe, indicating
  419. that restrictions (negative attributes) were present in authorization
  420. credentials or access control list entries that could not be interpreted
  421. directly by the authorization API. This is likely to be the case if
  422. application specific restrictions were used.
  423.  
  424. When such an answer is returned, the unresolved restrictions are
  425. returned to the application in the detailed answer structure.  This list
  426. will then be checked by the application using a fairly well defined
  427. procedure, plugging local checks into boilerplate restriction checking
  428. code that will be provided.
  429.  
  430. The network access server will provide a good example of how such checks
  431. are to be performed, and a description of the use of the authorization
  432. API by the network access server should be included in documents
  433. describing the mechanism.
  434.  
  435.  
  436. Discussion of Guidelines Document
  437.  
  438. There was a brief discussion about the development of a set of
  439. guidelines for application developers on how to support fine grained
  440. authorization for network accessible applications.  This document would
  441. be released initially as an Internet-Draft and then as an Information
  442. RFC.
  443.  
  444. The advice would be basic.  For example, advising the developer to first
  445. look through the application and identify the objects to be protected,
  446. and the granularity of the objects to be protected:  is it a file, is it
  447. something more general, or more specific.  The document would then work
  448. through how one would use the API which is being developed.
  449.  
  450. The document should also discuss design implications of particular
  451. choices, especially with respect to how long authorization continues
  452. (i.e.  whether you check the returned expiration time), and whether
  453. authorizations checks are per session, or per operation, as well as
  454. issues related to the granularity of the objects that are protected.
  455.  
  456. The document would give an example of the use of the authorization API
  457. for a simple application that just uses the yes/no answer, and for a
  458. more advanced application such as the network access server that makes
  459. use of application specific restrictions.
  460.  
  461.  
  462. How to Proceed
  463.  
  464. The meeting concluded with a brief discussion of how to proceed.  Work
  465. items include refining the authorization API and developing real code,
  466. coming up with a revised definition of the security context, revising
  467. the list of authorization attributes, and writing the guidelines
  468. document.  Piers will continue his work on the security context in part
  469. here, and in part in the CAT Working Group.  Cliff will work with Piers
  470. on the security context, and will work on the other work items.  John
  471. Vollbrecht will work on the section of the guidelines document
  472. describing how the network access server uses the authorization API.
  473.  
  474.  
  475. Attendees
  476.  
  477. Andy Adams               ala@merit.edu
  478. Garrett Alexander        gda@tycho.ncsc.mil
  479. Nick Alfano              alfano@mpr.ca
  480. Alireza Bahreman         bahreman@bellcore.com
  481. Steven Bellovin          smb@research.att.com
  482. Larry Blunk              ljb@merit.edu
  483. Antonio Fernandez        afa@thumper.bellcore.com
  484. Vincent Gebes            vgebes@sys.attjens.co.jp
  485. Jisoo Geiter             geiter@mitre.org
  486. Mei-Jean Goh             goh@mpr.ca
  487. Chris Gorsuch            chrisg@lobby.ti.com
  488. Marco Hernandez          marco@cren.net
  489. Charlie Kaufman          kaufman@zk3.dec.com
  490. Stephen Kent             kent@bbn.com
  491. David Kristol            dmk@allegra.att.com
  492. Gordon Lee               gordon@ftp.com
  493. John Linn                linn@security.ov.com
  494. Kanchei Loa              loa@sps.mot.com
  495. Steven Lunt              lunt@bellcore.com
  496. Piers McMahon            p.v.mcmahon@rea0803.wins.icl.co.uk
  497. Michael Michnikov        mbmg@mitre.org
  498. Bob Morgan               morgan@networking.stanford.edu
  499. Robert Moskowitz         3858921@mcimail.com
  500. Clifford Neuman          bcn@isi.edu
  501. Allan Rubens             acr@merit.edu
  502. Richard Schmalgemeier    rgs@merit.edu
  503. Wolfgang Schneider       schneiw@darmstadt.gmd.de
  504. Vincent Shekher          vin@sps.mot.com
  505. Sam Sjogren              sjogren@tgv.com
  506. Dave Solo                solo@bbn.com
  507. Don Stephenson           don.stephenson@sun.com
  508. Barbara Sterling         bjs@mcdata.com
  509. Vladimir Sukonnik        sukonnik@process.com
  510. Dean Throop              throop@dg-rtp.dg.com
  511. Jerry Toporek            jt@mentat.com
  512. Theodore Ts'o            tytso@mit.edu
  513. John Vollbrecht          jrv@merit.edu
  514. Peter Yee                yee@atlas.arc.nasa.gov
  515.  
  516.