Hosts
Ресурс Hosts — это введённая нами абстракция, позволяющая описывать Linux-узлы, на которых работает HBF-Agent. Эти узлы можно связывать с группами безопасности для логического разделения и использовать в правилах, определяющих разрешение или блокировку доступа к конкретным ресурсам сети.
- API
- nftables
Более подробную документацию по API можно посмотреть здесь.
Более подробно по организации БД можно посмотреть здесь.
Входные параметры
hosts.hosts[]
- Массив/Список подсетей типа IP.hosts.hosts[].name
- название подсети.hosts.hosts[].uuid
- идентификатор хоста в формате UUIDhosts.hosts[].sgName
- Security Group, с которой устанавливаются правила взаимодействия.hosts.hosts[].ipList.IPs
- список ip адресов, которыми оперирует HostsyncOp
- Поле определяющее действие с данными из запроса.
название | обязательность | тип данных | значение по умолчанию |
---|---|---|---|
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-sg-example {
type ipv4_addr
flags constant,interval
elements = { 10.244.0.41, 127.0.0.1 } <- Host IPs
}