[{"data":1,"prerenderedAt":313},["ShallowReactive",2],{"project-41311489":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":42,"post_text":45,"what":46,"said":85,"maker_in_thread":186,"shape":188,"grid":191,"attempts":269,"same_week":276,"maker_shows":35,"maker_hidden":305,"reader_version":306,"card":307},"41311489","Permify 1.0","Open-source fine-grained authorization service","title","Show HN: Permify 1.0 – Open-source fine-grained authorization service","https:\u002F\u002Fgithub.com\u002FPermify\u002Fpermify","github.com","ucatbas",1724255920,2024,154,34,547,3515,16,"notable","infrastructure","authorization service","api",[24,25,26,27,28],"authorization","zanzibar","rebac","access control","fine-grained permissions","curious",0.123,{"positive":32,"neutral":33,"mixed":34,"critical":35},4,28,0,1,33,{"idea":38,"performance":39,"docs":40,"design":41},{"positive":34,"critical":35},{"positive":34,"critical":34},{"positive":34,"critical":34},{"positive":34,"critical":34},[43,43,43,43,44,43,43,43,43,43,43,43,43,43,35,43,43,34,43,43,43,43,43,43,43,43,43,44,43,43,43,43,44,44],3,5,"Permify was born out of our repeated struggles with authorization.\n\nLike any other piece of software, authorization starts small but as things grow scaling it becomes a real pain and begins to hinder product development processes.\n\nAd-hoc authorization systems scattered throughout your app’s codebase are hard to manage, reason about, and iterate on as the company grows.\n\nAlso you will need to have more specific access controls as things grow. Traditional approaches like RBAC is inefficient for defining granular permissions such as resource-specific, hierarchical, or context-aware permissions.\n",{"problem":47,"audience":53,"pricing":58,"motivation":59,"time_to_build":58,"stack":63,"openness":82,"stage":83,"team_size":84},{"value":48,"source":49,"evidence":50},"Authorization logic becomes hard to manage, scale and reason about as products grow","maker",[51],{"id":52},"post",{"value":54,"source":55,"evidence":56},"Developers building scalable, multi-service applications","inferred",[57],{"id":52},null,{"value":60,"source":49,"evidence":61},"Repeated struggles with authorization in their own work",[62],{"id":52},[64,72],{"value":65,"source":66,"evidence":67},"PostgreSQL (production database option)","commenter",[68],{"id":69,"by":70,"text":71},"41313142","EgeAytin","Thanks for the support, and don't hesitate to join our Discord community[0] for further questions. Regarding multi-region deployment, we offer PostgreSQL as the production…",{"value":73,"source":66,"evidence":74},"Go",[75,79],{"id":76,"by":77,"text":78},"41339214","aduffy","Very cool! At first glance this looks a lot like SpiceDB, which is also a Go service based on Zanzibar. Excited to see more entrants in the space, can you talk a bit about what…",{"id":80,"by":70,"text":81},"41349282","In a standard relational based databases, the suggested place to write relationships to Permify is sending the write request in database transaction of the client action: such as…","open_source","launched","unknown",{"praise":86,"objections":104,"requests":126,"questions":137,"alternatives":165},[87,98],{"value":88,"source":66,"evidence":89},"Open source approach to a critical problem",[90,94],{"id":91,"by":92,"text":93},"41312797","nkko","Authorization is such a critical yet underappreciated part of system design. It's great to see open source projects tackling this space. I'll definitely be checking this out for…",{"id":95,"by":96,"text":97},"41318100","ijebusoma","Permify is a great product solving real auth problems, and the best part? Open source!",{"value":99,"source":66,"evidence":100},"Good Zanzibar-based design with multi-tenancy and contextual permissions",[101],{"id":102,"by":70,"text":103},"41346771","Hi thanks for the support! I'm one of the founders at Permify. Both products may seem alike at first glance as you described, but there are a few key differences, Multi Tenancy:…",[105,119],{"value":106,"source":66,"evidence":107},"Centralizing authorization data is hard to keep in sync with application data",[108,112,116],{"id":109,"by":110,"text":111},"41356542","gneray","This is the single-biggest drawback to purely Zanzibar-based architectures. The problem with requiring the authorization system to own all authorization data is that there’s…",{"id":113,"by":114,"text":115},"41348826","akrauss","There is one thing I'd like to know about this general approach of centralising permission data. I guess my question applies to Permify as well as to its various competitors:…",{"id":117,"by":114,"text":118},"41349550","You call this an anti-pattern (and rightfully so, since cluttering application code like this is a nightmare), but then what is the better pattern? In an app with >100 entities…",{"value":120,"source":66,"evidence":121},"Crowded space with many Zanzibar implementations",[122],{"id":123,"by":124,"text":125},"41346907","Sytten","How do you compare to the many other Zanzibar open source implementations like keto, spicedb, topaz, warrant, etc. It seems like it is a crowded space.",[127,131],{"value":128,"source":66,"evidence":129},"Support for CockroachDB and other multi-region databases",[130],{"id":69,"by":70,"text":71},{"value":132,"source":66,"evidence":133},"Rollback support for snapshots",[134],{"id":135,"by":70,"text":136},"41350812","Actually we have webhooks in our cloud offering to streamline and address this. Since this post is about our open source, I didn't mention it as an option. However, if you choose…",[138,142,149],{"value":139,"source":66,"evidence":140},"How it handles multi-region deployments",[141],{"id":91,"by":92,"text":93},{"value":143,"source":66,"evidence":144},"How to filter search results by permissions",[145],{"id":146,"by":147,"text":148},"41346965","rzzzt","Let's say I want to use the model outlined in the \"File Storage\" example. I set up and populate my permission DB accordingly with file permissions, organization and group…",{"value":150,"source":66,"evidence":151},"Comparison with OpenFGA, SpiceDB, Casbin and Keycloak",[152,156,157,161],{"id":153,"by":154,"text":155},"41311775","cmcconomy","How does this compare to auth0's OpenFGA (based on Zanzibar)? https:\u002F\u002Fopenfga.dev",{"id":76,"by":77,"text":78},{"id":158,"by":159,"text":160},"41312809","mindigow","So is this something similar to casbin? What are benefits and caveats of permify compared to auth libraries like casbin?",{"id":162,"by":163,"text":164},"41348323","shahargl","How does it play with Keycloak's Authorization Services? Or in other words - why should I choose permify over Keycloak?…",[166,170,174,178,182],{"value":167,"source":66,"evidence":168},"OpenFGA",[169],{"id":153,"by":154,"text":155},{"value":171,"source":66,"evidence":172},"SpiceDB",[173],{"id":76,"by":77,"text":78},{"value":175,"source":66,"evidence":176},"Casbin",[177],{"id":158,"by":159,"text":160},{"value":179,"source":66,"evidence":180},"Keycloak Authorization Services",[181],{"id":162,"by":163,"text":164},{"value":183,"source":66,"evidence":184},"Keto and Topaz",[185],{"id":123,"by":124,"text":125},{"comments":34,"answered":34,"key":187},[],{"commenters":189,"max_depth":32,"maker_replies":34,"first_comment_mins":33,"lifespan_hours":190},18,117,[192,194,196,198,199,203,205,208,211,214,217,219,220,223,225,227,229,231,234,235,236,237,238,240,242,244,248,250,252,254,256,260,262,265],[91,34,43,193,92,34],"project\u002Fneutral\u002Fnone",[69,34,43,195,70,34],"maker\u002Fneutral\u002Fnone",[76,35,43,197,77,34],"project\u002Fneutral\u002Fidea",[102,35,43,197,70,34],[200,35,44,201,202,34],"41355343","maker\u002Fpositive\u002Fnone","rad_gruchalski",[153,204,43,197,154,34],2,[206,204,43,207,70,34],"41311839","project\u002Fneutral\u002Fperformance",[209,204,43,197,210,34],"41312443","akajla",[212,204,43,213,70,34],"41312674","project\u002Fneutral\u002Fdocs",[215,43,43,197,216,34],"41342152","m3h",[218,43,43,197,70,34],"41346827",[146,43,43,197,147,34],[221,43,43,197,222,34],"41347314","rahkiin",[224,43,43,207,70,34],"41347389",[109,43,35,226,110,34],"project\u002Fcritical\u002Fidea",[113,32,43,228,114,34],"project\u002Fneutral\u002Fdesign",[230,32,43,228,147,34],"41349157",[232,32,34,233,114,34],"41349566","commenter\u002Fneutral\u002Fdesign",[80,32,43,228,70,34],[117,32,43,228,114,34],[135,32,43,228,70,34],[123,44,43,197,124,34],[239,44,43,197,70,34],"41347104",[162,241,43,197,163,34],6,[243,241,43,197,70,34],"41349144",[245,246,43,197,247,34],"41317726",7,"DidYaWipe",[249,246,43,213,70,34],"41318020",[251,246,44,201,247,34],"41323752",[158,253,43,197,159,34],8,[255,253,43,197,70,34],"41313044",[257,258,43,197,259,34],"41312980",9,"ttsemih",[261,258,43,213,70,34],"41313167",[95,263,44,264,96,34],10,"project\u002Fpositive\u002Fnone",[266,267,44,201,268,34],"41313623",11,"cryogenicplanet",[270,275],{"id":271,"t":272,"points":273,"comments":274},"32096610",1657809494,122,25,{"id":4,"t":12,"points":14,"comments":15},[277,282,287,292,297,302],{"id":278,"name":279,"points":280,"category":281},"41284703","PgQueuer",376,"languages",{"id":283,"name":284,"points":285,"category":286},"41254740","sqlean-time",274,"data",{"id":288,"name":289,"points":290,"category":291},"41291700","Srcbook",267,"dev_tools",{"id":293,"name":294,"points":295,"category":296},"41307815","Handwriter.ttf",191,"creative",{"id":298,"name":299,"points":300,"category":301},"41252731","polyfight.io",171,"games",{"id":303,"name":304,"points":300,"category":296},"41271014","Blender shortcuts",false,"v2",{"id":308,"name":5,"line":6,"ai":305,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":309,"top":18,"kw":310,"maker":11,"domain":10,"tier":19,"attempts":204,"strip":311,"url":9,"mix":312,"praise":88,"objection":106,"sub":21},41311489,0.12,[24,25,26,27,28],"3333533333333313303333333335333355",[32,33,34,35],1793991098460]