smknstd / laravel-kms-encryption
用基于 AWS KMS 的加密替换 Laravel 的内置加密
dev-main
2021-09-11 11:40 UTC
Requires
- php: ^8.0
- aws/aws-sdk-php: ^3.191
- illuminate/contracts: ^8.37
- 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
This package is auto-updated.
Last update: 2024-09-11 18:31:14 UTC
README
介绍
此包用基于 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)。有关更多信息,请参阅 许可文件