🙆♀️
SpiceDBのスキーマパターンのメモ
SpiceDBで認可制御するときにベースとなるスキーマのパターンをユースケースに合わせてメモ
SpiceDBのスキーマやリレーションは公式のプレイグラウンドで検証できる.
ロール/グループパターン
ロールに対する認可
基本のパターン
definition user{}
definition document {
relation reader: user
relation writer: user
permission read = reader
permission write = writer
}
グループに対する認可
definition user{}
definition group {
relation reader: user
relation writer: user
permission read_document = reader + writer
permission write_document = writer
}
definition document {
relation reader: user
relation writer: user
relation docgroup: group
permission read = reader + docgroup->read_document
permission write = writer + docgroup->write_document
}
階層パターン
フォルダの認可
親フォルダの権限を持っているユーザは子フォルダの権限も持つ,というユースケースに対応する場合.
definition user{}
definition folder {
relation reader: user
relation writer: user
relation parent: folder
permission read = reader + writer + parent->read
permission write = writer + parent->write
}
フォルダおよびファイルの認可
definition user{}
definition folder {
relation reader: user
relation writer: user
relation parent: folder
permission read = reader + writer + parent->read
permission write = writer + parent->write
}
definition file {
relation reader: user
relation writer: user
relation folder: folder
permission read = reader + writer + folder->read
permission write = writer + folder->write
}
他のユースケースを思いついたら追記する.
Discussion