smknstd/laravel-kms-encryption

用基于 AWS KMS 的加密替换 Laravel 的内置加密

dev-main 2021-09-11 11:40 UTC

This package is auto-updated.

Last update: 2024-09-11 18:31:14 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

介绍

此包用基于 AWS KMS 的加密替换了 Laravel 的内置加密。

kms 提供的两个主要功能包括

  • 自动旋转密钥(每年一次)而不删除之前的密钥
  • 您无法访问实际的密钥,这意味着您无法泄露它

此包基于此 博客文章

安装

此包需要 Laravel 8.x 或更高版本。

您可以通过 composer 安装此包

composer require smknstd/laravel-kms-encryption

接下来,您应该发布配置文件,并设置您的值

php artisan vendor:publish --provider="Smknstd\LaravelKmsEncryption\LaravelKmsEncryptionServiceProvider"

如果您想使用已经设置好的 IAM 角色,aws sdk 将默认自动使用它们。否则,您应该在您的 config/services.php 文件中设置凭证到适当的 aws 用户,以便允许 "使用" 给定的 kms 密钥,通过添加一个 kms 部分

    'kms' => [
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_REGION'),
    ],

现在每次您加密任何内容时,它将使用提供的 kms 密钥。它包括使用 eloquent 的 加密转换 的所有字段。如果您之前已经加密了数据,请注意您将无法解密它。

Cookie 加密

如果您使用 Laravel 的中间件 EncryptCookies,则无法与 kms 一起使用。要使中间件继续与 Laravel 的 encrypter 一起工作,您需要编辑 App\Http\kernel.php。只需将现有的中间件替换为

   protected $middlewareGroups = [
     'web' => [
         \Smknstd\LaravelKmsEncryption\Middleware\EncryptCookies::class,
         ...
     ]
   ]

测试

composer test

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

请审查我们的安全策略以了解如何报告安全漏洞:

鸣谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件