暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss云安全技术—IAM认证

openGauss小助手 2021-10-27
673

当用户需要把数据库部署到云上时,用户首先需要通过Portal界面创建数据库服务。创建成功后,用户则可以下载对应的客户端来进行数据管理操作。为了提升数据库使用过程中的便捷性和安全性,云服务一般会提供IAM服务(Identity and Access Management)认证机制。

openGauss搬迁上云后所提供的服务称为华为数据仓库服务(Data Warehouse Service,DWS)服务。当我们与IAM进行对接时,需要对应的服务和数据库的C/S两端协作完成。完整的IAM认证对接组件如图11-10所示。

图11-10 IAM认证对接组件流程图

在上述流程图中,我们要求云数据库服务管控侧和openGauss内核侧分别具备如表11-2的功能:

表11-2 云数据库服务管控侧和openGauss内核侧功能表

序号云数据库服务管控侧openGauss内核侧
1与IAM对接,支持配置具有登录数据库权限的IAM角色信息支持创建支持IAM认证的数据库用户,该用户没有密码,只支持IAM连接认证使用
2支持获取凭证API接口,以ak/sk信息为入参获取token,且返回token前需要校验token中IAM用户名信息服务端新增认证类型,通过用户属性判断使用IAM认证,而非账户口令认证
3获取凭证API接口需支持用户自动创建及群组添加用户功能客户端JDBC支持使用凭证API接口获取IAM临时凭据信息,并作为密码参数,传递给服务器
4在DB开始认证前,将集群标识码、解析token用的证书传递到数据库服务器上数据库服务侧支持获取region证书对token进行解签名
5将集群标识码信息与token信息进行封装,返回给DB client使用数据库服务根据token(含集群标识码)、policy等信息check解签名后的token是否符合数据库连接请求的要求,进行最终认证

事实上,openGauss支持两种方式来创建用于IAM认证的用户。第一种方式是手动创建,起使用语法如下,我们无需指定该用户的密码。

CREATE USER 'db_iam_user' PASSWORD DISABLE;

第二种方式为自动创建,由DWS管控侧提供凭证来指定自动创建参数(参数为AutoCreate),如果指定的数据库用户不存在则会自动创建,需openGauss内核侧适配,工具支持以下参数:

集群标识符:包含数据库的集群名称。

数据库用户名:现有或新的数据库用户名称。如果数据库中不存在此用户且AutoCreate为true,则将创建支持IAM认证的数据库新用户。如果此用户不存在且AutoCreate为false,则请求会失败。

AutoCreate (可选):如果数据库用户名不存在,则创建新用户。

获取凭证API接口将通过DWS Service和管控侧工具将AutoCreate、数据库用户名信息传递到管控域,GuestAgent需要内部连接数据库查询DWS Service传递的数据库用户名是否存在,如果存在则直接退出。如果不存在则判断AutoCreate是否为true,如果AutoCreate为ture,则拼接如下SQL语句发给数据库创建用于IAM认证的用户:

CREATE ROLE user_name PASSWORD DISABLE;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论