neo3k/laravel-kms-encryption

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

1.0.0 2022-05-12 19:00 UTC

This package is auto-updated.

Last update: 2024-09-13 00:33:20 UTC


README

https://github.com/smknstd/laravel-kms-encryption 分支而来

简介

此包将 Laravel 内置的加密替换为基于 AWS KMS 的加密。

kms 提供的两个主要功能是

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

此包基于此 博客文章

安装

此包需要 Laravel 9.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)。有关更多信息,请参阅 许可文件