Depuis la version 1.33 de Bacula, il existe trois types de consoles différents avec lesquels l'administrateur ou l'utilisateur peut interagir avec le Director. Ces trois types de consoles comportent trois niveaux de sécurité.
Ce second type de console ne possède, par défaut, aucun privilège. Pour lui en accorder, vous devez les spécifier explicitement dans la ressource Console du Director.
Ainsi, vous pouvez avoir plusieurs consoles avec des noms et mots de passe distincts et avec, pour chacune, des privilèges différents. Ces consoles ne peuvent, par défaut, absolument rien faire. C'est vous qui leur accordez des privilèges, ou plutôt l'accès à des commandes et ressources en spécifiant des listes de contrôle d'accès dans la ressource Console du Director. L'administrateur peut ainsi contrôler finement les actions permises à des consoles (ou utilisateurs) particuliers.
La ressource Console est optionnelle. Cependant, si elle est spécifiée, vous pouvez utiliser les ACLs (listes de contrôle d'accès) dans le fichier de configuration du Director pour restreindre une console particulière ou un utilisateur pour qu'ils ne voient que les informations relatives à ses jobs ou à sa machine cliente.
Vous pouvez spécifier autant de ressources Console que vous voulez dans le fichier de configuration de la console. Cependant, si vous avez plusieurs ressources Director (c'est à dire si vous vous connectez à plusieurs directors distincts), vous pouvez associer l'une de ces ressources Console à une ressource Director particulière. Ainsi, lorsque vous choisirez un Director particulier, la configuration de console appropriée sera utilisée. Consultez le paragraphe ci-dessous sur la directive "Director" de la ressource Console pour plus d'informations sur le sujet.
L'exemple ci-dessous nous a été fournit par Phil Stracchino. Si nous définissons ce qui suit dans le fichier bconsole.conf (ou bwx-console.conf) d'un utilisateur :
Director {
Name = MyDirector
DIRport = 9101
Address = myserver
Password = "XXXXXXXXXXX" # no, really. this is not obfuscation.
}
Console {
Name = restricted-user
Password = "UntrustedUser"
}
Où le mot de passe dans la section Director est délibérément incorrect, et la console a reçu le nom restricted-client. Si d'autre part, dans le fichier de configuration du Director (inaccessible diectement à l'utilisateur), nous définissons :
Console {
Name = restricted-user
Password = "UntrustedUser"
JobACL = "Restricted Client Save"
ClientACL = restricted-client
StorageACL = main-storage
ScheduleACL = *all*
PoolACL = *all*
FileSetACL = "Restricted Client's FileSet"
CatalogACL = DefaultCatalog
CommandACL = run
}
Alors, l'utilisateur de connectant au Director depuis cette console sera connecté en tant que restricted-client, et il ne sera en mesure que de voir ou accéder au job nommé Restricted Client Save, avec le stockage main-storage, n'importe quel planification ou pool, un FileSet nommé Restricted Client's File, un catalogue nommé DefaultCatalog, et la seule commande qu'il pourra utiliser dans la console sera la commande run. En d'autres termes, cet utilisateur est plutôt limité dans ce qu'il peut voir ou faire avec Bacula.
Voici un exemple d'un fichier de configuration de bconsole qui permet à plusieurs Directors avec différentes Consoles selon le Director :
Director {
Name = MyDirector
DIRport = 9101
Address = myserver
Password = "XXXXXXXXXXX" # no, really. this is not obfuscation.
}
Director {
Name = SecondDirector
DIRport = 9101
Address = secondserver
Password = "XXXXXXXXXXX" # no, really. this is not obfuscation.
}
Console {
Name = restricted-user
Password = "UntrustedUser"
Director = MyDirector
}
Console {
Name = restricted-user
Password = "A different UntrustedUser"
Director = SecondDirector
}
Le second Director, référencé en tant que "secondserver" pourrait ressembler à ceci :
Console {
Name = restricted-user
Password = "A different UntrustedUser"
JobACL = "Restricted Client Save"
ClientACL = restricted-client
StorageACL = second-storage
ScheduleACL = *all*
PoolACL = *all*
FileSetACL = "Restricted Client's FileSet"
CatalogACL = RestrictedCatalog
CommandACL = run, restore
WhereACL = "/"
}