opa_cli ресурс
Используйте opa_cli ресурс аудита Chef InSpec для запроса Open Policy Agent (OPA) с помощью файла политики OPA, файла данных и запроса.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Синтаксис
Блок ресурса opa_cli объявляет конфигурации политики OPA, которые могут быть проверены.
describe opa_cli(policy: "example.rego", data: "input.json", query: "data.example.allow") do
its(["result"]) { should eq "value" }
end
где
-
dataзадаёт входные данные в формате JSON или путь к файлу. -
policyпуть к файлу политики. -
queryзадаёт запрос, который нужно выполнить. -
its(["result"]) { should eq "value" }сравнивает результаты запроса с ожидаемым результатом в тесте
Параметры
Ресурс opa_cli ресурса InSpec принимает policy, data, query, и opa_executable_path в качестве параметров.
policy (обязательно)
Путь к файлу политики OPA.
data (обязательно)
Запрос OPA в виде файла JSON-данных или строки в формате JSON.
query (обязательно)
Запрос, который должен быть оценён относительно политики и входных данных.
opa_executable_path
Полный путь к бинарному файлу OPA или EXE-файлу, используемому для запуска OPA CLI или команд OPA. По умолчанию предполагается, что путь добавлен в переменную среды PATH.
Свойства
result
Свойство result проверяет, возвращает ли запрос ресурса пустой результат.
its('result') { should be nil }
allow
Свойство allow проверяет, соответствует ли определённый ввод политике, заданной в OPA. Этот матчер не будет работать, если allow не определён в файле политики.
its('allow') { should eq 'value' }
Примеры
В следующих примерах показано, как использовать этот ресурс аудита Chef InSpec:
describe opa_cli(query: "data.example.allow", policy: "example.rego", data: "input.json", opa_executable_path: "./opa") do
its("result") { shoule_not be nil }
its(["result", 0, "expressions", 0, "value"]) { should eq true }
its("allow") { should eq "true" }
end
В приведённом выше примере показано, как значение allow можно получить двумя способами.
Матчеры
Полный список доступных матчеров можно найти на нашей странице матчеров.
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/opa_cli/