Рецепты
Факт о чужом API, в JSON, со схемой и тестами.
Рецепт говорит, на каких хостах отвечает сервис, как предъявляется его кред и какой класс получает каждый путь. Это данные в публичном репозитории, поэтому неверный класс правится данными, а не релизом.
Как он выглядит
{
"key": "demo",
"vendor": "Sallyport",
"hosts": ["demo.sallyport.cloud"],
"adapter": "api-key",
"placement": { "kind": "header", "header_name": "X-Demo-Token" },
"class_rules": [
{ "match": { "methods": ["GET", "HEAD"] }, "class": "read" },
{ "match": { "methods": ["POST"], "path_regex": "^/echo$" }, "class": "write" }
]
}Кред — это объект
Datadog нужны API-ключ и ключ приложения. AWS — идентификатор и секрет. Twilio — SID и токен. Моделирование креда одной строкой и заставляет людей вставлять два значения через двоеточие.
Пути, выдающие секреты
Некоторые эндпоинты возвращают собственные креды. Они помечены в рецепте, получают класс destructive и по умолчанию отклоняются. Консоль показывает список всех таких путей в вашем каталоге, так что ответ на вопрос «что мой агент может вытащить из этого API» — это экран, а не аудит.
Свой хост тоже работает: хост без рецепта получает консервативный дефолт и access request со ссылкой, а рецепт можно написать потом.