受 Google Zanzibar 启发,一个为开发人员构建的高性能、灵活的授权/权限引擎

大家好,又见面了,我是 GitHub 精选君!

背景介绍

在开发过程中,我们经常会遇到权限管理的问题。而这个问题正是 OpenFGA 项目正在解决的。OpenFGA 旨在为开发人员提供一种简单的方式来建模应用程序权限,并将细粒度的授权集成到应用程序中。它能够快速进行内存数据存储以支持快速开发,并提供可插拔的数据库模块。目前,它支持 PostgreSQL 14 和 MySQL 8 两种数据库。

该项目在 GitHub 有超过 1.1k Star,用一句话介绍该项目就是:“A high performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar”,一个为开发人员构建的高性能、灵活的授权/权限引擎,受 Google Zanzibar 启发。

项目介绍

OpenFGA 提供了以下主要功能和设计要点:

  • 高性能和灵活的授权/权限引擎。
  • 受 Google Zanzibar 启发,为开发人员提供模型化应用程序权限的简便方式。
  • 支持内存数据存储和可插拔的数据库模块。
  • 提供 HTTP API 和 gRPC API 接口。
  • 提供多种语言的 SDK,包括 Node.js/JavaScript、GoLang、Python 和 .NET。,请查看社区项目 https://github.com/openfga/community#community-projects 了解更多第三方 SDK 和工具。

示例代码

您可以参考以下代码示例来使用 OpenFGA:

import openfga_sdk
from openfga_sdk.client import OpenFgaClient


async def main():
    configuration = openfga_sdk.ClientConfiguration(
        api_scheme = OPENFGA_API_SCHEME, # optional, defaults to "https"
        api_host = OPENFGA_API_HOST, # required, define without the scheme (e.g. api.fga.example instead of https://api.fga.example)
        store_id = OPENFGA_STORE_ID, # optional, not needed when calling `CreateStore` or `ListStores`
        authorization_model_id = OPENFGA_AUTHORIZATION_MODEL_ID, # Optional, can be overridden per request
    )
    # Enter a context with an instance of the OpenFgaClient
    async with OpenFgaClient(configuration) as fga_client:
        api_response = await fga_client.read_authorization_models()
        await fga_client.close()

以下是该项目 Star 趋势图(代表项目的活跃程度):

更多项目详情请查看如下链接。

开源项目地址:https://github.com/openfga/openfga

开源项目作者:openfga

以下是参与项目建设的所有成员:

关注我们,一起探索有意思的开源项目。


更多精彩请扫码关注如下公众号。

Written on May 30, 2023