01 简介

IAM系统是什么

IAM(Identity and Access Management,身份识别与访问管理)系统是用Go语言编写的一个Web服务,用于给第三方用户提供访问控制服务。

IAM系统可以帮用户解决的问题:在特定的条件下,谁能够/不能够对那些资源做哪些操作。即完成资源的授权功能。

IAM系统如何进行资源授权呢?
  1. 用户需要提供用户名、密码、邮箱等信息注册登录到 IAM 系统。以用户名、密码作为唯一身份标识访问 IAM 系统,并且完成认证。
  2. 因为访问 IAM 的 资源授权接口 是通过密钥(secretKey)的方式进行认证的,所以用户需要在 IAM 中创建属于自己的密钥资源
  3. 因为 IAM 通过 授权策略 完成授权,所以用户需要在 IAM 中创建授权策略。
  4. 请求 IAM 提供的 授权接口 ,IAM 会根据用户的 请求内容授权策略 来决定一个授权请求是否被允许。
    功能示意图

IAM系统架构

IAM架构中包括9大组件和3大数据库:

  • 3大数据库
    Mariadb、Redis、MongoDB
  • 5个核心组件
    iamctl、marmotedu-sdk-go、iam-apiserver、iam-authz-server、iam-pump
  • 4个旁路组件
    app、iam-webconsole、iam-operating-system、Loadbalance

IAM系统使用到的3中系统资源

  • 用户(User)
  • 密钥(Secret)
  • 策略(Policy)

整个架构可以拆分为三部分:

  1. 控制流 - 用户、密钥、授权策略的管理
    涉及组件及数据库为:
    iamctl、iam-webconsole、iam-apiserver、marmotedu-sdk-go、Mariadb

    • iam-webconsole
      IAM系统的前端,通过 RESTful API 调用 iam-apiserver 实现用户、密钥、策略的CURD
    • iamctl
      IAM系统的客户端,通过 marmotedu-sdk-go 访问 iam-apiserver。iam-ctl 封装了 iam-apiserver 的所有 RESTful API,还封装了其它功能。可以通过命令行的方式访问 iam-apiserver。
    • marmotedu-sdk-go
      IAM系统的 golang sdk,封装了 iam-apiserver 和 iam-authz-server 的所有 RESTful API。
    • iam-apiserver
      核心组件,通过 RESTful API 完成用户、密钥、授权策略的CURD
    • Mariadb
      持久性存储用户、密钥、授权策略


      控制流
  2. 数据流

    • APP
      第三方应用,IAM系统的使用方。通过 RESTful API 或者 marmotedu-sdk-go 调用 iam-authz-server 提供的 /v1/authz 接口,完成资源的授权。

    • iam-authz-server
      授权服务
      为了提高 /v1/authz 接口的性能, iam-authz-server 通过调用 iam-apiserver 提供的 gRPC接口,将 密钥和授权策略 信息缓存在 Redis 中,以便实现快速查询。

      同时,为了使 Redis 中的缓存信息和 iam-apiserver 中的信息 保持一致 ,当 iam-apiserver 中有密钥或策略被更新时, iam-apiserver 会往特定的 Redis Channel 中发送 PolicyChanged 和 SecretChanged 消息。当 iam-authz-server 监听到有新消息时就会获取并解析消息,根据消息内容判断是否需要重新调用 gRPC 接口来获取密钥和授权策略信息。

      iam-authz-server 会将授权日志上报到 Redis中

    • Redis
      用来缓存密钥、授权策略,降低访问延时;
      用来缓存授权日志,作为运营系统的数据来源。

数据流
  1. 运营平台

    • iam-pump
      从 Redis 中拉取缓存的授权日志,分析后存入 Mongo 数据库中。

    • iam-operating-system
      IAM营运系统,可以用来展示运营数据,或者对IAM系统进行运营类管理。

    • MongoDB
      存储授权日志,供后期运营系统展示和分析


      运营平台
  2. 架构全貌

    IAM

Referance

腾讯云 > 访问管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容