Нашёл реальную команду сборки, которую Newton использует для компиляции oracle для данных, и она ответила на вопрос, который я всё это время предполагал, не проверяя.
jco componentize -w newton-provider.wit -o policy.wasm policy.js -d stdio random clocks http fetch-event
Флаг -d здесь реально делает работу. Он явно перечисляет, к чему получившийся WASM-компоненту разрешено обращаться: стандартный ввод/вывод, случайность, часы, HTTP, события fetch. Ничего больше. Это не «сетевой брандмауэр», прикрученный во время выполнения постфактум — возможности объявляются на этапе сборки, встраиваются прямо в сам компонент.
Я описывал «песочницу» oracle в Newton как «запрет на доступ к приватным IP-адресам» — это правда, но это занижает суть происходящего. Фильтрация сети во время выполнения мешает компоненту достучаться туда, куда ему нельзя. Объявление возможностей на этапе сборки — шаг раньше: у компонента вообще никогда не появляется общая способность делать что угодно сверх указанного списка, даже если поверх этого существует дополнительная фильтрация во время выполнения.
Два уровня, а не один. Стоит понимать разницу, когда кто-то говорит вам, что oracle-сандбокс «безопасен» — безопасен от чего, где именно это обеспечивается, важнее, чем одно слово в заявлении.
@NewtonProtocol $NEWT #Newt
jco componentize -w newton-provider.wit -o policy.wasm policy.js -d stdio random clocks http fetch-event
Флаг -d здесь реально делает работу. Он явно перечисляет, к чему получившийся WASM-компоненту разрешено обращаться: стандартный ввод/вывод, случайность, часы, HTTP, события fetch. Ничего больше. Это не «сетевой брандмауэр», прикрученный во время выполнения постфактум — возможности объявляются на этапе сборки, встраиваются прямо в сам компонент.
Я описывал «песочницу» oracle в Newton как «запрет на доступ к приватным IP-адресам» — это правда, но это занижает суть происходящего. Фильтрация сети во время выполнения мешает компоненту достучаться туда, куда ему нельзя. Объявление возможностей на этапе сборки — шаг раньше: у компонента вообще никогда не появляется общая способность делать что угодно сверх указанного списка, даже если поверх этого существует дополнительная фильтрация во время выполнения.
Два уровня, а не один. Стоит понимать разницу, когда кто-то говорит вам, что oracle-сандбокс «безопасен» — безопасен от чего, где именно это обеспечивается, важнее, чем одно слово в заявлении.
@NewtonProtocol $NEWT #Newt