Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
TDengine
提交
68e4a720
T
TDengine
项目概览
jobily
/
TDengine
9 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
68e4a720
编写于
8月 31, 2023
作者:
W
wade zhang
提交者:
GitHub
8月 31, 2023
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #22643 from taosdata/feat/audit-user-typestr
alter user type to str
上级
4a9b48ef
3d9274d7
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
168 addition
and
12 deletion
+168
-12
include/libs/audit/audit.h
include/libs/audit/audit.h
+2
-0
source/dnode/mnode/impl/src/mndStb.c
source/dnode/mnode/impl/src/mndStb.c
+83
-3
source/dnode/mnode/impl/src/mndTopic.c
source/dnode/mnode/impl/src/mndTopic.c
+16
-6
source/dnode/mnode/impl/src/mndUser.c
source/dnode/mnode/impl/src/mndUser.c
+63
-2
source/dnode/vnode/src/vnd/vnodeSvr.c
source/dnode/vnode/src/vnd/vnodeSvr.c
+4
-1
未找到文件。
include/libs/audit/audit.h
浏览文件 @
68e4a720
...
...
@@ -29,6 +29,8 @@
extern
"C"
{
#endif
#define AUDIT_DETAIL_MAX 16000
typedef
struct
{
const
char
*
server
;
uint16_t
port
;
...
...
source/dnode/mnode/impl/src/mndStb.c
浏览文件 @
68e4a720
...
...
@@ -1066,6 +1066,83 @@ static int32_t mndBuildStbFromAlter(SStbObj *pStb, SStbObj *pDst, SMCreateStbReq
return
TSDB_CODE_SUCCESS
;
}
static
char
*
mndAuditFieldTypeStr
(
int32_t
type
){
switch
(
type
)
{
case
TSDB_DATA_TYPE_NULL
:
return
"null"
;
case
TSDB_DATA_TYPE_BOOL
:
return
"bool"
;
case
TSDB_DATA_TYPE_TINYINT
:
return
"tinyint"
;
case
TSDB_DATA_TYPE_SMALLINT
:
return
"smallint"
;
case
TSDB_DATA_TYPE_INT
:
return
"int"
;
case
TSDB_DATA_TYPE_BIGINT
:
return
"bigint"
;
case
TSDB_DATA_TYPE_FLOAT
:
return
"float"
;
case
TSDB_DATA_TYPE_DOUBLE
:
return
"double"
;
case
TSDB_DATA_TYPE_VARCHAR
:
return
"varchar"
;
case
TSDB_DATA_TYPE_TIMESTAMP
:
return
"timestamp"
;
case
TSDB_DATA_TYPE_NCHAR
:
return
"nchar"
;
case
TSDB_DATA_TYPE_UTINYINT
:
return
"utinyint"
;
case
TSDB_DATA_TYPE_USMALLINT
:
return
"usmallint"
;
case
TSDB_DATA_TYPE_UINT
:
return
"uint"
;
case
TSDB_DATA_TYPE_UBIGINT
:
return
"ubigint"
;
case
TSDB_DATA_TYPE_JSON
:
return
"json"
;
case
TSDB_DATA_TYPE_VARBINARY
:
return
"varbinary"
;
case
TSDB_DATA_TYPE_DECIMAL
:
return
"decimal"
;
case
TSDB_DATA_TYPE_BLOB
:
return
"blob"
;
case
TSDB_DATA_TYPE_MEDIUMBLOB
:
return
"mediumblob"
;
case
TSDB_DATA_TYPE_GEOMETRY
:
return
"geometry"
;
default:
return
"error"
;
}
}
static
void
mndAuditFieldStr
(
char
*
detail
,
SArray
*
arr
,
int32_t
len
,
int32_t
max
){
int32_t
detialLen
=
strlen
(
detail
);
int32_t
fieldLen
=
0
;
for
(
int32_t
i
=
0
;
i
<
len
;
++
i
)
{
SField
*
pField
=
taosArrayGet
(
arr
,
i
);
char
field
[
TSDB_COL_NAME_LEN
+
20
]
=
{
0
};
fieldLen
=
strlen
(
", "
);
if
(
detialLen
>
0
&&
detialLen
<
max
-
fieldLen
-
1
)
{
strcat
(
detail
,
", "
);
detialLen
+=
fieldLen
;
}
else
{
break
;
}
sprintf
(
field
,
"%s:%s"
,
pField
->
name
,
mndAuditFieldTypeStr
(
pField
->
type
));
fieldLen
=
strlen
(
field
);
if
(
detialLen
<
max
-
fieldLen
-
1
)
{
strcat
(
detail
,
field
);
detialLen
+=
fieldLen
;
}
else
{
break
;
}
}
}
static
int32_t
mndProcessCreateStbReq
(
SRpcMsg
*
pReq
)
{
SMnode
*
pMnode
=
pReq
->
info
.
node
;
int32_t
code
=
-
1
;
...
...
@@ -1174,7 +1251,7 @@ static int32_t mndProcessCreateStbReq(SRpcMsg *pReq) {
}
if
(
code
==
0
)
code
=
TSDB_CODE_ACTION_IN_PROGRESS
;
char
detail
[
2000
]
=
{
0
};
char
detail
[
AUDIT_DETAIL_MAX
]
=
{
0
};
sprintf
(
detail
,
"colVer:%d, delay1:%"
PRId64
", delay2:%"
PRId64
", deleteMark1:%"
PRId64
", "
"deleteMark2:%"
PRId64
", igExists:%d, numOfColumns:%d, numOfFuncs:%d, numOfTags:%d, "
"source:%d, suid:%"
PRId64
", tagVer:%d, ttl:%d, "
...
...
@@ -1183,11 +1260,14 @@ static int32_t mndProcessCreateStbReq(SRpcMsg *pReq) {
createReq
.
deleteMark2
,
createReq
.
igExists
,
createReq
.
numOfColumns
,
createReq
.
numOfFuncs
,
createReq
.
numOfTags
,
createReq
.
source
,
createReq
.
suid
,
createReq
.
tagVer
,
createReq
.
ttl
,
createReq
.
watermark1
,
createReq
.
watermark2
);
mndAuditFieldStr
(
detail
,
createReq
.
pColumns
,
createReq
.
numOfColumns
,
AUDIT_DETAIL_MAX
);
mndAuditFieldStr
(
detail
,
createReq
.
pTags
,
createReq
.
numOfTags
,
AUDIT_DETAIL_MAX
);
SName
name
=
{
0
};
tNameFromString
(
&
name
,
pDb
->
name
,
T_NAME_ACCT
|
T_NAME_DB
);
tNameFromString
(
&
name
,
createReq
.
name
,
T_NAME_ACCT
|
T_NAME_DB
|
T_NAME_TABLE
);
auditRecord
(
pReq
,
pMnode
->
clusterId
,
"createStb"
,
name
.
dbname
,
createReq
.
name
,
detail
);
auditRecord
(
pReq
,
pMnode
->
clusterId
,
"createStb"
,
name
.
dbname
,
name
.
t
name
,
detail
);
_OVER:
if
(
code
!=
0
&&
code
!=
TSDB_CODE_ACTION_IN_PROGRESS
)
{
...
...
source/dnode/mnode/impl/src/mndTopic.c
浏览文件 @
68e4a720
...
...
@@ -635,14 +635,24 @@ static int32_t mndProcessCreateTopicReq(SRpcMsg *pReq) {
code
=
TSDB_CODE_ACTION_IN_PROGRESS
;
}
char
detail
[
1
000
]
=
{
0
};
sprintf
(
detail
,
"igExists:%d, subStbName:%s, subType:%d, withMeta:%d"
,
createTopicReq
.
igExists
,
createTopicReq
.
subStbName
,
createTopicReq
.
subType
,
createTopicReq
.
withMeta
);
char
detail
[
4
000
]
=
{
0
};
char
sql
[
3000
]
=
{
0
};
strncpy
(
sql
,
createTopicReq
.
sql
,
2999
);
SName
n
ame
=
{
0
};
tNameFromString
(
&
name
,
createTopicReq
.
subDbName
,
T_NAME_ACCT
|
T_NAME_DB
);
SName
tableN
ame
=
{
0
};
tNameFromString
(
&
tableName
,
createTopicReq
.
subStbName
,
T_NAME_ACCT
|
T_NAME_DB
|
T_NAME_TABLE
);
auditRecord
(
pReq
,
pMnode
->
clusterId
,
"crateTopic"
,
createTopicReq
.
name
,
name
.
dbname
,
detail
);
sprintf
(
detail
,
"igExists:%d, subStbName:%s, subType:%d, withMeta:%d, sql:%s"
,
createTopicReq
.
igExists
,
tableName
.
tname
,
createTopicReq
.
subType
,
createTopicReq
.
withMeta
,
sql
);
SName
dbname
=
{
0
};
tNameFromString
(
&
dbname
,
createTopicReq
.
subDbName
,
T_NAME_ACCT
|
T_NAME_DB
);
SName
topicName
=
{
0
};
tNameFromString
(
&
topicName
,
createTopicReq
.
name
,
T_NAME_ACCT
|
T_NAME_DB
);
//reuse this function for topic
auditRecord
(
pReq
,
pMnode
->
clusterId
,
"crateTopic"
,
topicName
.
dbname
,
dbname
.
dbname
,
detail
);
_OVER:
if
(
code
!=
0
&&
code
!=
TSDB_CODE_ACTION_IN_PROGRESS
)
{
...
...
source/dnode/mnode/impl/src/mndUser.c
浏览文件 @
68e4a720
...
...
@@ -791,6 +791,67 @@ static int32_t mndRemoveTablePriviledge(SMnode *pMnode, SHashObj *hash, SHashObj
return
0
;
}
static
char
*
mndUserAuditTypeStr
(
int32_t
type
){
if
(
type
==
TSDB_ALTER_USER_PASSWD
){
return
"changePassword"
;
}
if
(
type
==
TSDB_ALTER_USER_SUPERUSER
){
return
"changeSuperUser"
;
}
if
(
type
==
TSDB_ALTER_USER_ADD_READ_DB
){
return
"addReadToDB"
;
}
if
(
type
==
TSDB_ALTER_USER_ADD_READ_DB
){
return
"addReadToDB"
;
}
if
(
type
==
TSDB_ALTER_USER_REMOVE_READ_DB
){
return
"removeReadFromDB"
;
}
if
(
type
==
TSDB_ALTER_USER_ADD_WRITE_DB
){
return
"addWriteToDB"
;
}
if
(
type
==
TSDB_ALTER_USER_REMOVE_WRITE_DB
){
return
"removeWriteFromDB"
;
}
if
(
type
==
TSDB_ALTER_USER_ADD_ALL_DB
){
return
"addToAllDB"
;
}
if
(
type
==
TSDB_ALTER_USER_REMOVE_ALL_DB
){
return
"removeFromAllDB"
;
}
if
(
type
==
TSDB_ALTER_USER_ENABLE
){
return
"enableUser"
;
}
if
(
type
==
TSDB_ALTER_USER_SYSINFO
){
return
"userSysInfo"
;
}
if
(
type
==
TSDB_ALTER_USER_ADD_SUBSCRIBE_TOPIC
){
return
"addSubscribeTopic"
;
}
if
(
type
==
TSDB_ALTER_USER_REMOVE_SUBSCRIBE_TOPIC
){
return
"removeSubscribeTopic"
;
}
if
(
type
==
TSDB_ALTER_USER_ADD_READ_TABLE
){
return
"addReadToTable"
;
}
if
(
type
==
TSDB_ALTER_USER_REMOVE_READ_TABLE
){
return
"removeReadFromTable"
;
}
if
(
type
==
TSDB_ALTER_USER_ADD_WRITE_TABLE
){
return
"addWriteToTable"
;
}
if
(
type
==
TSDB_ALTER_USER_REMOVE_WRITE_TABLE
){
return
"removeWriteFromTable"
;
}
if
(
type
==
TSDB_ALTER_USER_ADD_ALL_TABLE
){
return
"addToAllTable"
;
}
if
(
type
==
TSDB_ALTER_USER_REMOVE_ALL_TABLE
){
return
"removeFromAllTable"
;
}
return
"error"
;
}
static
int32_t
mndProcessAlterUserReq
(
SRpcMsg
*
pReq
)
{
SMnode
*
pMnode
=
pReq
->
info
.
node
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
...
...
@@ -978,8 +1039,8 @@ static int32_t mndProcessAlterUserReq(SRpcMsg *pReq) {
if
(
code
==
0
)
code
=
TSDB_CODE_ACTION_IN_PROGRESS
;
char
detail
[
1000
]
=
{
0
};
sprintf
(
detail
,
"alterType:%
d
, enable:%d, superUser:%d, sysInfo:%d, tabName:%s"
,
alterReq
.
alterType
,
alterReq
.
enable
,
alterReq
.
superUser
,
alterReq
.
sysInfo
,
alterReq
.
tabName
);
sprintf
(
detail
,
"alterType:%
s
, enable:%d, superUser:%d, sysInfo:%d, tabName:%s"
,
mndUserAuditTypeStr
(
alterReq
.
alterType
)
,
alterReq
.
enable
,
alterReq
.
superUser
,
alterReq
.
sysInfo
,
alterReq
.
tabName
);
if
(
alterReq
.
alterType
==
TSDB_ALTER_USER_PASSWD
){
auditRecord
(
pReq
,
pMnode
->
clusterId
,
"changePassword"
,
alterReq
.
user
,
""
,
detail
);
...
...
source/dnode/vnode/src/vnd/vnodeSvr.c
浏览文件 @
68e4a720
...
...
@@ -948,7 +948,10 @@ static int32_t vnodeProcessCreateTbReq(SVnode *pVnode, int64_t ver, void *pReq,
sprintf
(
detail
,
"btime:%"
PRId64
", flags:%d, ttl:%d, type:%d"
,
pCreateReq
->
btime
,
pCreateReq
->
flags
,
pCreateReq
->
ttl
,
pCreateReq
->
type
);
auditRecord
(
pReq
,
clusterId
,
"createTable"
,
pVnode
->
config
.
dbname
,
pCreateReq
->
name
,
detail
);
SName
name
=
{
0
};
tNameFromString
(
&
name
,
pVnode
->
config
.
dbname
,
T_NAME_ACCT
|
T_NAME_DB
);
auditRecord
(
pReq
,
clusterId
,
"createTable"
,
name
.
dbname
,
pCreateReq
->
name
,
detail
);
}
vDebug
(
"vgId:%d, add %d new created tables into query table list"
,
TD_VID
(
pVnode
),
(
int32_t
)
taosArrayGetSize
(
tbUids
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录