阿克拉工程实例 | 文档和教程 | 安装 | 阿克拉反馈 |
---|
Acra — 用于保护敏感数据和个人数据的数据库安全套件。
Acra 在一套套件中提供数据字段的应用程序级加密、多层访问控制、数据库防泄漏和入侵检测功能。 Acra 专为将数据存储在一个或多个数据库/数据存储中的分布式应用程序(Web、服务器端和移动设备)而设计。
完美兼容 Acra 的应用程序 | 典型行业 |
---|---|
将数据存储在集中式数据库或对象存储中的 Web 和移动应用程序 |
|
在云中收集遥测数据和处理数据的 IoT 应用程序 | |
高负载数据处理应用程序 |
Acra 为您提供了在将每个敏感数据记录(数据字段、数据库单元、json)存储到数据库/文件存储之前对其进行加密的工具。然后在安全隔离区域(阿克拉一侧)解密它们。 Acra 允许尽早加密数据并对加密数据进行操作。
Acra 的加密设计确保从应用程序或数据库泄漏的任何秘密(密码、密钥等)都不足以解密受保护的数据。 Acra 最大限度地减少泄漏范围、检测未经授权的行为并防止泄漏,并通知操作员正在发生的事件。
这是 Acra 社区版,商业和非商业用途永远免费。
| 客户端和/或 Acra 端加密 – 每个数据字段都使用唯一的加密密钥进行加密。 |
| 您可以选择要加密的列以平衡良好的安全性和性能。 |
| 两个加密信封:AcraBlocks 和 AcraStructs。 AcraBlocks 是快速对称容器,默认使用它们。 AcraStructs 是非对称容器,使用它们进行客户端加密。 |
| 搜索加密数据而不解密。专为精确查询而设计,基于 AES-GCM 和盲索引。 |
| 使用完全或部分屏蔽来删除或屏蔽敏感数据。 |
| 用令牌替换敏感数据,并仅在需要时将其与原始数据匹配。 |
| 用于密钥生成、导出、备份、轮换等的内置工具。 |
| 通过内置的 SQL 防火墙。 |
| 使用有毒记录(蜂蜜令牌)来警告可疑行为。 |
| 可供 Acra Enterprise 用户使用。 |
| |
|
Acra 为数据生命周期的不同部分和阶段提供不同的防御层。这就是深度防御——一组独立的安全控制,旨在在攻击者越过外围时减轻多种风险。
| 所有 Acra 功能都打包到数据库代理中,该代理解析应用程序和数据库之间的流量,并在适当的情况下应用安全功能。 |
| API 服务器,将 Acra 的大部分功能公开为具有流量保护的 HTTP / gRPC API。 |
| 用于身份验证和传输加密的可选客户端服务。 |
| 可供 Acra Enterprise 用户使用。 |
| |
| |
| |
|
| 您的基础设施从一开始就是安全的,无需额外配置。 |
| 没有选择错误密钥长度或算法填充的风险。 |
| 易于配置和自动化。 |
| 通过二进制包或 Docker 镜像。 |
| 需要对应用程序代码进行最少的更改。 |
| 贯穿所有 Acra 组件; 兼容 ELK 堆栈、Datadog、Graylog、Prometheus、Grafana、Jaeger。 |
| 将数据库解密为明文的回滚实用程序。 |
| 有大量基于 Web 和基于 Docker 的示例项目可用。 |
| 在您的 DigitalOcean 云中运行 AcraServer。 |
| 我们可以为您设置和管理 Acra。 |
Acra 依赖于我们的密码库 Themis,该库基于最可靠密码的最佳可用开源实现来实现高级密码系统。 Acra 严格不包含自制的加密原语或晦涩的密码。
为了提供独特的保证,Acra 依靠众所周知的密码和智能密钥管理方案的结合。请参阅密码学和密钥管理。
默认加密原始源 | 开放式SSL |
支持的加密原始源ᵉ | BoringSSL、LibreSSL、符合 FIPS、符合 GOST、HSM |
存储加密(AcraBlocks) | AES-256-GCM + AES-256-GCM |
存储加密 (AcraStructs) | AES-256-GCM + ECDH |
传输加密 | TLS v1.2+ 或 Themis 安全会话 |
KMS 集成ᵉ | Amazon KMS、Google 云平台 KMS、HashiCorp Vault、Keywhiz 等 |
ᵉ — 仅在 Acra 企业版中可用。请给我们发送电子邮件以获取完整的功能列表和报价。
Acra 由多种服务和公用设施组成。 Acra 服务允许您构建无限复杂的数据流,完全适合您的具体基础设施。根据您的架构和用例,您可能只需要部署基本服务或全部服务。
安全执行组件:“发生加密”的服务。其中之一是必需的:AcraServer、AcraTranslator、AnyProxy 或客户端 SDK。
密钥存储: Acra 保存加密密钥的数据存储:Redis、数据库中的表、任何 KV 存储。其中之一是必需的。
主密钥存储: KMS、Vault。强烈推荐其中之一。
附加服务和实用程序:密钥管理实用程序、数据迁移脚本、传输安全服务、策略管理工具。其中任何一个都是可选的。
请参阅 Acra 深入/架构以了解有关 Acra 组件的更多信息。请参阅 Acra 深入/数据流,了解更多典型的基于 Acra 的数据流和部署。
让我们看看 AcraServer 最简单的数据流。
AcraServer 作为 SQL 数据库的透明加密/解密代理。应用程序在数据到达数据库之前不知道数据已加密,数据库也不知道有人已加密数据。这就是为什么我们经常称这种模式为“透明加密”。
您有一个与 SQL 数据库对话的客户端应用程序。您在中间添加 AcraServer,作为 SQL 代理,并将应用程序指向它。
这是向数据库写入数据和从数据库读取数据的过程如下所示:
您部署 AcraServer 并对其进行配置:连接到数据库、TLS 证书、选择要加密、屏蔽或标记化的字段、启用 SQL 请求防火墙等。
AcraServer 部署完成后,就可以接受 SQL 请求。
您将客户端应用程序指向 AcraServer 而不是 SQL 数据库。
从应用程序接收 SQL 查询后,AcraServer 解析每个查询并执行安全操作:加密、屏蔽、标记化。为了知道要更改哪些值,AcraServer 使用一个配置文件,您在其中描述了哪些列应该被加密、屏蔽、标记化。
执行操作后,AcraServer 将修改后的查询传递给数据库,并将数据库响应传递回客户端应用程序。假设您选择对电子邮件字段进行加密:这意味着原始字符串被加密到加密容器中并以二进制数据发送到数据库。
当客户端应用程序想要读取数据时,它会向 AcraServer 发送一个 SELECT 查询,然后 AcraServer 将其发送到数据库。
检索数据库响应后,AcraServer 尝试解密、去屏蔽、去令牌化指定字段,并将其返回给应用程序。
应用程序以明文形式接收数据。
除了数据处理操作之外,AcraServer 还分析 SQL 查询:使用内置的可配置 SQL 防火墙阻止不需要的查询,使用有害记录检测 SQL 注入,发送日志和指标,并在可疑情况下向您的运营团队发出警报。
查看指南:将 AcraServer 集成到基础设施中,了解有关 AcraServer 功能及其使用方法的更多信息。
让我们看看 AcraTranslator 的最简单的数据流。
AcraTranslator 使用 HTTP 和 gRPC API 作为加密即服务。应用程序向 AcraTranslator 发送包含数据字段和操作(加密、解密、标记化、去标记化等)的 API 请求。该应用程序负责将加密数据存储在数据库(NoSQL、KV 存储、SQL、AWS S3 – 任何)中,并与 AcraTranslator 通信以将其解密。
AcraTranslator 和 AcraServer 是完全独立的服务器端组件,可以根据您的基础设施一起或单独使用。
您有一个客户端应用程序,它知道要加密、解密、标记化哪些字段以及将它们存储在哪里。您添加 AcraTranslator,并指导应用程序执行 API 调用以使用它。
这是向数据库写入数据和从数据库读取数据的过程如下所示:
您在基础设施中部署 AcraTranslator 并配置 TLS 证书。
部署 AcraTranslator 后,它就可以接受 API 请求。
您的应用程序调用 AcraTranslator 并发送数据字段和对其进行的操作(加密、解密、标记化、去标记化)。
收到 API 请求后,AcraTranslator 执行所需的操作并将结果发送回应用程序。假设应用程序发送“电子邮件”字段和“加密”操作。在这种情况下,原始字符串被加密到加密容器中并作为二进制数据发送回应用程序。
应用程序获取加密数据并将其存储在数据库/数据存储中。
一旦应用程序需要获取明文数据,它就会从数据库/数据存储中读取加密数据,并向 AcraTranslator 发送 API 请求。假设应用程序发送“电子邮件”字段和“解密”操作。在这种情况下,原始数据(二进制 blob)将被解密为字符串并发回应用程序。
除了数据处理操作之外,AcraTranslator 还分析 API 查询:使用有害记录检测入侵、发送日志和指标,并在可疑情况下向您的运营团队发出警报。
查看指南:将 AcraTranslator 集成到基础设施中,了解有关 AcraServer 功能及其使用方法的更多信息。
Acra 是一套组件,其中大部分是“服务器端”,这意味着您可以部署和配置 AcraServer、AcraTranslator 或 AnyProxy,并将客户端应用程序连接到它们。
Acra 组件与众多 RDBMS、对象和 KV 存储、云平台、外部密钥管理系统 (KMS)、负载平衡系统兼容。
云平台 | DigitalOcean、AWS、GCP、Heroku、任何 |
关系型数据库管理系统 | MySQL v5.7+、PosgtreSQL v9.4-v11、MariaDB v10.3; 谷歌云 SQL、亚马逊 RDS |
对象存储 | 文件系统、KV 数据库、Amazon S3、Google Cloud DataStore |
负载均衡 | HAProxy、云平衡器 |
服务器端平台 | Ubuntu、Debian、CentOS、RHEL; 码头工人 |
客户端应用程序语言 | 任何 :) |
开源 Acra 的集成支持有限,更多服务仅在 Acra 企业版中提供。
服务器端 Acra 组件(AcraServer、AcraTranslator、AnyProxy)应在单独的服务器/虚拟机上运行,以实现更好的隔离和划分。密钥管理实用程序和数据库助手通常与 AcraServer、AcraTranslator、AnyProxy 在同一服务器上运行。
服务器端 Acra 组件在大多数 Linux 发行版(Ubuntu、Debian、CentOS)上运行并作为 Docker 映像运行。请注意,服务器端 Acra 组件与作为主机操作系统的 Windows 操作系统不兼容,请考虑使用 Docker。
请参阅入门了解如何安装 Acra 或无需编码即可尝试 Acra。
Acra 可与任何客户端应用程序配合使用。无论您使用什么语言编写应用程序,您都可以将它们连接到 AcraServer(通过 SQL)和 AcraTranslator/AnyProxy(通过 API)来加密、解密、标记和屏蔽数据。
Acra 提供了一组客户端 SDK,仅在特定用例中有用:
AcraWriter – 用于将数据字段加密到 AcraStructs 的 SDK。当应用程序端的数据加密很重要时(用于构建端到端加密数据流或在敌对环境中工作),请使用它。
AcraReader – 用于解密 AcraStructs 数据字段的 SDK。当在应用程序端解密数据很重要时(用于构建端到端加密数据流或在敌对环境中工作),请使用它。
SDK for AcraTranslator – 封装了 AcraTranslator API 的 SDK,使用更方便。
这些 SDK 适用于 Ruby、Python、Go、C++、Node.js、iOS(Swift、ObjC)、Android(Java、Kotlin)、桌面 Java 和 PHP。
请参阅入门了解如何安装 Acra 或无需编码即可尝试 Acra。
Acra 示例项目展示了 Acra 数据保护套件与现有应用程序的集成:基于 Django 和 Ruby on Rails 框架的 Web 应用程序以及简单的 CLI 应用程序。我们采用了知名的应用程序,检测其中的敏感数据并添加了加密层。保护数据对用户来说是完全透明的,并且只需要对基础设施和应用程序代码进行最少的更改。
开发人员和运营人员友好:
运行单个命令来部署应用程序、数据库、Acra 组件、日志和仪表板;
阅读代码更改并了解将加密集成到客户端应用程序中需要花费多少时间;
通过阅读日志、监控 Prometheus 中的指标、检查 Jaeger 中的跟踪器以及观看 Grafana 仪表板来了解 Acra 的工作原理;
检查 Docker-compose 文件、架构方案、数据库表等等。
要求:安装了 Docker 的 Linux 或 macOS。
运行 Acra 示例项目 |
---|
Acra 的最新版本文档、教程和演示可在官方 Cossack Labs 文档服务器上获取。
要初步了解 Acra,您可能需要:
什么是 Acra 以了解事物的概况。
Acra 的安全控制,可了解有关加密、屏蔽、标记化、SQL 防火墙、入侵检测等的更多信息。
典型数据流显示您需要哪些 Acra 组件以及每种组合的优缺点。
阅读有关 Acra 架构和安全设计的说明,以更好地了解使用 Acra 时会得到什么以及 Acra 运行的威胁模型是什么。
您还可以查看 Cossack Labs 工程师的以下演讲的演讲者幻灯片:
“没有魔法的加密,没有痛苦的风险管理”,作者:Anastasiia Voitova。
“Ruby Web 应用程序的数据加密”,作者:Dmytro Shapovalov。
“构建 SQL 防火墙 (AcraCensor):开发人员的见解”,作者:Artem Storozhuk。
运行 Acra 示例项目 |
---|
Acra 可以帮助您遵守当前的隐私法规,例如:
一般数据保护条例 (GDPR)
HIPAA(健康保险流通与责任法案)
DPA(数据保护法)
CCPA(加州消费者隐私法)
以指定形式配置和使用 Acra 将涵盖 GDPR 第 25、32、33 和 34 条中描述的大部分要求以及 HIPAA 的 PII 数据保护要求。了解有关 Acra 和法规的更多信息。
这是 Acra 社区版,Acra 的开源版本,商业和非商业用途均可免费使用。如果您偶然发现错误、看到可能的增强功能或对安全设计有意见,请在问题中告知我们。
还有 Acra 企业版可用。它提供更好的性能、冗余/负载平衡,预先配置了您选择的加密原语(FIPS、GOST),与堆栈中的密钥/秘密管理工具、策略管理、客户端 SDK 集成,并且具有大量供您的运维人员和 SRE 方便操作 Acra 的实用程序和工具。请与我们联系以获取完整的功能列表和报价。
为了保护敏感数据,仅仅需要编译加密代码是不够的。 Acra 不会让您“开箱即用”地遵守所有现代安全法规,也没有其他工具可以做到这一点。
我们通过审核、评估数据流、对数据进行分类、列举风险来帮助企业规划数据安全策略。我们做了实现合规性过程中最困难、最少人参与的部分——将其从“开展业务的成本”转变为“预防风险的安全框架”。
如果您想向 Acra 贡献代码或提供任何其他类型的输入,我们非常欢迎。您贡献的起点就在这里。
如果您是 Acra 用户,请留下简短的反馈。
Acra 社区版作为 Apache 2 开源软件获得许可。
如果您想提出技术问题,请随时提出问题或写信至 [email protected]。
如需与 Cossack Labs Limited 的业务部门联系,请发送电子邮件至 [email protected]。