Skip to content

Commit 67b67a8

Browse files
committed
Use SpiceDB rather than Keto
1 parent e9a386c commit 67b67a8

File tree

10 files changed

+68
-215
lines changed

10 files changed

+68
-215
lines changed

demo/keto/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

demo/keto/README.md

Lines changed: 0 additions & 50 deletions
This file was deleted.

demo/keto/keto.yml

Lines changed: 0 additions & 16 deletions
This file was deleted.

demo/keto/migrate.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

demo/keto/namespaces.keto.ts

Lines changed: 0 additions & 56 deletions
This file was deleted.

demo/keto/package.json

Lines changed: 0 additions & 5 deletions
This file was deleted.

demo/keto/pnpm-lock.yaml

Lines changed: 0 additions & 16 deletions
This file was deleted.

demo/keto/relationships.json

Lines changed: 0 additions & 32 deletions
This file was deleted.

docker-compose.yml

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -137,55 +137,54 @@ services:
137137
- PGUSER=username
138138
- PGPASSWORD=password
139139
- PGDATABASE=postgis
140-
- POSTGRES_MULTIPLE_DATABASES=accesscontroldb
140+
- POSTGRES_MULTIPLE_DATABASES=spicedb
141141
ports:
142142
- "${MY_DOCKER_IP:-127.0.0.1}:5439:5432"
143143
command: postgres -N 500
144144
volumes:
145145
- ./dockerfiles/scripts/docker-postgresql-multiple-databases.sh:/docker-entrypoint-initdb.d/docker-postgresql-multiple-databases.sh
146146
- ./.pgdata:/var/lib/postgresql/data
147147

148-
keto-migrate:
149-
image: oryd/keto:v0.12.0-alpha.0
150-
command: migrate up -y
148+
spicedb-migrate:
149+
image: authzed/spicedb
150+
command: migrate head
151+
restart: on-failure
151152
environment:
152-
- LOG_LEVEL=debug
153-
- DSN=postgres://username:password@database:5432/accesscontroldb?sslmode=disable
154-
volumes:
155-
- type: bind
156-
source: demo/keto
157-
target: /home/ory
153+
- SPICEDB_DATASTORE_ENGINE=postgres
154+
- SPICEDB_DATASTORE_CONN_URI=postgres://username:password@database:5432/spicedb?sslmode=disable
158155
depends_on:
159156
- database
160-
restart: on-failure
161157

162-
keto:
163-
image: oryd/keto:v0.12.0-alpha.0
164-
command: serve -c /home/ory/keto.yml
165-
environment:
166-
- DSN=postgres://username:password@database:5432/accesscontroldb?sslmode=disable
167-
volumes:
168-
- type: bind
169-
source: demo/keto
170-
target: /home/ory
158+
spicedb:
159+
image: authzed/spicedb
160+
command: serve --http-enabled
161+
restart: always
171162
ports:
172-
- "4466:4466"
173-
- "4467:4467"
163+
- 8443:8443 # HTTP API
164+
- 9090:9090 # Prometheus metrics
165+
- 50051:50051 # gRPC API
166+
environment:
167+
- SPICEDB_GRPC_PRESHARED_KEY="eoapi-secret-token"
168+
- SPICEDB_DATASTORE_ENGINE=postgres
169+
- SPICEDB_DATASTORE_CONN_URI=postgres://username:password@database:5432/spicedb?sslmode=disable
170+
- SPICEDB_HTTP_ENABLED=true
174171
depends_on:
175-
- keto-migrate
176-
restart: on-failure
172+
- spicedb-migrate
177173

178-
keto-init:
179-
image: oryd/keto:v0.12.0-alpha.0
180-
command: relation-tuple create /home/ory/relationships.json --insecure-disable-transport-security
174+
spicedb-init:
175+
image: authzed/zed
176+
command: import file:///home/spicedb/zed.yaml
177+
restart: on-failure
181178
environment:
182-
- KETO_READ_REMOTE=keto:4466
183-
- KETO_WRITE_REMOTE=keto:4467
179+
- ZED_ENDPOINT=spicedb:50051
180+
- ZED_INSECURE=true
181+
- ZED_TOKEN=eoapi-secret-token
184182
volumes:
185183
- type: bind
186-
source: demo/keto
187-
target: /home/ory
188-
restart: on-failure
184+
source: runtime/spicedb
185+
target: /home/spicedb
186+
depends_on:
187+
- spicedb
189188

190189
networks:
191190
default:

runtime/spicedb/schema.zed

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
definition user {}
2+
3+
definition anonymous_user {}
4+
5+
definition team {
6+
// Recursive team structure to support groups of groups
7+
relation owner: user | team#owner_or_member
8+
relation member: user
9+
permission owner_or_member = member + owner
10+
}
11+
12+
definition collection {
13+
// Recursive collection structure to support collections of collections
14+
relation collection: collection
15+
relation owner: user | team#owner_or_member
16+
relation editor: user | team#owner_or_member
17+
relation reader: user | team#owner_or_member | user:*
18+
19+
// Collection-level permissions
20+
permission read = reader + update
21+
permission update = editor + editor->owner_or_member + delete
22+
permission delete = owner + owner->owner_or_member
23+
permission make_public = delete
24+
permission transfer_ownership = owner + owner->owner_or_member
25+
26+
// Item-level permissions
27+
permission add_item = update
28+
}
29+
30+
definition item {
31+
relation collection: collection
32+
relation reader: user | team#owner_or_member | anonymous_user:*
33+
// Permissions are mostly inherited from collection, except support for one-off read permissions
34+
permission read = reader + collection->read
35+
permission update = collection->update
36+
permission delete = collection->update
37+
}

0 commit comments

Comments
 (0)