Profiles

Profiles are a collection of policies that aim to audit a target against a specific context or purpose. Some examples of profile use cases are:

  • Production-ready Drupal 8 site
  • Organizational policy compliance
  • Security or performance audit

Profiles allow you to run a defined set of polices into a report.

./vendor/bin/drutiny profile:run <profile_name> <target>

Reports can also be rendered into HTML or JSON and saved to file.

./vendor/bin/drutiny profile:run <profile_name> <target> --format=html -o <filename>

Creating a Profile

Profiles are YAML files with a file extension of .profile.yml. These can be placed anywhere but recommended to store in a directory called Profile.

Fields

title (required)

The title field gives semantic meaning to the collection of policies.

title: My custom audit

policies (required)

A list of policies that make up the profile.

policies:
  Drupal-7:NoDuplicateModules: {}
  Drupal-7:OverlayModuleDisabled: {}
  Drupal-7:BlackListPermissions: {}
  Drupal-7:PhpModuleDisabled: {}

include

The include directive allows profiles to be build on top of collections or other profiles. Each include name should be the machine name of another available profile.

include:
  - cloud
  - d8

template

The template to use to theme an HTML report. Defaults to page which is the option provided by default. To add your own template you need to register a template directory and add a template twig file.

drutiny.config.yml:

Template:
  - my_templates_dir

< profile >.profile.yml:

template: my-page

The configuration example above will register the my_templates_dir directory (relative to where drutiny.config.yml is placed). When rendering an HTML report, Drutiny will look inside my_templates_dir among other registered template directories for a template called my-page.html.twig. Note that multiple template directories can be registered.

content

The content declaration allows a profile to specify the content displayed in an HTML report and the order that it displays in. By default, Drutiny will load in the contents from content.default.yml.

The content property is an array of sections. Each section specifies a heading and body. Each section will roll up into a Table of Contents in the report.

content:
  - heading: My custom section
    body: |
      This is a multiline field that can contain mustache and markdown syntax.
      There are also a variety of variables available to dynamically render
      results.

      ### Summary
      {{{ summary_table }}}

      {{ #failures }}
        ### Issues
        {{# output_failure }}
          {{{.}}}
        {{/ output_failure }}
      {{ /failures }}

      {{ #warnings }}
        ### Warnings
        {{# output_warning }}
          {{{.}}}
        {{/ output_warning }}
      {{ /warnings }}

Content Variables

Variable Type description
summary_table string A summary table of failures, errors and warnings found from the report.
appendix_table string A table all results from the audit and data gathering.
output_failure array An array of rendered failed results
output_warning array An array of rendered warnings results
output_error array An array of rendered erroneous results
output_success array An array of rendered successful results
output_data array An array of rendered data results
remediations array An array of recommendations aggregated from failed policies.
failures integer The number of failed results
errors integer The number of erred results
passes integer The number of passed results
warnings integer The number of failed results
not_applicable integer The number of results not applicable to tested target.
notices integer The number of results that provide information/data only.
title string Profile title
description string Profile description
results array An array of result arrays. Its not recommended to use this variable as it requires a lot more complexity for a profile.