Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aprismatic/prismadb
Prisma/DB public releases and documentation.
https://github.com/aprismatic/prismadb
database database-proxy db-proxy encrypted-database encryption-tool homomorphic-encryption proxy security
Last synced: about 1 month ago
JSON representation
Prisma/DB public releases and documentation.
- Host: GitHub
- URL: https://github.com/aprismatic/prismadb
- Owner: aprismatic
- Created: 2017-03-03T02:04:07.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2020-08-24T07:55:09.000Z (over 4 years ago)
- Last Synced: 2024-08-04T00:04:14.222Z (5 months ago)
- Topics: database, database-proxy, db-proxy, encrypted-database, encryption-tool, homomorphic-encryption, proxy, security
- Language: PowerShell
- Size: 333 KB
- Stars: 33
- Watchers: 6
- Forks: 1
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Support: docs/supported-clients.md
Awesome Lists containing this project
- awesome-he - Prisma/DB - Security layer for relational database systems. (Databases)
README
# Prisma/DB
[Prisma/DB](https://prismadb.com/) (https://prismadb.com/) is a cryptographic security layer for relational database systems, that currently supports Microsoft SQL Server, MySQL, MariaDB, PostgreSQL and CockroachDB.
Started as a research project in [Nanyang Technological University](http://www.ntu.edu.sg/Pages/home.aspx) (Singapore), it is now a fast-growing product developed by [Aprismatic](https://aprismatic.com).**Links**: [📚 Documentation](https://prismadb.readthedocs.io/en/latest/) | [📦 Docker images](https://prismadb.readthedocs.io/en/latest/docker-images/) | [Prisma/DB website](https://prismadb.com/) | [Aprismatic website](https://aprismatic.com)
[![Documentation Status](https://readthedocs.org/projects/prismadb/badge/?version=latest)](https://prismadb.readthedocs.io/en/latest/?badge=latest)
![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/aprismatic/prismadb?include_prereleases)
[![](https://img.shields.io/docker/pulls/aprismatic/prismadb-proxy-mysql.svg)](https://hub.docker.com/r/aprismatic/prismadb-proxy-mysql "MySQL")
[![](https://img.shields.io/docker/pulls/aprismatic/prismadb-proxy-mssql.svg)](https://hub.docker.com/r/aprismatic/prismadb-proxy-mssql "SQL Server")
[![](https://img.shields.io/docker/pulls/aprismatic/prismadb-proxy-postgres.svg)](https://hub.docker.com/r/aprismatic/prismadb-proxy-postgres "PostgreSQL")## Quickstart Guide
The easiest way to try out Prisma/DB is to use Docker containers.
This will also keep your computer clutter-free.
For a more comprehensive guide on working with Prisma/DB CE or Enterprise, please head over to [documentation](https://prismadb.readthedocs.io/en/latest/getting-started-proxies/).**Important for Windows users**: Enabling Hyper-V (required by Docker for Windows) will disable VirtualBox or any other virtualization manager.
You won't be able to start your VirtualBox VMs until you disable Hyper-V (or migrate your VMs to Hyper-V).### 1. Installing Docker
Install Docker by following the instructions at https://docs.docker.com/install/.On Windows, after the installation is finished, make sure that Docker is switched to Linux containers.
It could be done by right-clicking the Docker icon in the taskbar and choosing the respective menu item.On Linux, Docker Compose may not be installed automatically with Docker,
you can follow the instructions at https://docs.docker.com/compose/install/ to install Compose.### 2. Launching Prisma/DB Demo Suite
To launch the demo suite you will need to open your command line interface. On Windows, you may launch PowerShell; on Mac, you can launch Terminal app; if you are on Linux, you sure know what to do :)
**1)** Obtain the Docker Compose file:
Download/save the following YAML Docker Compose file to your machine:
[/sample-scripts/postgres/docker-compose/linux/docker-compose.yml](https://github.com/aprismatic/prismadb/blob/master/sample-scripts/postgres/docker-compose/linux/docker-compose.yml) [[Raw File](https://raw.githubusercontent.com/aprismatic/prismadb/master/sample-scripts/postgres/docker-compose/linux/docker-compose.yml)]This Docker Compose file will start a PostgreSQL server with Prisma/DB UDFs, as well as the Prisma/DB Proxy (trial mode) for PostgreSQL. Importing/exporting of encryption keys is disabled in the trial mode of Prisma/DB Proxy, but other than that, it is a fully featured build.
**2)** Run the containers in detached mode:
`> docker-compose up -d`
**3)** Launch Psql command line tool to connect to the database through the Prisma/DB Proxy:
`> docker exec -it prismadb_postgres_db psql -U postgres -h prismadb_postgres_proxy -p 4000 testdb`
Use password `Qwer!234` to authenticate as `postgres` user, and enter `\q` anytime to quit.
**4)** Use some of the following queries to try out the encrypted database:
```SQL
CREATE TABLE t1
(
a INT ENCRYPTED FOR (MULTIPLICATION, ADDITION, RANGE),
b INT ENCRYPTED FOR (MULTIPLICATION, ADDITION, RANGE),
c INT,
d VARCHAR(30) ENCRYPTED FOR (STORE, SEARCH),
e VARCHAR(30)
);-- Display column details
SHOW COLUMNS FROM t1;INSERT INTO t1 (a, b, c, d, e) VALUES
( 1, 2, 3, 'Hello', 'Prisma/DB'),
(12, 0, 7, 'Test', 'data'),
( 0, 2, 123, 'This is encrypted', 'And this is not'),
(71, 67, 13, 'Last', 'row');-- Arithmetic operations and search over encrypted values
SELECT a, b, a + b, b * a, (b * a) + b, c, d, e
FROM t1
WHERE b = 2;
```**5)** Stop and remove containers:
`> docker-compose down`
---
Please note that Prisma/DB currently supports only a subset of the full SQL.
We are constantly working to support more.
If you encounter a problem with your queries, please head to the Issues section and let us know!Connect to the database server directly (it's at `localhost:5432`) using any database management tool (HeidiSQL, Psql, etc.) or Psql directly from the PostgreSQL container:
`> docker exec -it prismadb_postgres_db psql -U postgres -h 127.0.0.1 -p 5432 testdb`
and you would be able to see the partially encrypted database as it is stored on the server, with the data in selected columns being encrypted.