neo3k / laravel-kms-encryption
将 Laravel 内置的加密替换为基于 AWS KMS 的加密
1.0.0
2022-05-12 19:00 UTC
Requires
- php: ^8.0
- aws/aws-sdk-php: ^3.191
- illuminate/contracts: ^9.12
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- brianium/paratest: ^6.2
- nunomaduro/collision: ^5.3
- orchestra/testbench: ^6.15
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.23
- vimeo/psalm: ^4.8
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)。有关更多信息,请参阅 许可文件