edisonlabs/policy-verification

用于策略验证和报告的PHP库。

1.2.0 2023-11-13 14:00 UTC

README

Build Status Coverage Status

策略验证

概述

策略验证是一个简单的库,它提供了创建和报告安全策略检查的基础类。

每个策略检查的结果会返回是否通过策略,同时也会报告其他信息,如策略失败时需要采取的操作。

用法

该库默认不提供任何策略检查。要创建新的检查,请创建一个新的Composer包并将其作为依赖项添加。

composer require edisonlabs/policy-verification

现在创建策略检查类,这些类扩展了库提供的基类。

这些类必须创建在/src/EdisonLabs/PolicyVerification。这是库自动定位和执行检查以生成报告的要求。

// File: /src/EdisonLabs/PolicyVerification/PhpVersion.php

namespace EdisonLabs\PolicyVerification;

use EdisonLabs\PolicyVerification\Check\AbstractPolicyCheckBase;

class PhpVersion extends AbstractPolicyCheckBase
{
    public function getName()
    {
        return 'PHP version';
    }

    public function getDescription()
    {
        return 'Checks whether system is running a recent version of PHP';
    }

    public function getCategory()
    {
        return 'PHP';
    }

    public function getSeverity()
    {
        return parent::POLICY_SEVERITY_HIGH;
    }

    public function checkRequirements()
    {
        // Example of requirement verification.
        if (!is_array($this->getData())) {
            $this->setRequirementError('Invalid data');
        }
    }

    public function check()
    {
        $phpVersion = phpversion();

        if ($phpVersion[0] < 7) {
            $this->setAction('Upgrade to PHP 7 or greater');
            $this->setResultErrorMessage('The system is running an older version of PHP');

            return parent::POLICY_FAIL;
        }

        $this->setWarning('PHP 7.1 will have security support up to Dec 2019');
        $this->setResultPassMessage('The system is running a recent version of PHP');
        
        return parent::POLICY_PASS;
    }
}

composer.json中配置自动加载。

"autoload": {
    "psr-4": {
        "EdisonLabs\\PolicyVerification\\": "src/EdisonLabs/PolicyVerification"
    }
}

重新创建Composer自动加载器。

composer dump-autoload

报告

有两种方式可以生成策略检查结果报告:程序化和/或通过命令行。

程序化

use EdisonLabs\PolicyVerification\Report;

// Some custom data to pass to the policy checks.
$data = array();

$report = new Report($data);

// Prints the result summary.
print_r($report->getResultSummary());

// Other report methods.
$report->getChecks();
$report->getPassChecks();
$report->getScorePercentage();
$report->setData($data);
$report->getData();
$report->getFailChecks();
$report->getActions();
$report->getPassChecksResultMessages();
$report->getFailChecksResultMessages();
$report->getRequirementErrors();
$report->getResult();
$report->getResultSummary();
$report->getScore();
$report->getTotalChecks();
$report->getWarnings();
$report->setCheck($check);

命令

命令位于vendor/bin/policy-verification。将vendor/bin目录包含在系统$PATH中,以便从任何地方运行此命令。

输入policy-verification --help以查看所有可用选项。