HNHacker News
TopNewBestAskShowJobs

EgeAytin

41 karma · joined May 19, 2020

submissionscomments
EgeAytin··on Show HN: Peaka – Seamlessly access your SaaS tools and databases together
It’s a very interesting idea. How does it perform compared to a regular data warehouse?
EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
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 to go with the open source, you would need to maintain it manually as you described. Open to any suggestions on this. We're designing a functionality to add rollback to snapshots[0], but it likely won't be shipped in the near future.

[0]https://docs.permify.co/operations/snap-tokens

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
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 assigning the user as owner.

If the transaction fails, you should delete the malformed relation tuple from Permify to maintain consistency.

Here's an example of how this might look in code:

```

func CreateDocuments(db *gorm.DB) error {

  tx := db.Begin()
  defer func() {
    if r := recover(); r != nil {
      tx.Rollback()
      // if transaction fails, then delete malformed relation tuple
      permify.DeleteData(...)
    }
  }()

  if err := tx.Error; err != nil {
    return err
  }

  if err := tx.Create(docs).Error; err != nil {
     tx.Rollback()
     // if transaction fails, then delete malformed relation tuple
     permify.DeleteData(...)
     return err
  }

  // if transaction successful, write relation tuple to Permify
  permify.WriteData(...)

  return tx.Commit().Error
}

```

Although this is an anti-pattern, this approach ensures that if the transaction in the application database fails and is rolled back, the corresponding data in Permify is also deleted, preventing inconsistencies.

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
Firstly, while IAMs often offer some level of authorization capabilities, they are not as flexible or fine-grained as dedicated authorization systems like Permify.

Therefore, customizing complex permission logic (such as hierarchical relationships, user group, etc.) can be challenging in IAMs. As an example, Keycloak's Authorization Service supports RBAC and ABAC it does not support ReBAC.

Another point is that authorization as a service solutions are focused entirely on authorization. This means they provide not only fine-grained permissions but also tooling and functionality to ease testing and observability of the authorization system.

Also Permify leveraging Google’s Zanzibar scalable data model and unified ACL (Access Control List) approach, enables the creation of a centralized authorization service capable of handling high volumes of data and access checks across your microservices stack.

Still, it's worth mentioning that if you have a basic authorization system or need, it makes total sense to use the solutions you mentioned for handling the authorization part as well. However, if you want to scale your authorization, especially in a microservices environment, I would suggest trying one of the authz providers instead.

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
While we don’t have exact solution or workflow for handling this case, I can suggest an approach that might help.

Assuming that you apply pagination to the search results, you can send the results to Permify one by one, as you'll only be displaying a limited number to the user. Permify is designed to handle millions of requests per second, so this approach won't cause any issues for your specific case.

While this solves the issue, sending multiple checks at once could create a problem as the number of items on the page increases, though it shouldn't be much of a problem even 500 items.

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
Hi I'm one of the founders at Permify. Thanks for bringing up the comparison. I’ve actually put together some documentation[0] that outlines the differences between various Zanzibar implementations, including Keto, OpenFGA, SpiceDB, and Topaz. Planning to add Warrant and others soon as well. Hope that helps.

[0] https://permify.notion.site/Differentiation-Between-Zanzibar...

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
Actually, it also externalizes and centralizes the authorization data, so it won't work without the knowledge contained in the application database that could affect any authorization decision.

Permify provides a Permission Database[0] that unifies the authorization data (as a collection of Access Control Lists - ACLs) in a database of your choice, serving as the single source of truth for all authorization queries and requests via the Permify API.

[0]: https://docs.permify.co/getting-started/sync-data

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
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: Our architecture is tenancy-based, which means you can create custom authorization models and relation tuples accordingly for different tenants and manage them in a single place. https://docs.permify.co/use-cases/multi-tenancy

Contextual Permissions: we have a functionality that permissions can be dynamically added to access check requests. When you send these relations along with your requests, they get processed alongside existing relations in the database and will return a result: https://docs.permify.co/operations/contextual-tuples

Schema Management: We're taking an approach that help engineering teams to ease and streamline the management and collaboration of their authorization logic. We have features like:

  - Schema Staging: Handle authorization model (schema) changes at different stages and deploy schemas with our GitOps workflow, specifically designed to approve, merge, and monitor schema changes.
  - Partial Schema Update: Gives you the ability to update a schema partially without needing to change the entire schema.
  - Data Bundles: Handle multiple data creation and deletion actions in your applications.
EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
User log-in and sign-up are considered authentication but from an authorization perspective Permify domain specific language also supports coarse grained roles (RBAC). See following playground example[0]. Also don't hesitate to join our Discord community[1] for further questions.

[0] https://play.permify.co/?s=rbac

[1] https://discord.com/invite/n6KfzYxhPp

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
You can use Permify for multi-tenant authorization. Specifically, you can create custom authorization schemas and authorization data for different tenants and manage them in a single place.

To learn more, refer to our docs[0]

[0]:https://docs.permify.co/use-cases/multi-tenancy

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
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 database option. We support multi-region databases that share the same interface as PostgreSQL, such as Amazon Aurora. CockroachDB is also on our roadmap

[0]https://discord.com/invite/n6KfzYxhPp

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
Authorization libraries can be useful but often fall short in key areas. They typically lack fine-grained access control, limiting their ability to handle complex permissions. Casbin does provide RBAC and ABAC but as far as I know they don't support ReBAC.

Libraries was designed to operate directly on an application’s existing data structures without imposing a standardized model for how that data should be organized.

Direct interaction with diverse data structures can lead to inefficiencies and performance bottlenecks. Without a standardized model, the library might not optimize data access and manipulation as effectively as it could with a uniform data structure.

Additionally, they struggle in microservices architectures, creating challenges in maintaining consistent security policies across services. In a microservices architecture, each service might require access to the authorization library, but replicating this library across services can lead to maintenance, synchronization, and consistency challenges.

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
Forget to mention, thanks for the reminding. Permify also supports zookies[0], here is the official docs for it.

[0]https://docs.permify.co/operations/snap-tokens

EgeAytin··on Show HN: Permify 1.0 – Open-source fine-grained authorization service
Hi there, Ege from Permify here.

Here are the major differences,

- Better Performance: Observed guess, not necessarily a fact: Many folks have come to us from OpenFGA due to latency and performance issues. We’re implementing various levels of caching mechanisms to meet the required performance. We have also documented the differences in caching between us and OpenFGA in the following document: https://permify.notion.site/Cache-Differences-Between-Permif....

- Schema Management: We're taking an approach that help engineering teams to ease and streamline the management and collaboration of their authorization logic. We have features like:

  - Schema Staging: Handle authorization model (schema) changes at different stages and deploy schemas with our GitOps workflow, specifically designed to approve, merge, and monitor schema changes.
  - Partial Schema Update: Gives you the ability to update a schema partially without needing to change the entire schema.
  - Data Bundles: Handle multiple data creation and deletion actions in your applications.
EgeAytin··on Show HN: Permify Open-source Authorization Service V2 is out
Thanks for the support! I'm Ege, one of the co-founders of Permify.

About the diffs, right now there are some approach differences on some features such as modeling, data filtering, auditing, etc but the main difference is we’re a fully tenancy-based solution, which gives the ability to customize the authorization for each tenant's specific needs.

Particularly, in Permify you can create custom authorization schema and relation tuples accordingly for the different tenants and manage them in a single place. We're highly invested in building and managing custom roles and permissions as a part of fine-grained access control.

EgeAytin··on Show HN: Permify Open-source Authorization Service V2 is out
Not 100% sure I understand what you meant with "reflection" but to give a quick overview on data management:

Permify stores authorization data as relations in a database you prefer and perform access checks (and other queries as well) according to stored relations/authz data. And since user identities exist/stored in providers, they should be mapped Permify to store necessary authorization data/relations. So providers can feed Permify but not vice versa.

For more information about how we're managing authorization, check our docs: https://docs.permify.co/docs/getting-started/sync-data

EgeAytin··on Show HN: Permify Open-source Authorization Service V2 is out
Hi Ege here - another founder of Permify.

- 1. Which integration is your most heavily used right now?

Currently, we don't have any official integration. But we're seeing use cases with popular authentication or identity providers to map user identities, roles, groups, etc.

- 2. Classic premature optimization question, but how easy is it to scale out Permify?

You can horizontally scale Permify Service with positioning Permify instances behind of a load balancer, also we have an internal cache mechanism that follows MVCC (multiple version concurrency control) pattern & Snap tokens to scale in terms of performance. Lastly, we’ll add consistent hashing with Hash Rings (https://itnext.io/introducing-consistent-hashing-9a289769052...), it’s in our roadmap.

- 3. Could Permify be used to do something like switch between Auth0 and OneLogin for example?

Actually can’t, Permify doesn’t handle authentication or identity management. As I stated in the first question, you can use them only to feed/map Permify with user information (attributes, identities, etc) to provide end-to-end access control structure across your stack.

EgeAytin··on Show HN: Keep – Open-source alerting CLI
I asked for 2. and 3. thanks for clarifying.
EgeAytin··on Show HN: Keep – Open-source alerting CLI
Hi guys, congrats on the launch. I wondered where can I store or observe my alerts. I was just confused since it is open-source.
EgeAytin··on Show HN: ChatGPT CLI, interactive or file based sessions with context and moods
interesting, any thoughts on how can it be helpful on code-related queries? In particular, I'm using chatgtp to get code patterns/examples and I would choose to ask directly from cli but I prefer to get more organized response instead of getting plain text for code examples.
EgeAytin··on Show HN: Permify – Open-source authorization service based on Google Zanzibar
Hey HN! Ege from Permify here. Permify is an open-source authorization service and policy engine based on Google-Zanzibar[0] with our own twist. Me and my co-founders have known each other for years since high school. And we love building things.

We have both worked with fortune 500 companies to small businesses [1], and every authorization system was unique. Yet we always tackle the same problems.

- Modeling the authorization logic was hard. As the product grows things get complicated very fast. So, it’s challenging to design a model that’s both easy to start with and future-proof. [2] - Designing the architecture was a dread. It’s not a huge problem when you have a monolith. But when it comes to micro-services it’s a nightmare since authorization data is a subset of application data. [3] - Authorization checks occur in so many places; like user interfaces, routers, API endpoints, database queries… So, choosing where to enforce authorization, and loading the authorization data is hard.

So, Permify syncs your authorization data as relation tuples with CDC(Change Data Capture) from Databases you want to a DB you point at.[4] And based on this data you can get boolean returns for your access control checks.

I know many alternatives had launched at HN over the course of time. So what’s the twist. What we concurrently encountered was orchestrating the authorization data was a nightmare.

What you can except from Permify in following months;

- Message broker to support more Databases. - Redis Cache support. - Better debugging and auditing tools such as transparency logs. - More compatibility with the Zanzibar paper.

[0]: https://research.google/pubs/pub48190/

[1]: https://www.permify.co/post/why-decouple-authorizations

[2]: https://medium.com/building-carta/authz-cartas-highly-scalab...

[3]: https://medium.com/airbnb-engineering/himeji-a-scalable-cent...

[4]: https://dbconvert.com/blog/postgresql-change-data-capture-cd...

EgeAytin··on Startups, this is how design works (2012)
Feeling like optimization of design is overkill for early stage startups. In my perspective, if product/service can express themselves clearly with simple words, they shouldn't worry about perfect design.
EgeAytin··on Apple Unveils M2
Despite these improvements, it's not enough to replace M1 Pro when considering the price/performance
EgeAytin··on Show HN: Open-Source Role-Based Access Management for React
Hey Folks!

It's Ege from Permify. We're building an Plug-&-Play API for Authorizations and Open-source tools for access control.

We have interviewed bunch of developers, and as developers we know how hard authorizations can get.

But there are 2 evident reasons that makes Authorizations hard.

1. Since it happens so many places, it's hard to make a unified decision and enforce them. 2. When authorization logic is in your business logic or code, it clutters your so much that it becomes impossible to change both decision architecture and code.

But we know not everyone needs a powerful authorization system, or our dashboard. Sometimes just a few simple roles are enough at the beginning.

Things got messy pretty quickly. You ship new features that require more granularity, and your users start asking for more reliability on the access control part.

And boom! You’re in a technical depth that makes development 10x slower.

That’s why we built the React Roles library. It keeps your authorizations in line until you need more complex authorizations and decoupled logic.

React Role is lightweight role based access management solution which provides components, hooks, and helper methods for controlling access checks and user permissions throughout your entire React application without any backend connection.

EgeAytin··on Show HN: Developer API for Granular Authorization
Hey Everyone, Ege from Permify here.

So, It's easy to just create few tables and connected to roles. But when you start adding more features, and eventually more dependence things tend to get out of control. You create tons of "if"s, your code turn into spaghetti and developement cycles becomes frustrating just because of this chores which is even not your core product.

Been there done that. We have build dozens of product like that, and once you get over certain point technical debt is crazy. It turns joyful code into a hell.

That's why we build Permify.

Permify is a developer API for access control. We decouple authorzation logic from your code so you can ship faster without interfering with access control.

And once you need access control; you can granularly build, modify, and test your authorizations through a dashboard and simple API calls.

We’re taking policy as code approach powered by OPA and REGO. We make it simple to create complex access control policies with simplified policy as code approach by using our policy enforcer that turns our code into REGO policies and eventually validate through OPA rule engine?

And this is our Developer Playground designing your granular access control system. It makes sense to share this since it's something you can play and experiment with without any commitment.

I'll be around to answer any questions.

EgeAytin··on Show HN: Appwrite – Open-Source and Self Hosted Firebase Alternative
Great work, I just cant see authorization feature. How does Appwrite handles this key concept right now ?
EgeAytin··on Show HN: Plaraphy – Paraphrasing API and Tool for Free
Hey there, on each try the editor gives error "Get Pro for more characters" I cant try :(
EgeAytin··on Show HN: The Clock App – See the Time and Weather in Places You Care About
Yess that worked!!. Btw It would be good to explain this on info part, placeholder is "Select.." and on click it says no options so at fist glance it seemed like a select box to me :(
EgeAytin··on Show HN: I built an open-source web hosting platform for static sites
Do you have plans to host static sites which builded with plain HTML it would be awesome.
EgeAytin··on Show HN: The Clock App – See the Time and Weather in Places You Care About
Heyy, I just cant use the app the selectbox is empty am I missing something?
Page 1 of 2Next →