Описание базы данных
Ниже приводится схема и описание таблиц базы данных, созданных для стандартного использования HBF-Server.
HBF-Server поддерживает PostgreSQL версии 14.8
Поскольку HBF-Server взаимодействует с этой базой данных самостоятельно, конечному пользователю не нужно беспокоиться о ее структуре и о том как хранятся данные.
Схема базы данных
На диаграмме ниже представлен визуальный обзор базы данных HBF-Server и связей между таблицами. В приведенном ниже Обзоре Таблиц, содержатся дополнительные сведения о таблицах и столбцах базы данных.
Обзор таблиц (сущности)
В этом разделе представлен обзор всех таблиц, созданных для стандартного использования HBF-Server. С последующим детальным описанием, что находится в каждой таблице.
| Название таблицы | Описание | Соответствующие области взаимодействия интерфейса (API) | 
|---|---|---|
| tbl_network | таблица tbl_network хранит информацию о IP Subnets c уникальным названием, CIDR и ссылкой на SG к сети которой она принадлежит | |
| tbl_sg | таблица tbl_sg хранит информацию о Security Groups (SG) с уникальным названием, правилом применяемым для входящих или исходящих пакетов, также возможностью включить логирование | |
| tbl_ie_sg_sg_rule | таблица tbl_ie_sg_sg_rule хранит информ ацию SG-SG правил для входящего и исходящего траффика с сетевым транспортным протоколами и диапазоном портов | |
| tbl_ie_sg_sg_icmp_rule | таблица tbl_ie_sg_sg_icmp_rule хранит информацию SG-SG правил для входящего и исходящего траффика через сетевой протокол ICMP | |
| tbl_cidr_sg_rule | таблица tbl_cidr_sg_rule хранит информацию CIDR-SG правил для входящего и исходящего траффика с сетевым транспортным протоколом, бесклассовой междоменной маршрутизацией (CIDR) и диапазоном портов | |
| tbl_cidr_sg_icmp_rule | таблица tbl_cidr_sg_icmp_rule хранит информ ацию CIDR-SG правил для входящего и исходящего траффика с сетевым протоколом ICMP, бесклассовой междоменной маршрутизацией (CIDR) | |
| tbl_fqdn_rule | таблица tbl_fqdn_rule хранит информацию SG-to-FQDN правил с сетевым транспортным протоколом и диапазоном портов | |
| tbl_sg_icmp_rule | таблица tbl_sg_icmp_rule хранит информацию SG:ICMP правил | |
| tbl_sg_rule | таблица tbl_sg_rules хранит информацию о правилах виртуального файрволла который можно настраивать для того чтобы контролировать входящий и выходящий трафик | |
| tbl_sg_sg_icmp_rule | таблица tbl_sg_sg_icmp_rule хранит информацию SG-SG:ICMP правил | |
| tbl_sync_status | в таблице tbl_sync_status хранится информация об изменениях внесенных пользователем (дата последнего успешного изменения и кол-во изменённых строк) | |
| tbl_host2sg | в таблице tbl_host2sg хранится информация о связи хоста (Host) с группой безопасности (SG) | |
| tbl_host_ipset | в таблице tbl_host_ipset хранится информация о IP адресах, которыми оперирует Host | |
| tbl_host | в таблице tbl_host хранится информация о хостах (Host) с уникальным названием, UUID и ссылкой на SG к которой она принадлежит | 
Подробное описание таблиц
Ниже приведены конкретные поля в каждой из таблиц, созданных для стандартного использования HBF-Server
tbl_network
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| sg | int(8) | YES | FK | внешний ключ к таблице tbl_sg.id | |
| name | cname | ALT | 
 | ||
| network | cidr | 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Simple Key | cname | 
tbl_sg
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| name | cname | ALT | 
 | ||
| logs | bool | false | |||
| trace | bool | false | |||
| default_action | chain_default_action | ‘DROP’::chain_default_action | одно из двух значений: 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Simple Key | cname | 
tbl_ie_sg_sg_rule
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| proto | proto | ALT | одно из двух значений: 
 | ||
| sg | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| sg_local | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| traffic | traffic | ALT | одно из двух значений: 
 | ||
| ports | sg_rule_ports[] | YES | 
 | ||
| logs | bool | ||||
| trace | bool | ||||
| action | rule_action | одно из двух значений: 
 | |||
| priority | smallint | 0 | 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Compound Key | 
 | 
tbl_ie_sg_sg_icmp_rule
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| sg | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| sg_local | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| traffic | traffic | ALT | одно из двух значений "ingress" или "egress" | ||
| ip_v | ip_family | ALT | одно из двух значений "IPv6" или "IPv4" | ||
| types | icmp_types | массив из smallint[] кодов типа ICMP | |||
| logs | Boolean | false | |||
| trace | Boolean | false | |||
| action | rule_action | одно из двух значений: 
 | |||
| priority | smallint | 0 | 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Compound Key | 
 | 
tbl_cidr_sg_rule
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| proto | proto | ALT | одно из двух значений: 
 | ||
| cidr | cidr | ALT | значение cidr (диапазон ip адресов) в рамках одного правила (proto, sg, traffic) не должны пересекаться | ||
| sg | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| traffic | traffic | ALT | 
 | ||
| ports | sg_rule_ports[] | YES | 
 | ||
| logs | bool | ||||
| trace | bool | ||||
| action | rule_action | одно из двух значений: 
 | |||
| priority | smallint | 0 | 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Compound Key | 
 | 
tbl_cidr_sg_icmp_rule
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| cidr | cidr | ALT | значение cidr (диапазон ip адресов) в рамках одного правила (ip_v, sg, traffic) не должны пересекаться | ||
| sg | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| traffic | traffic | ALT | 
 | ||
| ip_v | ip_family | ALT | одно из двух значений: 
 | ||
| types | icmp_types | массив из smallint[] кодов типа ICMP | |||
| logs | bool | ||||
| trace | bool | ||||
| action | rule_action | одно из двух значений: 
 | |||
| priority | smallint | 0 | 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Compound Key | 
 | 
tbl_fqdn_rule
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| sg_from | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| fqdn_to | fqdn | ALT | 
 | ||
| proto | proto | ALT | одно из двух значений: 
 | ||
| ports | sg_rule_ports[] | YES | 
 | ||
| logs | bool | false | |||
| ndpi_protocols | citext | 
 | |||
| action | rule_action | одно из двух значений: 
 | |||
| priority | smallint | 0 | 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Compound Key | 
 | 
tbl_sg_icmp_rule
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| ip_v | ip_family | ALT | одно из двух значений: 
 | ||
| types | icmp_types | массив из smallint[] кодов типа ICMP | |||
| sg | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| logs | bool | ||||
| trace | bool | ||||
| action | rule_action | одно из двух значений: 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Compound Key | 
 | 
tbl_sg_rule
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| sg_from | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| sg_to | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| proto | proto | ALT | одно из двух значений: 
 | ||
| ports | sg_rule_ports[] | YES | 
 | ||
| logs | bool | false | |||
| action | rule_action | одно из двух значений: 
 | |||
| priority | smallint | 0 | 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Compound Key | 
 | 
tbl_sg_sg_icmp_rule
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| ip_v | ip_family | ALT | одно из двух значений: 
 | ||
| types | icmp_types | массив из smallint[] кодов типа ICMP | |||
| sg_from | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| sg_to | int(8) | FK/ALT | внешний ключ к таблице tbl_sg.id | ||
| logs | bool | ||||
| trace | bool | ||||
| action | rule_action | одно из двух значений: 
 | |||
| priority | smallint | 0 | 
 | 
Ключи
| Имя ключа | Тип | Поля | 
|---|---|---|
| Alternative key | Compound Key | 
 | 
tbl_sync_status
| Поле | Тип | Null | Ключ | По умолчанию | Дополнительно | 
|---|---|---|---|---|---|
| id | int(8) | PRI | auto_increment | ||
| total_affected_rows | int(8) | при любой процедуре (удаление/добавление/редактирование) данных в таблицах, tbl_network, tbl_sg, tbl_fqdn_rule, tbl_sg_rule, tbl_sg_icmp_rule, tbl_sg_sg_icmp_rule, будет учтена сумма всех изменённых строк | |||
| updated_at | timstamptz | YES | дата изменения | 
tbl_host2sg
TODO
tbl_host_ipset
TODO
tbl_host
TODO