Gary Winiger wrote: >>> issues in summary. An updated spec will follow the convergence of the case. >> This case was approved at today's PSARC meeting. An updated >> spec will be delivered to the case tomorrow when I get the >> wording straight for making mlslabel undelegatable. > > Below and in the case (spec.txt) please find the updated spec. > Tim and zfs team, if the wording around delegation is inaccurate, > please let me and the project team know and suggest some proper > wording so it is clear to all. spec.old and zfs.1m.old are the > previous verions (also under SCCS). > It looks fine.
-tim > Thanks, > Gary.. > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > I'm sponsoring this Fast Track for Ric Aleshire and the Trusted Extensions > development team. > > Trusted Extensions was introduced in PSARC/2002/762 Layered Trusted > Solaris with filesystem interfaces defined in the subcase > PSARC/2005/723 Solaris Trusted Extensions Filesystem Labeling > > One of the goals of Trusted Extensions was to make no modifications to > the on disk filesystem structures. This was different than the releases > of Trusted Solaris (1.0-2.5.1, 7, 8). In those systems on disk filesystem > changes were made in order to support labels. That made those filesystems > incompatible with the unlabeled forms. With the advent of > PSARC/2002/240 ZFS (Zettabyte Filesystem) some amount of labeling can be > introduced in a fully compatible way. > > This case requests a Committed Interface Taxonomy, and a Patch Release > Binding with a dependency on PSARC/2002/240. > > A full diffmarked zfs(1m) man page is in the case directory. > > The timer is set for 17 June, 2009. > > Gary.. > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Background: > ========== > The Trusted Extensions feature of Solaris provides sensitivity > labels, and mediates data access accordingly. These labels are > associated with zones; each zone on a system is configured to > have a unique label. Labels are not stored with the filesystem > but are inferred based on the containing zone. Mount-time > policy controls access to filesystems and the objects they > contain. > > Problem: > ======= > Based on customer requests for Trusted Extensions and possible > future Common Criteria Evaluation criteria, there are > requirements to be able to store labels with corresponding > data. In Trusted Extensions, a ZFS dataset currently has only > an implied label, based on where it is mounted (i.e., in which > zone). To prevent administrators or users from accidentally > mounting datasets in ways that would mislabel information, that > information should be recorded as a persistent ZFS attribute. > Labeled ZFS filesystems will also improve the security of > removable devices (such as USB media) in Trusted environments. > > Proposal: > ======== > ZFS filesystem mechanisms make it possible to support labels as > attributes of the data. To protect these labels from user > manipulation, they will be system attributes as defined by ZFS, > and will be supported by kernel policy to maintain the label > and control access to the corresponding data. > > ZFS kernel mount logic will access the label attribute and > perform a check for label dominance, similar to the policy > found in lofs and nfs mount code. Labeling of previously > unlabeled ZFS file systems will generally be automatic and > not require administrative action. > > Details: > ======= > A new system property called "mlslabel" is defined. Its value > on disk is a string which represents the internally encoded label > of the dataset. (E.g., "0x0002-08-08", which corresponds to the > "public" label.) mlslabel is an inheritable property; when not > present, it defaults to the string "none" to indicate no label > is present. The mlslabel property follows the same rules as the > other inheritable properties. > > When Trusted Extensions is enabled, mount-time checks will > verify that the dataset label matches the label of the zone > that the dataset is mounted into. If the labels do not match, > the mount syscall fails with an EACCES error. > > The mlslabel property may be set from the command line using the > zfs command, for example: > zfs set mlslabel=public export/something > > Setting the mlslabel property can only be done when Trusted > Extensions is enabled. The file_upgrade_sl privilege is required > when setting an initial label, or changing a non-default label > to a higher level label. The file_downgrade_sl privilege is > required when removing a label (setting it to "none") or when > changing a non-default label to a lower level label. > > Unlike other properties, the mlslabel property is a Mandatory > Policy attribute used to support label base Mandatory Access > Control; therefore rights to modify it may not be delegated. > > In addition to manually setting dataset labels, the system will > appropriately initialize the label attribute automatically. At > mount time, if the dataset has no mlslabel property or only the > default one ("none"), the mlslabel property will be set during > the mount. > > Changing the label on a dataset (i.e. setting the mlslabel > property, when a non-default mlslabel value already exists), is > only allowed when the dataset is not mounted. Setting an > initial mlslabel is permitted regardless of whether the dataset > is mounted or not. > > In a labeled zone the only value which can be set for the > mlslabel property of a dataset is the one matching the zone's > label. (Which is set automatically at first mount time.) > > When mounting into the global zone proper (the zoned property is > "off"), the mount will fail if the mlslabel property value is > other than "none" or "admin_low/admin_high". Additionally > admin_low mounts must be read only. No automatic property > setting is done for global zone mounts. > > The intent of this case is to prevent inadvertent access to labeled > data. The default mlslabel value (including when not present), none, > implies the data has not been labeled, thus default access is > allowed. admin_low and admin_high are "administrative" labels > associated with system, rather than user, data. They are only > set explicitly by Trusted Extensions administrators to indicate > how they wish system data to be protected. This allows the > Trusted Extensions administrator to ensure that such labeled > datasets will not be unintentionally mounted in ways that could > cause inadvertent data access or modification. > > When Trusted Extensions is NOT enabled, only datasets with > an mlslabel value of "none" can be mounted. > > The kernel does not presently have interfaces to translate > internally encoded string labels to binary label (m_label) > structures for manipulation or from binary labels to internally > encoded string labels. This case will add project private > interfaces to do so. The actual code will be shared with the > existing user land code in str_to_label(3tsol) and > label_to_str(3tsol). > > zfs(1M): > > The following native properties can be used to change the > behavior of a ZFS dataset. > > [...] > > + mlslabel=<label | none> > + This property is used with Trusted Extensions. It is the > + sensitivity label at which the dataset must be mounted (it > + must match the labeled-zone where the dataset is mounted) > + or the mount will fail. > + > + When the mlslabel property is not set it defaults to the value > + "none". Setting the mlslabel property to "none" is equivalent > + to removing the property. > + > + Unlike other properties, the mlslabel property can only be > + modified when Trusted Extensions is enabled and only with > + appropriate privilege. Rights to modify it may not be delegated. > + When changing a label to a higher label or setting the initial > + dataset label, the {PRIV_FILE_UPGRADE_SL} privilege is required. > + When changing a label to a lower label or the default ("none"), > + the {PRIV_FILE_DOWNGRADE_SL} privilege is required. Changing > + dataset from labels other than the default can only be done when > + the dataset is not mounted. When a dataset with the default > + label is mounted into a labeled-zone, the mount automatically > + sets the mlslabel property to the label of that zone. > + > + When Trusted Extensions is NOT enabled, only datasets with > + the default label ("none") can be mounted. > > [...]