课程名称:课程版本(301)+ 3.8.1 Authentication and Authorization(TiDB 的授权与认证)
学习时长:
8分钟
课程收获:
掌握授权和认证的过程及存储方式
课程内容:
认证
- tidb新链接产生的过程
- 账户信息存放的位置
- 密码交互过程的安全性
授权
- tidb 授权过程
- 请求验证的过程
- RBAC 模型
-
服务端发送握手消息包
- 服务关于版本和相关信息
- 密码验证
-
客户端回应握手消息
- 确认和协商协议的信息
- 可能会升级到SSL 安全连接
-
回应和返回的消息包中包含了认证信息
- 用户名和主机
- 加密过的密码
-
账户信息存在 mysql.user 表中
-
tidb需要使用这些信息进行认证处理
-
这些数据也缓存在内存中,这样可以提高处理效率
-
不要采用普通的方式来编辑这个表的数据,如果修改了应该,马上使用 flush privileges 来同步更新缓存
-
通过 用户名和主机来确认登录用户
-
Host 描述请求来源
-
% 默认为所有的地址访问,127.0.0.1 则只能本地访问
-
密码不是明文存储或者传递
authentication_String 包含两个部分
-
public key
-
private key
-
服务端传递随机值给客户端
-
客户端使用这个值和private key,产生密码
-
服务端则通过public key 来进行验证
mysql_native_password mysql 5.7
实际的处理办法,并不是通过非对称加密的方式来完成的
hash1 is xor (sha1(password),sha1(…))
hash2 is sha1(sha1(…))
Tidb中提供的权限大部分和Mysql 相同
授权信息分别存储在
- mysql.user
- mysql.db
- mysql.tables_priv
tidb 不支持 列级别的授权
请求校验的过程如下:
- 搜索全局级别授权
- 搜索数据库实例级别的授权
- 搜索表级别的授权
tidb4.0 才支持 RBAC