violet88 / silverstripe-vault
使用HashiCorp Vault API加密和解密数据的SilverStripe模块
v2.0.0
2024-01-02 09:45 UTC
Requires
- php: >=7.4 || ^8.0
- silverstripe/admin: ^1.0 || ^2.0
- silverstripe/framework: ^4 || ^5
Requires (Dev)
- phpunit/phpunit: >=7.0
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-10-01 00:20:44 UTC
README
此模块提供了一种使用Vault服务(特别是Transit API)安全存储敏感数据的方法。
需求
- SilverStripe ^4 || ^5
- PHP ^7.4 || ^8.0
- Vault Server启用Transit API
安装
使用composer安装模块。
composer require violet88/silverstripe-vault
配置
Vault
模块需要在Vault服务器上启用transit。以下策略可以用来启用transit。
path "transit/*" { capabilities = ["create", "read", "update", "delete", "list", "sudo"] }
可以使用以下命令启用transit引擎。
vault secrets enable transit
SilverStripe
配置文件
模块需要在vault.yml
文件中配置Vault服务器。服务器可以在vault.yml
文件中进行配置。
--- name: vault --- Violet88/VaultModule/VaultClient: vault_token: # Vault Authorization Token vault_url: # Vault URL vault_transit_path: # Transit Path, defaults to 'transit'
此外,可以在vault.yml
文件中配置默认密钥。
Violet88/VaultModule/VaultKey: name: # Key Name type: # Key Type, e.g. aes256-gcm96
如果没有配置密钥,模块将使用以下默认值。
Violet88/VaultModule/VaultKey: name: "silverstripe" type: "aes256-gcm96"
如果密钥不存在,将自动创建密钥,请确保相应地设置Vault权限。
环境变量
除了vault.yml
文件外,模块还支持以下环境变量。
VAULT_TOKEN="s.1234567890abcdef" VAULT_URL="https://vault.example.com" VAULT_TRANSIT_PATH="transit"
设置这些环境变量将覆盖vault.yml
文件中设置的相应值。
用法
模块提供了一个Encrypted
字段类型,当数据从数据库保存和检索时,它将自动加密和解密数据。
<?php class MyDataObject extends DataObject { private static $db = [ 'MyEncryptedField' => 'Encrypted', ]; }
该数据类型支持自动转换,要使用它,只需传递转换类型及其参数。
<?php class MyDataObject extends DataObject { private static $db = [ 'MyEncryptedIntegerField' => 'Encrypted("Int")', 'MyEncryptedEnumField' => 'Encrypted("Enum", "value1,value2,value3")', ]; }
过滤
模块提供了一个EncryptedSearch
,可以用来通过加密字段过滤数据。请注意,过滤器将仅返回精确匹配。
<?php class MyDataObject extends DataObject { private static $searchable_fields = [ 'MyEncryptedField' => 'EncryptedSearch', ]; }
任务
模块提供了加密和解密所有数据以及旋转默认密钥的任务。
# Encrypt all data
vendor/bin/sake dev/tasks/EncryptDBTask
# Decrypt all data
vendor/bin/sake dev/tasks/DecryptDBTask
# Rotate keys
vendor/bin/sake dev/tasks/RotateKeyTask
免责声明
- Violet88不对使用此模块造成的任何数据丢失或其他损害负责。使用风险自负。