violet88/silverstripe-vault

使用HashiCorp Vault API加密和解密数据的SilverStripe模块

安装: 0

依赖项: 0

建议者: 0

安全: 0

星级: 0

关注者: 1

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

v2.0.0 2024-01-02 09:45 UTC

README

此模块提供了一种使用Vault服务(特别是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不对使用此模块造成的任何数据丢失或其他损害负责。使用风险自负。