add ns and ws query parameter to es query body
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
This commit is contained in:
@@ -38,19 +38,23 @@ func NewEventsOperator(client auditing.Client) Interface {
|
|||||||
func (eo *eventsOperator) Events(queryParam *v1alpha1.Query,
|
func (eo *eventsOperator) Events(queryParam *v1alpha1.Query,
|
||||||
MutateFilterFunc func(*auditing.Filter)) (*v1alpha1.APIResponse, error) {
|
MutateFilterFunc func(*auditing.Filter)) (*v1alpha1.APIResponse, error) {
|
||||||
filter := &auditing.Filter{
|
filter := &auditing.Filter{
|
||||||
ObjectRefNames: stringutils.Split(queryParam.ObjectRefNameFilter, ","),
|
ObjectRefNamespaces: stringutils.Split(queryParam.ObjectRefNamespaceFilter, ","),
|
||||||
ObjectRefNameFuzzy: stringutils.Split(queryParam.ObjectRefNameSearch, ","),
|
ObjectRefNamespaceFuzzy: stringutils.Split(queryParam.ObjectRefNamespaceSearch, ","),
|
||||||
Levels: stringutils.Split(queryParam.LevelFilter, ","),
|
Workspaces: stringutils.Split(queryParam.WorkspaceFilter, ","),
|
||||||
Verbs: stringutils.Split(queryParam.VerbFilter, ","),
|
WorkspaceFuzzy: stringutils.Split(queryParam.WorkspaceSearch, ","),
|
||||||
Users: stringutils.Split(queryParam.UserFilter, ","),
|
ObjectRefNames: stringutils.Split(queryParam.ObjectRefNameFilter, ","),
|
||||||
UserFuzzy: stringutils.Split(queryParam.UserSearch, ","),
|
ObjectRefNameFuzzy: stringutils.Split(queryParam.ObjectRefNameSearch, ","),
|
||||||
GroupFuzzy: stringutils.Split(queryParam.GroupSearch, ","),
|
Levels: stringutils.Split(queryParam.LevelFilter, ","),
|
||||||
SourceIpFuzzy: stringutils.Split(queryParam.SourceIpSearch, ","),
|
Verbs: stringutils.Split(queryParam.VerbFilter, ","),
|
||||||
ObjectRefResources: stringutils.Split(queryParam.ObjectRefResourceFilter, ","),
|
Users: stringutils.Split(queryParam.UserFilter, ","),
|
||||||
ObjectRefSubresources: stringutils.Split(queryParam.ObjectRefSubresourceFilter, ","),
|
UserFuzzy: stringutils.Split(queryParam.UserSearch, ","),
|
||||||
ResponseStatus: stringutils.Split(queryParam.ResponseStatusFilter, ","),
|
GroupFuzzy: stringutils.Split(queryParam.GroupSearch, ","),
|
||||||
StartTime: queryParam.StartTime,
|
SourceIpFuzzy: stringutils.Split(queryParam.SourceIpSearch, ","),
|
||||||
EndTime: queryParam.EndTime,
|
ObjectRefResources: stringutils.Split(queryParam.ObjectRefResourceFilter, ","),
|
||||||
|
ObjectRefSubresources: stringutils.Split(queryParam.ObjectRefSubresourceFilter, ","),
|
||||||
|
ResponseStatus: stringutils.Split(queryParam.ResponseStatusFilter, ","),
|
||||||
|
StartTime: queryParam.StartTime,
|
||||||
|
EndTime: queryParam.EndTime,
|
||||||
}
|
}
|
||||||
if MutateFilterFunc != nil {
|
if MutateFilterFunc != nil {
|
||||||
MutateFilterFunc(filter)
|
MutateFilterFunc(filter)
|
||||||
@@ -70,19 +74,19 @@ func (eo *eventsOperator) Events(queryParam *v1alpha1.Query,
|
|||||||
var err error
|
var err error
|
||||||
switch queryParam.Operation {
|
switch queryParam.Operation {
|
||||||
case "histogram":
|
case "histogram":
|
||||||
if len(filter.ObjectRefNamespaceMap) == 0 && len(filter.ObjectRefWorkspaceMap) == 0 {
|
if len(filter.ObjectRefNamespaceMap) == 0 && len(filter.WorkspaceMap) == 0 {
|
||||||
ar.Histogram = &auditing.Histogram{}
|
ar.Histogram = &auditing.Histogram{}
|
||||||
} else {
|
} else {
|
||||||
ar.Histogram, err = eo.client.CountOverTime(filter, queryParam.Interval)
|
ar.Histogram, err = eo.client.CountOverTime(filter, queryParam.Interval)
|
||||||
}
|
}
|
||||||
case "statistics":
|
case "statistics":
|
||||||
if len(filter.ObjectRefNamespaceMap) == 0 && len(filter.ObjectRefWorkspaceMap) == 0 {
|
if len(filter.ObjectRefNamespaceMap) == 0 && len(filter.WorkspaceMap) == 0 {
|
||||||
ar.Statistics = &auditing.Statistics{}
|
ar.Statistics = &auditing.Statistics{}
|
||||||
} else {
|
} else {
|
||||||
ar.Statistics, err = eo.client.StatisticsOnResources(filter)
|
ar.Statistics, err = eo.client.StatisticsOnResources(filter)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if len(filter.ObjectRefNamespaceMap) == 0 && len(filter.ObjectRefWorkspaceMap) == 0 {
|
if len(filter.ObjectRefNamespaceMap) == 0 && len(filter.WorkspaceMap) == 0 {
|
||||||
ar.Events = &auditing.Events{}
|
ar.Events = &auditing.Events{}
|
||||||
} else {
|
} else {
|
||||||
ar.Events, err = eo.client.SearchAuditingEvent(filter, queryParam.From, queryParam.Size, queryParam.Sort)
|
ar.Events, err = eo.client.SearchAuditingEvent(filter, queryParam.From, queryParam.Size, queryParam.Sort)
|
||||||
|
|||||||
@@ -922,7 +922,7 @@ func (t *tenantOperator) Auditing(user user.Info, queryParam *auditingv1alpha1.Q
|
|||||||
|
|
||||||
return t.auditing.Events(queryParam, func(filter *auditingclient.Filter) {
|
return t.auditing.Events(queryParam, func(filter *auditingclient.Filter) {
|
||||||
filter.ObjectRefNamespaceMap = namespaceCreateTimeMap
|
filter.ObjectRefNamespaceMap = namespaceCreateTimeMap
|
||||||
filter.ObjectRefWorkspaceMap = workspaceCreateTimeMap
|
filter.WorkspaceMap = workspaceCreateTimeMap
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ func parseToQueryPart(f *auditing.Filter) interface{} {
|
|||||||
"bool": &b,
|
"bool": &b,
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(f.ObjectRefNamespaceMap) > 0 || len(f.ObjectRefWorkspaceMap) > 0 {
|
if len(f.ObjectRefNamespaceMap) > 0 || len(f.WorkspaceMap) > 0 {
|
||||||
bi := BoolBody{MinimumShouldMatch: &mini}
|
bi := BoolBody{MinimumShouldMatch: &mini}
|
||||||
for k, v := range f.ObjectRefNamespaceMap {
|
for k, v := range f.ObjectRefNamespaceMap {
|
||||||
bi.Should = append(bi.Should, map[string]interface{}{
|
bi.Should = append(bi.Should, map[string]interface{}{
|
||||||
@@ -323,7 +323,7 @@ func parseToQueryPart(f *auditing.Filter) interface{} {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, v := range f.ObjectRefWorkspaceMap {
|
for k, v := range f.WorkspaceMap {
|
||||||
bi.Should = append(bi.Should, map[string]interface{}{
|
bi.Should = append(bi.Should, map[string]interface{}{
|
||||||
"bool": &BoolBody{
|
"bool": &BoolBody{
|
||||||
Filter: []map[string]interface{}{{
|
Filter: []map[string]interface{}{{
|
||||||
@@ -360,6 +360,36 @@ func parseToQueryPart(f *auditing.Filter) interface{} {
|
|||||||
return &bi
|
return &bi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(f.ObjectRefNamespaces) > 0 {
|
||||||
|
if bi := shouldBoolbody("match_phrase_prefix", "ObjectRef.Namespace.keyword",
|
||||||
|
f.ObjectRefNamespaces, nil); bi != nil {
|
||||||
|
b.Filter = append(b.Filter, map[string]interface{}{"bool": bi})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(f.ObjectRefNamespaceFuzzy) > 0 {
|
||||||
|
if bi := shouldBoolbody("wildcard", "ObjectRef.Namespace",
|
||||||
|
f.ObjectRefNamespaceFuzzy, func(s string) string {
|
||||||
|
return fmt.Sprintf("*" + s + "*")
|
||||||
|
}); bi != nil {
|
||||||
|
b.Filter = append(b.Filter, map[string]interface{}{"bool": bi})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(f.Workspaces) > 0 {
|
||||||
|
if bi := shouldBoolbody("match_phrase_prefix", "Workspace.keyword",
|
||||||
|
f.Workspaces, nil); bi != nil {
|
||||||
|
b.Filter = append(b.Filter, map[string]interface{}{"bool": bi})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(f.WorkspaceFuzzy) > 0 {
|
||||||
|
if bi := shouldBoolbody("wildcard", "Workspace",
|
||||||
|
f.WorkspaceFuzzy, func(s string) string {
|
||||||
|
return fmt.Sprintf("*" + s + "*")
|
||||||
|
}); bi != nil {
|
||||||
|
b.Filter = append(b.Filter, map[string]interface{}{"bool": bi})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(f.ObjectRefNames) > 0 {
|
if len(f.ObjectRefNames) > 0 {
|
||||||
if bi := shouldBoolbody("match_phrase_prefix", "ObjectRef.Name.keyword",
|
if bi := shouldBoolbody("match_phrase_prefix", "ObjectRef.Name.keyword",
|
||||||
f.ObjectRefNames, nil); bi != nil {
|
f.ObjectRefNames, nil); bi != nil {
|
||||||
|
|||||||
@@ -27,22 +27,26 @@ type Client interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Filter struct {
|
type Filter struct {
|
||||||
ObjectRefNamespaceMap map[string]time.Time
|
ObjectRefNamespaceMap map[string]time.Time
|
||||||
ObjectRefWorkspaceMap map[string]time.Time
|
WorkspaceMap map[string]time.Time
|
||||||
ObjectRefNames []string
|
ObjectRefNamespaces []string
|
||||||
ObjectRefNameFuzzy []string
|
ObjectRefNamespaceFuzzy []string
|
||||||
Levels []string
|
Workspaces []string
|
||||||
Verbs []string
|
WorkspaceFuzzy []string
|
||||||
Users []string
|
ObjectRefNames []string
|
||||||
UserFuzzy []string
|
ObjectRefNameFuzzy []string
|
||||||
GroupFuzzy []string
|
Levels []string
|
||||||
SourceIpFuzzy []string
|
Verbs []string
|
||||||
ObjectRefResources []string
|
Users []string
|
||||||
ObjectRefSubresources []string
|
UserFuzzy []string
|
||||||
ResponseCodes []int32
|
GroupFuzzy []string
|
||||||
ResponseStatus []string
|
SourceIpFuzzy []string
|
||||||
StartTime *time.Time
|
ObjectRefResources []string
|
||||||
EndTime *time.Time
|
ObjectRefSubresources []string
|
||||||
|
ResponseCodes []int32
|
||||||
|
ResponseStatus []string
|
||||||
|
StartTime *time.Time
|
||||||
|
EndTime *time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type Event map[string]interface{}
|
type Event map[string]interface{}
|
||||||
|
|||||||
Reference in New Issue
Block a user