ekino/data-protection-bundle

数据保护包

安装次数: 23,701

依赖项: 0

建议者: 0

安全: 0

星级: 4

关注者: 13

分支: 10

开放问题: 6

类型:symfony-bundle

v3.1.0 2024-06-19 14:59 UTC

README

Latest Stable Version Build Status Coverage Status Total Downloads

这是一个正在开发中的项目,所以如果您想实现某些功能,请随时提出或贡献以帮助我们!

目的

此包通过加密保护您项目的数据。

安装

步骤 1:添加依赖项

$ composer require ekino/data-protection-bundle

步骤 2:注册包

Symfony 2 或 3

<?php

// app/AppKernel.php

public function registerBundles()
{
    $bundles = [
        // ...
        new Ekino\DataProtectionBundle\EkinoDataProtectionBundle(),
        // ...
    ];
}

Symfony 4

<?php

// config/bundles.php

return [
    // ...
    Ekino\DataProtectionBundle\EkinoDataProtectionBundle::class => ['all' => true],
    // ...
];

步骤 3:配置包

ekino_data_protection:
    encryptor:
        method: aes-256-cbc # default
        secret: foo         # required

    encrypt_logs:     true  # default
    use_sonata_admin: false # default

方法(method)是openssl_get_cipher_methods()中的一个。

用法

加密日志

此包为Monolog提供了一个处理器,以加密日志,使其不具人类可读性。要使用它,只需在每个要加密的数据的上下文字段前添加前缀private_,例如

<?php

$logger->critical('Something to be logged', [
    'a_non_sensitive_data' => 'foo',  // won't be encrypted
    'private_firstname'    => 'John', // will be encrypted
]);

然后,数据可以在安全区域内使用加密器进行解密。

如果您不想使用它,可以在配置中禁用它

ekino_data_protection:
    encrypt_logs: false

解密日志

此包为Sonata Admin提供了一个面板,可以解密上述处理器加密的日志。要使用它,在配置中启用它

ekino_data_protection:
    use_sonata_admin: true

然后,您可以将以下路由 admin_app_logs_decrypt_encrypt 添加到菜单中。此路由提供了一个只包含一个字段的表单,您可以在其中填写日志的加密部分或包含多个日志的完整文本。在多个加密日志的情况下,每个解密结果将在一个专门的选项卡中显示。

在运行时解密密钥

此包提供了一个处理器,使用配置的加密器在运行时解密密钥。这允许您不泄露您的密钥,并且可以轻松地旋转密钥而无需刷新缓存。

要使用它,只需像以下示例那样使用前缀 ekino_encrypted

# .env

DATABASE_URL=d6NhbhWDBVpj5l3gYD5BiKLeYxJllx7Lf8hJXhtoJ70=
# config/packages/doctrine.yaml

doctrine:
    dbal:
        url: '%env(ekino_encrypted:DATABASE_URL)%'

使用 CLI 加密文本

要加密文本,运行以下命令

bin/console ekino-data-protection:encrypt myText,可选地带有 --secret mySecret 和/或 --method myCipher