Security¶
Icinga DB Web allows users to send commands to Icinga. Users may be restricted to a specific set of commands, by use of permissions.
The same applies to routes, objects and variables. To these, users can be restricted by use of restrictions.
Permissions¶
Restricted Command Permissions:
If a role limits users to a specific set of results, the command permissions or refusals of the very same role only apply to these results.
Name | Allow… |
---|---|
icingadb/command/* | all commands |
icingadb/command/schedule-check | to schedule host and service checks |
icingadb/command/schedule-check/active-only | to schedule host and service checks (Only on objects with active checks enabled) |
icingadb/command/acknowledge-problem | to acknowledge host and service problems |
icingadb/command/remove-acknowledgement | to remove problem acknowledgements |
icingadb/command/comment/* | to add and delete host and service comments |
icingadb/command/comment/add | to add host and service comments |
icingadb/command/comment/delete | to delete host and service comments |
icingadb/command/downtime/* | to schedule and delete host and service downtimes |
icingadb/command/downtime/schedule | to schedule host and service downtimes |
icingadb/command/downtime/delete | to delete host and service downtimes |
icingadb/command/process-check-result | to process host and service check results |
icingadb/command/feature/instance | to toggle instance-wide features |
icingadb/command/feature/object/* | to toggle all features on host and service objects |
icingadb/command/feature/object/active-checks | to toggle active checks on host and service objects |
icingadb/command/feature/object/passive-checks | to toggle passive checks on host and service objects |
icingadb/command/feature/object/notifications | to toggle notifications on host and service objects |
icingadb/command/feature/object/event-handler | to toggle event handlers on host and service objects |
icingadb/command/feature/object/flap-detection | to toggle flap detection on host and service objects |
icingadb/command/send-custom-notification | to send custom notifications for hosts and services |
icingadb/object/show-source | to view an object’s source data. (May contain sensitive data!) |
Restrictions¶
Filters¶
Filters limit users to a specific set of results.
Note:
Filters from multiple roles will widen available access.
Name | Description |
---|---|
icingadb/filter/objects | Restrict access to the Icinga objects that match the filter |
icingadb/filter/hosts | Restrict access to the Icinga hosts and services that match the filter |
icingadb/filter/services | Restrict access to the Icinga services that match the filter |
icingadb/filter/objects
will only allow users to access matching objects. This applies to all objects,
not just hosts or services. It should be one or more filter expressions.
icingadb/filter/hosts
will only allow users to access matching hosts and services. Other objects remain
unrestricted. It should be one or more filter expressions.
icingadb/filter/services
will only allow users to access matching services. Other objects remain unrestricted.
It should be one or more filter expressions.
Denylists¶
Denylists prevent users from accessing information and in some cases will block them entirely from it.
Note:
Denylists from multiple roles will further limit access.
Name | Description |
---|---|
icingadb/denylist/routes | Prevent access to routes that are part of the list |
icingadb/denylist/variables | Hide custom variables of Icinga objects that are part of the list |
icingadb/denylist/routes
will block users from accessing defined routes and from related information elsewhere.
For example, if hostgroups
are part of the list a user won’t have access to the hostgroup overview nor to a host’s
groups shown in its detail area. This should be a comma separated list. Possible values are: hostgroups, servicegroups,
users, usergroups
icingadb/denylist/variables
will block users from accessing certain custom variables. A user affected by this won’t
see that those variables even exist. This should be a comma separated list of variable paths. It is
possible to use match patterns.
Protections¶
Protections prevent users from accessing actual data. They will know that there is something, but not what exactly.
Note:
Denylists from multiple roles will further limit access.
Name | Description |
---|---|
icingadb/protect/variables | Obfuscate custom variable values of Icinga objects that are part of the list |
icingadb/protect/variables
will replace certain custom variable values with ***
. A user affected by this will still
be able to see the variable names though. This should be a comma separated list of variable paths.
It is possible to use match patterns.
Formats¶
Filter Expressions¶
These consist of one or more filter expressions.
Allowed columns are:
- host.name
- service.name
- hostgroup.name
- servicegroup.name
- host.user.name
- service.user.name
- host.usergroup.name
- service.usergroup.name
- host.vars.\<variable path>
- service.vars.\<variable path>
Match Patterns¶
Match patterns allow a very simple form of wildcard matching. Use *
in any place to match zero or any characters.
Variable Paths¶
Icinga DB Web allows to express any custom variable depth in variable paths. So they may be not just names.
Consider the following variables:
vars.os = "Linux"
vars.team = {
name = "Support",
on-site = ["mo", "tue", "wed", "thu", "fr"]
}
To reference vars.os
, use os
. To reference vars.team.name
, use team.name
. To reference vars.team.on-site
,
use team.on-site[0]
for the first list position and team.on-site[4]
for the last one.
Combined with a match pattern it is also possible to perform a contains check: team.on-site[*]