Les zones représentent une fonction de gestion des ressources et des applications du système d'exploitation Solaris 10. Cette fonction permet au système d'exploitation d'être représenté pour les applications sous forme d'environnements virtuels (zones), isolés et sécurisés. Ces zones offrent les avantages de l'indépendance d'un système d'exploitation avec un certain niveau de gestion centralisée des ressources. Ainsi, les applications peuvent être isolées les unes des autres en étant installées et exécutées sur différentes zones, alors que dans le même temps, certaines ressources du système d'exploitation peuvent être réparties et gérées de manière centralisée.
Pour un système d'exploitation prenant en charge plusieurs zones, les ressources de ce système peuvent contenir les éléments suivants : gestion de processus, mémoire, configuration réseau, systèmes de fichiers, registres de package, comptes utilisateur, bibliothèques partagées et, dans certains cas, applications installées.
Un environnement multizone consiste en une zone globale (système d'exploitation par défaut) et une ou plusieurs zones non globales. La zone globale contient les ressources pouvant être réparties dans les zones non globales par un administrateur (de zone) global. Les zones non globales offrent les fonctions suivantes :
Sécurité. En exécutant les services distribués dans des zones non globales, vous limitez les éventuels dommages découlant d'une violation de sécurité. Un intrus qui exploite avec succès un défaut de sécurité dans un logiciel sur une zone est confiné dans cette zone. Les privilèges disponibles dans une zone non globale représentent un sous-ensemble de ceux disponibles dans une zone globale.
Isolation de l'exécution. Les zones non globales permettent de déployer plusieurs applications sur le même ordinateur même si ces applications requièrent différents niveaux de sécurité, un accès exclusif aux ressources globales ou une configuration individualisée. Par exemple, plusieurs applications exécutées dans différentes zones peuvent être liées sur le même port réseau en utilisant les adresses IP distinctes associées à chaque zone non globale. Les applications ne peuvent pas surveiller ou intercepter entre elles le trafic réseau, les données du système de fichiers ou l'activité des processus.
Isolation administrative. L'environnement du système d'exploitation virtuel permet une administration séparée de chaque zone non globale. Les actions effectuées par un administrateur de zone (en opposition à l'administrateur global) dans une zone non globale, telles que la création de comptes utilisateur, l'installation et la configuration de logiciels ou la gestion de processus, n'affectent pas les autres zones.
Il existe deux types de zones non globales : les zones whole root et les zones sparse root :
Zones whole root. Elles contiennent une copie lecture/écriture du système de fichiers existant sur la zone globale. Lorsqu'une zone whole root est créée, tous les packages installés sur la zone globale deviennent disponibles pour cette zone : une base de données de packages est créée et tous les fichiers sont copiés sur la zone whole root pour l'utilisation spéciale et indépendante de la zone.
Zones sparse root. Elles contiennent une copie lecture/écriture d'une partie seulement du système de fichiers existant sur la zone globale (d'où le nom « sparse root », racine fragmentée), alors que d'autres systèmes de fichiers sont installés en lecture seule à partir de la zone globale sous forme de systèmes de fichiers virtuels loopback. Lorsqu'une zone sparse root est créée, l'administrateur global sélectionne les systèmes de fichiers à partager avec la zone sparse root (par défaut, les répertoires /usr, /lib, /sbin et /platform sont partagés sous forme de systèmes de fichiers en lecture seule). Tous les packages installés sur la zone globale sont accessibles à la zone sparse root : une base de données de packages est créée et tous les fichiers dans le système de fichiers installé sont partagés avec la zone.
Le choix entre les zones non globales whole root ou sparse root repose sur un compromis entre l'efficacité des ressources et le contrôle administratif. Les zones whole root permettent de maximiser le contrôle administratif (indépendance et isolation) aux dépens de la mémoire et d'autres ressources, alors que les zones sparse root permettent d'optimiser le partage efficace des exécutables et des bibliothèques partagées (tout en utilisant une empreinte disque beaucoup plus petite) aux dépens de l'indépendance administrative. Il n'existe actuellement aucun moyen de départager les zones sparse root et whole root en termes de performances, il s'agit essentiellement de spécificités logicielles.
Lorsque les packages installés sur une zone globale (par défaut) sont disponibles pour toutes les zones non globales, on parle de propagation des packages. (Pour que la propagation puisse se réaliser, les zones non globales nouvellement créées doivent être entièrement initialisées, c'est-à-dire en état d'exécution.) La propagation fournit une visibilité locale (non globale) et un accès aux packages installés dans la zone globale. La propagation permet d'effectuer une gestion du cycle de vie des packages d'applications (installation, mise à niveau, désinstallation) de manière centralisée par un administrateur global, alors que la configuration des applications et la gestion de l'exécution sont réalisées par les administrateurs de zones (non globales).
Pour les zones whole root, la propagation a lieu via la copie automatique des fichiers installés de la zone globale vers les zones whole root et via la synchronisation automatique des informations de registre. Pour les zones sparse root, la propagation s'effectue à l'aide des systèmes de fichiers en lecture seule partagés entre les zones globales et sparse root et via la synchronisation automatique des informations de registre.
La propagation des packages dans les zones non globales est contrôlée au niveau des packages à l'aide des attributs de packages internes. Pour certaines valeurs de ces attributs (les valeurs par défaut, du moins), la propagation peut être désactivée au moment de l'installation à l'aide de l'option pkgadd —G, qui ignore les valeurs d'attribut. Une fois installé, le comportement de propagation d'un package ne peut pas être modifié, sauf en le désinstallant et réinstallant. Les patchs, par exemple, ne peuvent pas modifier le comportement de propagation d'un package. En effet, les patchs doivent être installés selon le comportement de propagation du package qu'ils mettent à niveau.