课程名称:(301)3.8.1 Authentication and Authorization(TiDB 的授权与认证)
学习时长:10min
课程收获:TiDB 中关于授权方面的内容。具体包括用户登陆流程,以及登陆之后用户执行操作时的访问控制。理解用户登陆验证的过程,掌握权限的原理和使用。
课程内容: Login;Privilege;RBAC
认证:当TiDB收到一个新连接Server发送Handshake Packet;Client用Handshake Response回复;Client返回给Server的响应
账户信息:存储在mysql.user表中;server使用这些信息进行授权;数据也会缓存到内存以提升性能;手工编辑需要执行flush privileges来刷新缓存;username + host来标识一个用户连接
密码以非明文形式保存,传输
authentication_string和raw password类似于公钥和私钥
TiDB使用mysql_native_password
mysql_native_password并未真正使用公钥和私钥非对称加密
authentication_string只是简单的对raw password进行哈希
授权:TiDB提供的权限:大部分和MySQL相同
权限存储:mysql.user/mysql.db/mysql.tables_priv中
mysql.user:grant xxx on . to yyy@zzz;
mysql.db:grant xxx on db.* to yyy@zzz;
mysql.tables_priv:grant xxx on db.table to yyy@zzz;
TiDB不支持列级权限
请求校验过程:搜索全局权限;搜索数据库级权限;搜索表级权限
RBAC(role based access control):
create role ‘app_developer’;
grant all on db.* to ‘app_developer’;
create ‘dev1’@‘localhost’ identified by ‘dev1pass’;
grant ‘app_developer’ to ‘dev1’@‘localhost’;
set default role all to ‘dev1’@‘localhost’;
show grants for ‘dev1’@‘localhost’ usgin ‘app_developer’;
学习过程中遇到的问题或延伸思考:
- 问题 1:
- 问题 2:
- 延伸思考 1:
- 延伸思考 2:
学习过程中参考的其他资料
无