Spec-Zone.ru › Chef 17

opa_cli ресурс

[редактировать на GitHub]

Используйте 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API