// ===================================================================
// Title:       User-Security Accounts 2.7
// Filename:    User27_Account.mof
// Version:     2.7.0
// Status:      Final
// Date:        03/31/2003
// ===================================================================
// Copyright 2000-2003 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.  
// DMTF is a not-for-profit association of industry members dedicated 
// to promoting enterprise and systems management and interoperability. 
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members, 
// provided that correct attribution is given. 
// As DMTF specifications may be revised from time to time, 
// the particular version and release date should always be noted.
//
// Implementation of certain elements of this standard or proposed 
// standard may be subject to third party patent rights, including 
// provisional patent rights (herein "patent rights"). DMTF makes 
// no representations to users of the standard as to the existence 
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or 
// claimants, nor for any incomplete or inaccurate identification or 
// disclosure of such rights, owners or claimants. DMTF shall have no 
// liability to any party, in any manner or circumstance, under any 
// legal theory whatsoever, for failure to recognize, disclose, or 
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product, 
// protocols or testing procedures. DMTF shall have no liability to 
// any party implementing such standard, whether such implementation 
// is foreseeable or not, nor to any patent owner or claimant, and shall 
// have no liability or responsibility for costs or losses incurred if 
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the 
// standard from any and all claims of infringement by a patent owner 
// for such implementations.
//
// For information about patents held by third-parties which have 
// notified the DMTF that, in their opinion, such patent may relate to 
// or impact implementations of DMTF standards, visit 
// http://www.dmtf.org/about/policies/disclosures.php.
// ===================================================================
// Description: The User Model extends the management concepts that
//              are related to users and security.
//              This file defines the concepts and classes related to  
//              Accounts.
//
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ===================================================================
// Change Log for v2.7 - None
// ===================================================================

#pragma Locale ("en_US")


// ================================================================== 
// Account
// ==================================================================
[Version ("2.6.0"), Description (
   "CIM_Account is the information held by a SecurityService "
   "to track identity and privileges managed by that service.  "
   "Common examples of an Account are the entries in a UNIX "
   "/etc/passwd file.  Several kinds of security services use "
   "various information from those entries - the /bin/login "
   "program uses the account name ('root') and hashed password "
   "to authenticate users, and the file service, for instance, "
   "uses the UserID field ('0') and GroupID field ('0') to "
   "record ownership and determine access control privileges "
   "on files in the file system. This class is defined so as "
   "to incorporate commonly-used LDAP attributes to permit "
   "implementations to easily derive this information from "
   "LDAP-accessible directories.") ]
class CIM_Account : CIM_LogicalElement {

   [Propagated ("CIM_System.CreationClassName"), Key, 
      MaxLen (256), Description ("The scoping System's CCN.") ]
   string SystemCreationClassName;

   [Propagated ("CIM_System.Name"), Key, 
      MaxLen (256),Description ("The scoping System's Name.") ]
   string SystemName;

   [Key, MaxLen (256), Description (  
      "CreationClassName indicates the name of the class or the "
      "subclass used in the creation of an instance. When used "
      "with the other key properties of this class, this property "
      "allows all instances of this class and its subclasses to "
      "be uniquely identified.") ]
   string CreationClassName;

   [Key, Override("Name"), MaxLen (1024), Description (  
      "The Name property defines the label by which the object is "
      "known.  The value of this property may be set to be the same "
      "as that of the UserID property or, in the case of an "
      "LDAP-derived instance, the Name property value may be set to "
      "the distinguishedName of the LDAP-accessed object instance.") ]
   string Name;

   [MaxLen (256), Description (
      "UserID is the value used by the SecurityService to "
      "represent identity.  For an authentication service, the "
      "UserID may be the name of the user, or for an authorization "
      "service the value which serves as a handle to a mapping of "
      "the identity.") ] 
   string UserID;

   [Description (  
      "In the case of an LDAP-derived instance, the ObjectClass "
      "property value(s) may be set to the objectClass attribute "
      "values.") ]
   string ObjectClass[];

   [MaxLen (1024), Description (  
      "The Descriptions property values may contain human-readable "
      "descriptions of the object.  In the case of an LDAP-derived "  
      "instance, the description attribute may have multiple values "
      "that, therefore, cannot be placed in the inherited "
      "Description property.") ]
   string Descriptions[];

   [Description (
      "Based on RFC1274, the host name of the system(s) for which "
      "the account applies.  The host name may be a fully-qualified "
      "DNS name or it may be an unqualified host name.") ] 
   string Host[];

   [Description (  
      "This property contains the name of a locality, such as a "
      "city, county or other geographic region.") ]
   string LocalityName[];

   [Required, Description (  
      "The name of the organization related to the account.") ]
   string OrganizationName[];

   [Description (  
      "The name of an organizational unit related to the account.") ]
   string OU[];

   [Description (  
      "In the case of an LDAP-derived instance, the See Also "
      "property specifies distinguishedName of other Directory "
      "objects which may be other aspects (in some sense) of the "
      "same real world object.") ]
   string SeeAlso[];

   [Octetstring, Description (
      "Based on inetOrgPerson and for directory compatibility, the "
      "User Certificate property may be used to specify a public key "
      "certificate for the person.") ]
   string UserCertificate[];

   [Octetstring, Description (  
      "In the case of an LDAP-derived instance, the UserPassword "
      "property may contain an encrypted password used to access "
      "the person's resources in a directory.") ]
   string UserPassword[];
};


// ===================================================================
// AccountOnSystem
// ===================================================================
[Association, Aggregation, Version ("2.6.0"), Description (
   "A system (e.g., ApplicationSystem, ComputerSystem, AdminDomain) "
   "aggregates Accounts and scopes the uniqueness of the Account "
   "names (i.e., userids).") ]
class CIM_AccountOnSystem : CIM_SystemComponent {

   [Override ("GroupComponent"), Min (1), Max (1), Aggregate, 
      Description (
      "The aggregating system also provides name scoping "
      "for the Account.") ]
   CIM_System REF GroupComponent;

   [Override ("PartComponent"), Weak,
      Description ("The subordinate Account.") ]
   CIM_Account REF PartComponent;
};


// ===================================================================
// UsersAccount
// ===================================================================
[Association, Version ("2.6.0"), Description (
   "This relationship associates UsersAccess with the Accounts "
   "with which they're able to interact.") ]
class CIM_UsersAccount : CIM_Dependency {

   [Override ("Antecedent"), 
      Description ("The user's Account.") ]
   CIM_Account REF Antecedent;

   [Override ("Dependent"), Description (
      "The User as identified by their UsersAccess instance.") ]
   CIM_UsersAccess REF Dependent;
};


// ===================================================================
// AccountMapsToAccount
// ===================================================================
[Association, Version ("2.6.0"), Description (
   "This relationship may be used to associate an Account used by an "
   "AuthenticationService to an Account used for Authorization.  For "
   "instance, this mapping occurs naturally in the UNIX /etc/passwd "
   "file, where the AuthenticationSerice Account ('root') is mapped "
   "to the AuthorizationService Account ('0').  The two are separate "
   "accounts, as evidenced by the ability to have another "
   "AuthenticationService Account which ALSO maps to the "
   "AuthorizationService Account ('0') without ambiguity.  This "
   "association may be used for other account mappings as well such "
   "as for coordinating single signon for multiple accounts for the "
   "same user.") ]
class CIM_AccountMapsToAccount : CIM_Dependency {

   [Override ("Antecedent"), 
      Description ("An Account.") ]
   CIM_Account REF Antecedent;

   [Override ("Dependent"),
      Description ("A related Account.") ]
   CIM_Account REF Dependent;
};


// ===================================================================
// SecurityServiceUsesAccount
// ===================================================================
[Association, Version ("2.6.0"), Description (
   "This relationship associates SecurityService instances to "
   "the Accounts they use in the course of their work.") ]
class CIM_SecurityServiceUsesAccount : CIM_Dependency {

   [Override ("Antecedent") ]
   CIM_Account REF Antecedent;

   [Override ("Dependent") ]
   CIM_SecurityService REF Dependent;
};


// ================================================================== 
// AccountManagementService
// ==================================================================
[Version ("2.6.0"), Description (
   "CIM_AccountManagementService creates, manages, and if necessary "
   "destroys Accounts on behalf of other SecuritySerices.") ]
class CIM_AccountManagementService : CIM_SecurityService {
};


// ===================================================================
// ManagesAccount
// ===================================================================
[Association, Version ("2.6.0"), Description (
   "This relationship associates the AccountManagement security "
   "service to the Accounts for which it is responsible.") ]
class CIM_ManagesAccount : CIM_Dependency {

   [Override ("Antecedent") ]
   CIM_AccountManagementService REF Antecedent;

   [Override ("Dependent") ]
   CIM_Account REF Dependent;
};


// ===================================================================
// ManagesAccountOnSystem
// ===================================================================
[Association, Version ("2.6.0"), Description (
   "The CIM_ManagesAccountOnSystem provides the association between a "
   "System and the AccountManagementService that manages accounts for "
   "that system.") ]
class CIM_ManagesAccountOnSystem : CIM_SecurityServiceForSystem {

   [Override ("Antecedent"), Description ( 
      "An AccountManagementService that manages accounts for the "
      "system.") ]
   CIM_AccountManagementService REF Antecedent;

   [Override ("Dependent"), Description (
      "The system that is dependent on the AccountManagementService.") ]
   CIM_System REF Dependent;
};


// ===================================================================
// end of file
// ===================================================================
