Hosts
Ресурс Hosts представляет собой введенную нами абстракцию, позволяющая описывать Linux-узлы, на которых работает HBF-Agent.
Эти узлы можно связывать с группами безопасности для логического разделения и использовать в правилах,
определяющих разрешение или блокировку доступа к конкретным ресурсам сети.
- API
- nftables
Более подробную документацию по API можно посмотреть здесь.
Более подробно по организации БД можно посмотреть здесь.
Входные параметры
hosts.hosts[]- Структура, содержащая список хостов.hosts.hosts[].name- Имя хоста.hosts.hosts[].uuid- uuid хоста.hosts.hosts[].sgName- Security Group, с которой устанавливаются правила взаимодействия.hosts.hosts[].ipList.IPs- список ip адресов, которыми оперирует Host.syncOp- Поле определяющее действие с данными из запроса.
| название | обязательность | тип данных | значение по умолчанию |
|---|---|---|---|
| hosts[] | да | Object[] | |
| hosts[].name | нет | String | |
| hosts[].uuid | да | String | |
| hosts[].sgName | нет | String | |
| hosts[].ipList | нет | Object | |
| hosts[].ipList.IPs | нет | Array | |
| syncOp | да | Enum("Delete", "Upsert", "FullSync") |
Ограничения
hosts.hosts[].name:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
hosts.hosts[].uuid:- Значение поля должно представлять собой корректный UUID в стандартной текстовой форме.
- Значе ние должно быть уникальным в рамках типа ресурса.
- UUID должен соответствовать формату, описанному в RFC 4122.
hosts.hosts[].sgName:- Длина значения поля не должна превышать 256 символов.
- Значение поля должно начинаться и заканчиваться символами без пробелов.
- Значение должно быть уникальным в рамках типа ресурса.
Пример использования
curl '127.0.0.1:9006/v2/sync' \
--header 'Content-Type: application/json' \
--data '{
"hosts": {
"hosts": [{
"name": "web-04",
"uuid": "bd7f0c2e-1a0b-4ad0-9c52-1f1b3a7c2c14",
"sgName": "sg-example3",
"ipList": {
"IPs": ["10.10.1.16", "10.10.1.17"]
}
}]
},
"syncOp": "Upsert"
}'
Выходные параметры
| название | тип данных | описание |
|---|---|---|
| - | Object | в случае успеха возвращается пустое тело |
Возможные ошибки API
Пользователь указал некорректные значения агрументов
- HTTP code: 400
- gRPC code: INVALID_ARGUMENT
- gRPC number: 3
Не найден метод
- HTTP code: 404
- gRPC code: NOT_FOUND
- gRPC number: 5
Диаграмма последовательности
В этом разделе мы покажем, как ресурс Hosts, созданный с помощью Terraform/API, внедряется в настройки nftables. В
контексте HBF мы интерпретируем ресурс Host как проекцию на поле elements ресурса IPSet, который функционирует
в рамках инструмента nftables, обеспечивая более широкие возможности для управления IP адресами.
$IPSet_Name- Наименование IPSet$type- Описывает тип данных$flags- Описывает свойства IPSet.$elements- Указывает массив содержащихся в IPSet элементов IP адресов
| шаблон параметра | структура параметра | значения |
|---|---|---|
| $IPSet_Name | ^NetIPv[4|6]-.* | Примеры значений:
|
| $type | type | Могут быть установлены следующие значения:
|
| $flags | flags | Установлены следующие значения:
|
| $elements | elements = {} | Значения IP, в случае нескольких значений перечисляются через запятую |
Шаблон
set $IPSet_Name {
$type
$flags
$elements
}
Пример использования
set NetIPv4-host-$uuid {
type ipv4_addr
flags constant,interval
elements = { 10.244.0.41, 127.0.0.1 } <- Host IPs
}