在本人即将入职的一份基础架构的工作前,我提前联系到了团队leader并跟他进行了一次1-1。谈话中提到了我可能会先上手的一个项目是IAM相关的实现,于是趁着入职前的间隙,我学习了部分优秀开源IAM项目实现思路以及腾讯云开发专家孔老师的专栏。
在反复思考和总结提炼后,我也尝试着谈谈自己对于IAM的理解。
简而言之IAM(Identity and Access Management)是为了安全地管理身份以及对相关资源的访问。它是一种网络安全服务,能够实现单点登录、用户身份认证、集中授权等功能。
参考AWS的概念解释图如下:
经典实用案例为:
1. 通过基于属性的访问控制应用精细权限和扩展
利用基于属性的访问控制根据用户属性(例如,部门、职位和团队名称)创建精细权限
2.管理每个账户的访问权限或扩展跨 AWS 账户和应用程序的访问权限
通过 IAM 管理每个账户的身份,或使用 IAM Identity Center 跨 AWS 提供多账户访问和应用程序分配。
3.在 AWS 上建立组织级的预防性防护机制
使用服务控制策略为 IAM 用户和角色建立权限防护机制,并在 AWS Organizations 中围绕您的账户建立数据边界。
4.设置、验证权限并将其适当调整为最低权限
在设置、验证和优化策略以达到最低权限的过程中简化权限管理并使用跨账户结果。
那么IAM系统是如何进行资源授权的呢?
其整体过程可以分为4步:
-
用户需要提供昵称、密码、邮箱、电话等信息注册并登录到 IAM 系统,这里是以用户名和密码作为唯一的身份标识来访问 IAM 系统,并且完成认证。
-
因为访问 IAM 的资源授权接口是通过密钥(secretID/secretKey)的方式进行认证的,所以用户需要在 IAM 中创建属于自己的密钥资源。
-
因为 IAM 通过授权策略完成授权,所以用户需要在 IAM 中创建授权策略。
-
请求 IAM 提供的授权接口,IAM 会根据用户的请求内容和授权策略来决定一个授权请求是否被允许
上述过程的流程图如下:
在上面的流程中,IAM 使用到了 3 种系统资源:
用户(User)、密钥(Secret)和策略(Policy),它们映射到程序设计中就是 3 种 RESTful 资源:
-
用户(User):实现对用户的增、删、改、查、修改密码、批量修改等操作。
-
密钥(Secret):实现对密钥的增、删、改、查操作。
-
策略(Policy):实现对策略的增、删、改、查、批量删除操作。
参考孔令飞老师提及的IAM系统架构具体实现图如下:
总的来说,IAM 架构中包括 9 大组件和 3 大数据库。这些组件和功能都总结如下。这里面,我们主要记住 5 个核心组件,包括 iam-apiserver、iam-authz-server、iam-pump、marmotedu-sdk-go 和 iamctl 的功能,还有 3 个数据库 Redis、MySQL 和 MongoDB 的功能。
对部分组件的功能描述做一定说明:
三种数据库的功能说明:
原文链接 :文章来源:https://www.toymoban.com/news/detail-447987.html
深入浅出IAM(1)文章来源地址https://www.toymoban.com/news/detail-447987.html
到了这里,关于深入浅出IAM(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!