【TiDB 4.0 PCTA 学习笔记】- 3.8.1 Authentication and Authorization(TiDB 的授权与认证)@1班:魔幻之翼

课程名称:课程版本(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