modern-minister-63236
11/11/2022, 3:11 PMdeny
denies all other allow
effects and things like that). Also it seems like the subject-set rewrite relations are not “visualized” in any of the keto expand commands which makes it difficult to follow the logic sometimes.modern-minister-63236
11/11/2022, 5:48 PMmodern-minister-63236
11/11/2022, 6:05 PM❯ keto relation-tuple get
NAMESPACE OBJECT RELATION NAME SUBJECT
Resource r1 creator Policy:r1-dev
Resource r1 creator Policy:r1-dev
Resource r1 creator Policy:r1-dev
Policy r1-dev bind Role:dev
Policy r1-dev bind Role:dev
modern-minister-63236
11/11/2022, 7:56 PM❯ keto check Policy:r1-dev creator Resource r1
Could not make request: rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "application/json"
Error: rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "application/json"
modern-minister-63236
11/11/2022, 8:04 PM❯ keto check User:Patrik view File private
Could not make request: rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "application/json"
Error: rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "application/json"
modern-minister-63236
11/11/2022, 8:05 PM❯ keto status
SERVING
kubricks-artifact/keto-scratch on ory-migrate [!] via v16.17.0 on ☁️ (eu-central-1) on ☁️
❯ keto relation-tuple get
NAMESPACE OBJECT RELATION NAME SUBJECT
Role dev bind User:u1
Folder keto/src/ parents Folder:keto/
File keto/README.md parents Folder:keto/
File private owners User:Henning
File keto/src/main.go parents Folder:keto/src/
Folder keto/ viewers Group:developer#members
Group developer members User:Henning
Group developer members patrik
Group developer members User:Patrik
Policy r1-dev bind Role:dev
Resource r1 creator Policy:r1-dev
NEXT PAGE TOKEN
IS LAST PAGE true
modern-minister-63236
11/13/2022, 12:44 PMtraverse
call) is not possible in the body of the lambda inside a traverse
call.
Docs:
TransitiveCheck = "this" "." "related" "." RelationName "." "transitive" "(" Var "=>" ( PermissionCall | IncludesCheck ) ")" .
PermissionCall = Var "." "permits" "." PermissionName "(" "ctx" ")" .
Example:
See the permits section of the S3ResourceType
, the can_create
permission has two nested traverse
calls.
class Role implements Namespace {
related: {
principal: Project[]
}
permits = {
can_assume: (ctx: Context) => this.related.principal.traverse((p) => p.related.access.includes(ctx.subject))
}
}
class Policy implements Namespace {
related: {
attach: Role[]
}
}
class S3ResourceType implements Namespace {
related: {
create: Policy[]
edit: Policy[]
read: Policy[]
}
permits = {
can_create: (ctx: Context) => this.related.create.traverse((p) => p.related.attach.traverse((r) => r.permits.can_assume(ctx)))
}
}
modern-minister-63236
11/13/2022, 12:52 PMsteep-lamp-91158
steep-lamp-91158
modern-minister-63236
11/14/2022, 11:26 AMimport { Namespace, SubjectSet, Context } from "@ory/keto-namespace-types"
class User implements Namespace { }
class Group implements Namespace {
related: {
member: (User | Group)[]
}
}
class Project implements Namespace {
related: {
access: (User | Group)[]
}
}
class Role implements Namespace {
related: {
principal: Project[]
}
permits = {
can_assume: (ctx: Context) => this.related.principal.traverse((p) => p.related.access.includes(ctx.subject))
}
}
class Policy implements Namespace {
related: {
allow: Role[]
}
permits = {
allow: (ctx: Context) => this.related.allow.traverse((r) => r.permits.can_assume(ctx))
}
}
class ResourcePolicy implements Namespace {
related: {
trust: (User | Group)[]
}
}
class S3ResourceType implements Namespace {
related: {
create: Policy[]
write: Policy[]
read: Policy[]
}
permits = {
can_create: (ctx: Context) => this.related.create.traverse((p) => p.permits.allow(ctx)),
can_write: (ctx: Context) => this.related.write.traverse((p) => p.permits.allow(ctx)),
can_read: (ctx: Context) =>
this.related.read.traverse((p) => p.permits.allow(ctx)) ||
this.related.write.traverse((p) => p.permits.allow(ctx))
}
}
class S3Resource implements Namespace {
related: {
instance: S3ResourceType[]
write: ResourcePolicy[]
read: ResourcePolicy[]
}
permits = {
can_write: (ctx: Context) =>
this.related.instance.traverse((i) => i.permits.can_write(ctx)) ||
this.related.write.traverse((rp) => rp.related.trust.includes(ctx.subject)),
can_read: (ctx: Context) =>
this.related.instance.traverse((i) => i.permits.can_read(ctx)) ||
this.related.read.traverse((rp) => rp.related.trust.includes(ctx.subject)) ||
this.related.write.traverse((rp) => rp.related.trust.includes(ctx.subject))
}
}
I deleted all relation tuples and now I’m trying to add new ones, but I run into segmentation faults with no interpretable error message:
This is my rbac_`tuples.json` with relation tuples for the above configuration:
[
{
"namespace": "Group",
"object": "ops",
"relation": "member",
"subject": {
"namespace": "User",
"object": "hans"
}
}
]
And I get this error message:
❯ keto relation-tuple create rbac_tuples.json
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x4be0b79]
goroutine 1 [running]:
<http://github.com/ory/keto/ketoapi.(*RelationTuple).ToProto(...)|github.com/ory/keto/ketoapi.(*RelationTuple).ToProto(...)>
/project/ketoapi/enc_proto.go:55
<http://github.com/ory/keto/cmd/relationtuple.transactRelationTuples.func1|github.com/ory/keto/cmd/relationtuple.transactRelationTuples.func1>(0xc000321b80, {0xc0002cc2a0, 0x1, 0x1?})
/project/cmd/relationtuple/delete.go:49 +0x5f9
<http://github.com/spf13/cobra.(*Command).execute(0xc000321b80|github.com/spf13/cobra.(*Command).execute(0xc000321b80>, {0xc0002cc280, 0x1, 0x1})
/go/pkg/mod/github.com/spf13/cobra@v1.5.0/command.go:872 +0x694
<http://github.com/spf13/cobra.(*Command).ExecuteC(0xc000321400)|github.com/spf13/cobra.(*Command).ExecuteC(0xc000321400)>
/go/pkg/mod/github.com/spf13/cobra@v1.5.0/command.go:990 +0x3bd
<http://github.com/spf13/cobra.(*Command).Execute(...)|github.com/spf13/cobra.(*Command).Execute(...)>
/go/pkg/mod/github.com/spf13/cobra@v1.5.0/command.go:918
<http://github.com/spf13/cobra.(*Command).ExecuteContext(...)|github.com/spf13/cobra.(*Command).ExecuteContext(...)>
/go/pkg/mod/github.com/spf13/cobra@v1.5.0/command.go:911
<http://github.com/ory/keto/cmd.Execute()|github.com/ory/keto/cmd.Execute()>
/project/cmd/root.go:74 +0x96
main.main()
/project/main.go:25 +0x69
As for the keto check
command with the userser rewrite example namespace configuration I still get that error from above:
❯ keto check User:Patrik view File private
Could not make request: rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "application/json"
Error: rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "application/json"
steep-lamp-91158
modern-minister-63236
11/14/2022, 11:41 AMmodern-minister-63236
11/14/2022, 11:44 AM❯ keto version
Version: v0.10.0-alpha.0
Build Commit: 52259a30d0be0257f1bb7ef591ae769808450230
Build Timestamp: 2022-09-27T13:05:05Z
and this:
❯ system_profiler SPSoftwareDataType
Software:
System Software Overview:
System Version: macOS 12.6 (21G115)
Kernel Version: Darwin 21.6.0
steep-lamp-91158
steep-lamp-91158
steep-lamp-91158
❯ keto check User:Patrik view File private
Could not make request: rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "application/json"
Error: rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "application/json"
steep-lamp-91158
subject_set
instead of subject
modern-minister-63236
11/14/2022, 2:25 PMsteep-lamp-91158
modern-minister-63236
11/14/2022, 5:24 PMmodern-minister-63236
11/14/2022, 5:46 PMsteep-lamp-91158
modern-minister-63236
11/15/2022, 4:25 PMsteep-lamp-91158
steep-lamp-91158
delightful-fish-58479
02/09/2023, 6:54 PM