* Add POC analyze sub-command * Address lint errors * [chore] Embed scopes at compile time * [chore] Move subcommand check up to prevent printing metrics * added http logging to most analyzers * Use custom RoundTripper with default http.Client * Create framework of interfaces, structs, and protos * Merge main * Add AnalysisInfo to detectors.Result * Hide analyze subcommand * Update gen_proto.sh * Update protos * Make protos * Update analyzer data types * Rename argument to credentialInfo --------- Co-authored-by: Joe Leon <[email protected]>
100 lines
5.4 KiB
Go
100 lines
5.4 KiB
Go
package mysql
|
|
|
|
type PrivTypes struct {
|
|
Global bool
|
|
Database bool
|
|
Table bool
|
|
Column bool
|
|
Routine bool
|
|
Proxy bool
|
|
Dynamic bool
|
|
}
|
|
|
|
// https://dev.mysql.com/doc/refman/8.0/en/grant.html#grant-global-privileges:~:text=%27localhost%27%3B-,Privileges%20Supported%20by%20MySQL,-The%20following%20tables
|
|
var SCOPES = map[string]PrivTypes{
|
|
// Static privs
|
|
"ALTER": {Global: true, Database: true, Table: true},
|
|
"ALTER ROUTINE": {Global: true, Database: true, Routine: true},
|
|
"CREATE": {Global: true, Database: true, Table: true},
|
|
"CREATE ROLE": {Global: true},
|
|
"CREATE ROUTINE": {Global: true, Database: true},
|
|
"CREATE TABLESPACE": {Global: true},
|
|
"CREATE TEMPORARY TABLES": {Global: true, Database: true},
|
|
"CREATE USER": {Global: true},
|
|
"CREATE VIEW": {Global: true, Database: true, Table: true},
|
|
"DELETE": {Global: true, Database: true, Table: true},
|
|
"DROP": {Global: true, Database: true, Table: true},
|
|
"DROP ROLE": {Global: true},
|
|
"EVENT": {Global: true, Database: true},
|
|
"EXECUTE": {Global: true, Database: true, Routine: true},
|
|
"FILE": {Global: true},
|
|
"GRANT OPTION": {Global: true, Database: true, Table: true, Routine: true, Proxy: true}, // Not granted on ALL PRIVILEGES
|
|
"INDEX": {Global: true, Database: true, Table: true},
|
|
"INSERT": {Global: true, Database: true, Table: true, Column: true},
|
|
"LOCK TABLES": {Global: true, Database: true},
|
|
"PROCESS": {Global: true},
|
|
"PROXY": {Proxy: true}, // Not granted on ALL PRIVILEGES
|
|
"REFERENCES": {Global: true, Database: true, Table: true, Column: true},
|
|
"RELOAD": {Global: true},
|
|
"REPLICATION CLIENT": {Global: true},
|
|
"REPLICATION SLAVE": {Global: true},
|
|
"SELECT": {Global: true, Database: true, Table: true, Column: true},
|
|
"SHOW DATABASES": {Global: true},
|
|
"SHOW VIEW": {Global: true, Database: true, Table: true},
|
|
"SHUTDOWN": {Global: true},
|
|
"SUPER": {Global: true},
|
|
"TRIGGER": {Global: true, Database: true, Table: true},
|
|
"UPDATE": {Global: true, Database: true, Table: true, Column: true},
|
|
|
|
// This is a special case, it's not a real privilege
|
|
"USAGE": {Global: true, Database: true, Table: true, Column: true, Routine: true},
|
|
|
|
// Dynamic privs
|
|
"ALLOW_NONEXISTENT_DEFINER": {Global: true, Dynamic: true},
|
|
"APPLICATION_PASSWORD_ADMIN": {Global: true, Dynamic: true},
|
|
"AUDIT_ABORT_EXEMPT": {Global: true, Dynamic: true},
|
|
"AUDIT_ADMIN": {Global: true, Dynamic: true},
|
|
"AUTHENTICATION_POLICY_ADMIN": {Global: true, Dynamic: true},
|
|
"BACKUP_ADMIN": {Global: true, Dynamic: true},
|
|
"BINLOG_ADMIN": {Global: true, Dynamic: true},
|
|
"BINLOG_ENCRYPTION_ADMIN": {Global: true, Dynamic: true},
|
|
"CLONE_ADMIN": {Global: true, Dynamic: true},
|
|
"CONNECTION_ADMIN": {Global: true, Dynamic: true},
|
|
"ENCRYPTION_KEY_ADMIN": {Global: true, Dynamic: true},
|
|
"FIREWALL_ADMIN": {Global: true, Dynamic: true},
|
|
"FIREWALL_EXEMPT": {Global: true, Dynamic: true},
|
|
"FIREWALL_USER": {Global: true, Dynamic: true},
|
|
"FLUSH_OPTIMIZER_COSTS": {Global: true, Dynamic: true},
|
|
"FLUSH_STATUS": {Global: true, Dynamic: true},
|
|
"FLUSH_TABLES": {Global: true, Dynamic: true},
|
|
"FLUSH_USER_RESOURCES": {Global: true, Dynamic: true},
|
|
"GROUP_REPLICATION_ADMIN": {Global: true, Dynamic: true},
|
|
"GROUP_REPLICATION_STREAM": {Global: true, Dynamic: true},
|
|
"INNODB_REDO_LOG_ARCHIVE": {Global: true, Dynamic: true},
|
|
"INNODB_REDO_LOG_ENABLE": {Global: true, Dynamic: true},
|
|
"MASKING_DICTIONARIES_ADMIN": {Global: true, Dynamic: true},
|
|
"NDB_STORED_USER": {Global: true, Dynamic: true},
|
|
"PASSWORDLESS_USER_ADMIN": {Global: true, Dynamic: true},
|
|
"PERSIST_RO_VARIABLES_ADMIN": {Global: true, Dynamic: true},
|
|
"REPLICATION_APPLIER": {Global: true, Dynamic: true},
|
|
"REPLICATION_SLAVE_ADMIN": {Global: true, Dynamic: true},
|
|
"RESOURCE_GROUP_ADMIN": {Global: true, Dynamic: true},
|
|
"RESOURCE_GROUP_USER": {Global: true, Dynamic: true},
|
|
"ROLE_ADMIN": {Global: true, Dynamic: true},
|
|
"SENSITIVE_VARIABLES_OBSERVER": {Global: true, Dynamic: true},
|
|
"SERVICE_CONNECTION_ADMIN": {Global: true, Dynamic: true},
|
|
"SESSION_VARIABLES_ADMIN": {Global: true, Dynamic: true},
|
|
"SET_ANY_DEFINER": {Global: true, Dynamic: true},
|
|
"SET_USER_ID": {Global: true, Dynamic: true},
|
|
"SHOW_ROUTINE": {Global: true, Dynamic: true},
|
|
"SKIP_QUERY_REWRITE": {Global: true, Dynamic: true},
|
|
"SYSTEM_USER": {Global: true, Dynamic: true},
|
|
"SYSTEM_VARIABLES_ADMIN": {Global: true, Dynamic: true},
|
|
"TABLE_ENCRYPTION_ADMIN": {Global: true, Dynamic: true},
|
|
"TELEMETRY_LOG_ADMIN": {Global: true, Dynamic: true},
|
|
"TP_CONNECTION_ADMIN": {Global: true, Dynamic: true},
|
|
"TRANSACTION_GTID_TAG": {Global: true, Dynamic: true},
|
|
"VERSION_TOKEN_ADMIN": {Global: true, Dynamic: true},
|
|
"XA_RECOVER_ADMIN": {Global: true, Dynamic: true},
|
|
}
|