Постура TAK Server и управляемый ingest Cursor-on-Target
Источник tak управляет развёртыванием TAK (Team Awareness Kit) как ещё
одной поверхностью. Он выполняет две независимые задачи, каждую из которых можно
включить отдельно:
- Постура TAK Server — сообщает конфигурацию сервера (его входы и их
протоколы/порты, параметры TLS/keystore, backend подписи сертификатов) как
находки с минимальными данными. Обоснованный источник — собственный
CoreConfig.xmlсервера, читаемый офлайн с диска; по сети читается только необязательная live-проверка версии. Федерация TAK не читается. - Управляемый ingest CoT — принимает события Cursor-on-Target на собственных UDP- и TCP-listener коннектора и превращает каждое в управляемое ребро доступа.
Коннектор придерживается принципа «сначала чтение»: он никогда не пишет в TAK Server, не входит в федерацию и не переизлучает payload. Если не настроены ни учётные данные, ни listener, он честно ничего не делает — ничего не выводит вместо того, чтобы выдумывать постуру развёртывания, к которому не обращался.
Что он выводит
Заголовок раздела «Что он выводит»| Поле | Значение |
|---|---|
| Источник сигнала | cot |
| Режим | write — эмиттер CoT вносит состояние ситуационной осведомлённости в feed |
| Инициатор | uid эмиттера, по умолчанию хешированный (cot_uid_mode) |
| Confidence | всегда approximate — базовый CoT не аутентифицирован (см. ниже) |
| Находки | отмены drop-track, события с неограниченной ошибкой и агрегированные отказы listener (rate-limit / oversize / malformed / conn-limit) |
1. Постура: сначала прочитайте сервер офлайн
Заголовок раздела «1. Постура: сначала прочитайте сервер офлайн»Обоснованный источник постуры — собственный конфигурационный файл сервера. При
установке пакета это /opt/tak/CoreConfig.xml. Укажите его коннектору, и тот
прочитает настроенные входы, параметры TLS/keystore и backend подписи
сертификатов, не обращаясь к сети. Элемент <federation> намеренно не
моделируется, поэтому постура федерации не создаётся.
Live-проверка версии необязательна и добавляет только запущенную версию.
Поскольку TAK Server аутентифицирует операторов через mTLS, проверка работает
deny-closed: если включить posture и указать server_url, но не указать
клиентский сертификат, коннектор откажется запускаться, а не станет анонимно
опрашивать сервер и сообщать неаутентифицированную постуру. server_url должен
использовать https.
// OLIVARES_SOURCES_CONFIG — posture only{ "sources": [{ "name": "tak-server", "kind": "tak", "tenant": "<tenant-id>", "config": { "core_config_path": "/opt/tak/CoreConfig.xml", "server_url": "https://takserver.example.mil:8443", "client_cert": "${TAK_CLIENT_CERT_PEM}", "client_key": "${TAK_CLIENT_KEY_PEM}" } }]}2. Ingest: принимайте CoT по UDP и TCP
Заголовок раздела «2. Ingest: принимайте CoT по UDP и TCP»Включите listener, и коннектор будет принимать CoT: одно сообщение на UDP-датаграмму и одно на TCP-соединение («open-squirt-close»). Направьте TAK feed или клиентов CoT на адрес listener коннектора. Коннектор является получателем; он не подключается к серверу, чтобы забирать данные.
// OLIVARES_SOURCES_CONFIG — ingest{ "sources": [{ "name": "tak-edge", "kind": "tak", "tenant": "<tenant-id>", "config": { "cot_udp_listen": "0.0.0.0:6969", "cot_multicast_group": "239.2.3.1", "cot_tcp_listen": "0.0.0.0:8087", "allow_public_bind": true, "feed_ref": "tak" } }]}Ключи конфигурации (из поставляемого descriptor коннектора)
Заголовок раздела «Ключи конфигурации (из поставляемого descriptor коннектора)»| Ключ | Тип | По умолчанию | Секрет | Значение |
|---|---|---|---|---|
core_config_path | string | — | no | Путь к CoreConfig.xml (установка пакета: /opt/tak/CoreConfig.xml) — обоснованный офлайн-источник постуры |
server_url | string | — | no | Базовый URL TAK Server (например, https://takserver.example.mil:8443). Необязателен: включает только live-проверку версии |
version_path | string | /Marti/api/version | no | Endpoint версии Marti на server_url. Настраивается, поскольку справочник API tak.gov доступен только с учётной записью |
client_cert | string | — | yes | Клиентский сертификат PEM для mTLS TAK Server, по ссылке |
client_key | string | — | yes | Закрытый ключ PEM клиентского сертификата, по ссылке |
ca_cert | string | — | no | Bundle CA PEM для сертификата TAK Server. Пустое значение использует хранилище доверия хоста |
posture | bool | true | no | Выводить находки постуры TAK Server |
request_timeout | duration | 15s | no | Timeout каждого запроса к API TAK Server |
feed_ref | string | tak | no | Стабильная ссылка этого feed CoT — source_ref, область которого задаёт привязка sourcescope (source_type=data) |
cot_udp_listen | string | — | no | Адрес UDP-listener для CoT (например, 127.0.0.1:6969). Пустое значение отключает ingest UDP |
cot_tcp_listen | string | — | no | Адрес TCP-listener для CoT open-squirt-close (например, 127.0.0.1:8087). Пустое значение отключает ingest TCP |
cot_multicast_group | string | — | no | Необязательная multicast-группа для входа на UDP-listener (значение SA по умолчанию для TAK — 239.2.3.1) |
cot_max_event_bytes | int | 65536 | no | Максимальный размер одного события CoT в байтах |
cot_max_detail_bytes | int | 32768 | no | Максимальный размер непрозрачного диапазона <detail> одного события CoT в байтах |
cot_rate_limit_eps | int | 500 | no | Максимум принятых событий CoT в секунду по всем listener; превышение отбрасывается и подсчитывается |
cot_max_tcp_conns | int | 128 | no | Максимум одновременных TCP-соединений CoT |
cot_uid_mode | string | hash | no | Как uid покидает коннектор: hash (по умолчанию, односторонний) или raw. uid идентифицирует устройство, а устройство — носящего его человека |
Порты (TAK Server Configuration Guide v5.2)
Заголовок раздела «Порты (TAK Server Configuration Guide v5.2)»Ниже приведён контекст интеграции. Собственные listener коннектора привязываются
к любому настроенному host:port; в примерах эти номера повторяются только для
удобства.
| Порт / группа | Соглашение |
|---|---|
| 8089 | Вход потокового CoT по TLS — аутентифицированный канал клиент↔сервер |
| 6969 + multicast 239.2.3.1 | Multicast-группа ситуационной осведомлённости (SA) |
| 8087 | Обычный входной порт; канонический пример руководства привязывает его как UDP. Протокол настраивается: 8087 не является TCP по своей природе |
| 8088 | stcp — незашифрованный вход TCP, только для тестирования |
| 8443 | Административный web UI |
| 8446 | Регистрация сертификатов |
Приватность: координаты и detail не покидают коннектор
Заголовок раздела «Приватность: координаты и detail не покидают коннектор»CoT — протокол передачи местоположения, наиболее насыщенный PII сигнал из всех, которые загружает продукт, поэтому минимизация данных принуждается жёстко:
lat/lon/haeэлемента<point>никогда не покидают коннектор. Координата — это местоположение человека. Продукт записывает, что событие принято, от какого эмиттера и какого типа CoT, но никогда — где находился человек.- Непрозрачный диапазон
<detail>не покидает коннектор; сохраняются только его размер и дайджест SHA-256, чтобы одинаковые payload можно было коррелировать без их хранения. uidэмиттера по умолчанию хешируется (cot_uid_mode=hash, с разделением доменов и односторонне).rawтребует явного opt-in оператора.
Confidence: uid CoT не является аутентифицированной идентичностью
Заголовок раздела «Confidence: uid CoT не является аутентифицированной идентичностью»Базовый CoT не содержит никакой аутентификации: любой хост, способный
достичь listener, может заявить любой uid. TLS TAK Server защищает канал
клиент↔сервер (порт 8089), но ничего не говорит о событии, которое этот
коннектор принимает на собственном открытом UDP/TCP-listener. Поэтому каждое
ребро от базового CoT-listener по конструкции оценивается как approximate:
пути кода, возвращающего attributed, нет.
Область: управляйте feed привязкой sourcescope
Заголовок раздела «Область: управляйте feed привязкой sourcescope»Feed — первоклассный управляемый источник. Привязка sourcescope задаёт, кто
может его использовать, через source_type=data и source_ref=<feed_ref> по
любой оси субъекта: session / agent / user / user_group / role. Эффекты —
allow (по умолчанию) или forbid, причём forbid абсолютен (forbid
перекрывает allow).
POST /v1/m/sourcescope/bindingsContent-Type: application/json
{ "source_type": "data", "source_ref": "tak", "scope_tree": "agent", "scope_ref": "agent:recon-planner", "effect": "allow", "enabled": true}Задайте "effect": "forbid" (например, с "scope_tree": "user_group"), чтобы
отнять доступ у всей группы, даже если существует allow.
Лицензия и происхождение clean-room
Заголовок раздела «Лицензия и происхождение clean-room»Формат передачи CoT реализован методом clean-room только по публично выпущенной спецификации MITRE. Исходный код TAK или ATAK не читался, не копировался и не использовался для производной работы:
- The Developer’s Guide to Cursor on Target, Butler, MITRE, август 2005 — DTIC ADA637348, MITRE Case #06-0249.
Event-PUBLIC.xsd, схема базового события CoT (версия 2.0) — MITRE Case #11-3895.- TAK Server Configuration Guide v5.2 — для соглашений портов/протоколов.
ATAK-CIV и TAK Server распространяются под GPLv3 и запрещены для коннектора (Apache-2.0), что принуждается проверкой лицензионной границы. Оба имеют федеральную маркировку США «Distribution A», которая является правительственным заявлением о выпуске, а не лицензией ПО: деревья кода остаются GPLv3. Законность реализации clean-room обеспечивают публично выпущенные MITRE схема и руководство.
Честные ограничения
Заголовок раздела «Честные ограничения»- Нет носителей mesh/radio — только UDP и TCP; без serial, TAK mesh и radio.
- Нет плагинов ATAK/WinTAK — коннектор не реализует пользовательский клиент TAK.
- Нет федерации TAK — он только наблюдает, что федерация настроена, но никогда не участвует в ней.
- Нет Link-16 / MIL-STD или тактического протокола, требующего сертификации, и нет аккредитации Iron Bank / DoD — это отдельные необязательные пути для клиентов.
- Подсхема CoT
<detail>не моделируется — разбирается только базовое событие; detail остаётся непрозрачными байтами с ограничением размера и дайджестом. - Потери UDP невозможно подсчитать — backpressure замедляет listener; в UDP ядро отбрасывает датаграммы до того, как процесс их увидит, и эти потери подсчитать нельзя. В находки отказов агрегируются только события, которые коннектор действительно отклонил.
Связанные страницы
Заголовок раздела «Связанные страницы»- Подключение источника — модель коннектора и честная таксономия уровней.
- Управление и согласование — модель авторизации, к которой подключается привязка sourcescope.
- Коннекторы и уровни покрытия — полный каталог.