Skip to content

Commit

Permalink
policy import should check whether the resource kind in the yaml file…
Browse files Browse the repository at this point in the history
… is the same
  • Loading branch information
Chunyenlin committed Mar 30, 2022
1 parent 0078401 commit 2e0dd19
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 26 deletions.
2 changes: 1 addition & 1 deletion controller/rest/admission.go
Original file line number Diff line number Diff line change
Expand Up @@ -1349,7 +1349,7 @@ func importAdmCtrl(scope string, loginDomainRoles access.DomainRole, importTask

json_data, _ := ioutil.ReadFile(importTask.TempFilename)
var secRule resource.NvAdmCtrlSecurityRule
if err := json.Unmarshal(json_data, &secRule); err != nil {
if err := json.Unmarshal(json_data, &secRule); err != nil || secRule.Kind == nil || *secRule.Kind != resource.NvAdmCtrlSecurityRuleKind {
msg := "Invalid security rule(s)"
log.WithFields(log.Fields{"error": err}).Error(msg)
postImportOp(fmt.Errorf(msg), importTask, loginDomainRoles, "", share.IMPORT_TYPE_ADMCTRL)
Expand Down
25 changes: 17 additions & 8 deletions controller/rest/dlp_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -1686,17 +1686,27 @@ func importDlp(scope string, loginDomainRoles access.DomainRole, importTask shar
var secRuleList resource.NvDlpSecurityRuleList
var secRule resource.NvDlpSecurityRule
var secRules []*resource.NvDlpSecurityRule = []*resource.NvDlpSecurityRule{nil}
if err1 := json.Unmarshal(json_data, &secRuleList); err1 != nil || len(secRuleList.Items) == 0 {
if err2 := json.Unmarshal(json_data, &secRule); err2 != nil {
msg := "Invalid security rule(s)"
log.WithFields(log.Fields{"error1": err1, "error2": err2}).Error(msg)
postImportOp(fmt.Errorf(msg), importTask, loginDomainRoles, "", share.IMPORT_TYPE_DLP)
return nil
var invalidCrdKind bool
var err error
if err = json.Unmarshal(json_data, &secRuleList); err != nil || len(secRuleList.Items) == 0 {
if err = json.Unmarshal(json_data, &secRule); err == nil {
secRules[0] = &secRule
}
secRules[0] = &secRule
} else {
secRules = secRuleList.Items
}
for _, r := range secRules {
if r.Kind == nil || *r.Kind != resource.NvDlpSecurityRuleKind {
invalidCrdKind = true
break
}
}
if invalidCrdKind || len(secRules) == 0 {
msg := "Invalid security rule(s)"
log.WithFields(log.Fields{"error": err}).Error(msg)
postImportOp(fmt.Errorf(msg), importTask, loginDomainRoles, "", share.IMPORT_TYPE_DLP)
return nil
}

var inc float32
var progress float32 // progress percentage
Expand All @@ -1709,7 +1719,6 @@ func importDlp(scope string, loginDomainRoles access.DomainRole, importTask shar
importTask.Status = share.IMPORT_RUNNING
clusHelper.PutImportTask(&importTask)

var err error
var crdHandler nvCrdHandler
crdHandler.Init(share.CLUSLockPolicyKey)
if crdHandler.AcquireLock(clusterLockWait) {
Expand Down
27 changes: 18 additions & 9 deletions controller/rest/group.go
Original file line number Diff line number Diff line change
Expand Up @@ -1618,17 +1618,27 @@ func importGroupPolicy(scope string, loginDomainRoles access.DomainRole, importT
var secRuleList resource.NvSecurityRuleList
var secRule resource.NvSecurityRule
var secRules []*resource.NvSecurityRule = []*resource.NvSecurityRule{nil}
if err1 := json.Unmarshal(json_data, &secRuleList); err1 != nil || len(secRuleList.Items) == 0 {
if err2 := json.Unmarshal(json_data, &secRule); err2 != nil {
msg := "Invalid security rule(s)"
log.WithFields(log.Fields{"error1": err1, "error2": err2}).Error(msg)
postImportOp(fmt.Errorf(msg), importTask, loginDomainRoles, "", share.IMPORT_TYPE_GROUP_POLICY)
return nil
}
secRules[0] = &secRule
var invalidCrdKind bool
var err error
if err = json.Unmarshal(json_data, &secRuleList); err != nil || len(secRuleList.Items) == 0 {
if err = json.Unmarshal(json_data, &secRule); err == nil {
secRules[0] = &secRule
}
} else {
secRules = secRuleList.Items
}
for _, r := range secRules {
if r.Kind == nil || (*r.Kind != resource.NvSecurityRuleKind && *r.Kind != resource.NvClusterSecurityRuleKind) {
invalidCrdKind = true
break
}
}
if invalidCrdKind || len(secRules) == 0 {
msg := "Invalid security rule(s)"
log.WithFields(log.Fields{"error": err}).Error(msg)
postImportOp(fmt.Errorf(msg), importTask, loginDomainRoles, "", share.IMPORT_TYPE_GROUP_POLICY)
return nil
}

var inc float32
var progress float32 // progress percentage
Expand All @@ -1641,7 +1651,6 @@ func importGroupPolicy(scope string, loginDomainRoles access.DomainRole, importT
importTask.Status = share.IMPORT_RUNNING
clusHelper.PutImportTask(&importTask)

var err error
var crdHandler nvCrdHandler
crdHandler.Init(share.CLUSLockPolicyKey)
if crdHandler.AcquireLock(clusterLockWait) {
Expand Down
25 changes: 17 additions & 8 deletions controller/rest/waf_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -1243,17 +1243,27 @@ func importWaf(scope string, loginDomainRoles access.DomainRole, importTask shar
var secRuleList resource.NvWafSecurityRuleList
var secRule resource.NvWafSecurityRule
var secRules []*resource.NvWafSecurityRule = []*resource.NvWafSecurityRule{nil}
if err1 := json.Unmarshal(json_data, &secRuleList); err1 != nil || len(secRuleList.Items) == 0 {
if err2 := json.Unmarshal(json_data, &secRule); err2 != nil {
msg := "Invalid security rule(s)"
log.WithFields(log.Fields{"error1": err1, "error2": err2}).Error(msg)
postImportOp(fmt.Errorf(msg), importTask, loginDomainRoles, "", share.IMPORT_TYPE_WAF)
return nil
var invalidCrdKind bool
var err error
if err = json.Unmarshal(json_data, &secRuleList); err != nil || len(secRuleList.Items) == 0 {
if err = json.Unmarshal(json_data, &secRule); err == nil {
secRules[0] = &secRule
}
secRules[0] = &secRule
} else {
secRules = secRuleList.Items
}
for _, r := range secRules {
if r.Kind == nil || *r.Kind != resource.NvWafSecurityRuleKind {
invalidCrdKind = true
break
}
}
if invalidCrdKind || len(secRules) == 0 {
msg := "Invalid security rule(s)"
log.WithFields(log.Fields{"error": err}).Error(msg)
postImportOp(fmt.Errorf(msg), importTask, loginDomainRoles, "", share.IMPORT_TYPE_WAF)
return nil
}

var inc float32
var progress float32 // progress percentage
Expand All @@ -1266,7 +1276,6 @@ func importWaf(scope string, loginDomainRoles access.DomainRole, importTask shar
importTask.Status = share.IMPORT_RUNNING
clusHelper.PutImportTask(&importTask)

var err error
var crdHandler nvCrdHandler
crdHandler.Init(share.CLUSLockPolicyKey)
if crdHandler.AcquireLock(clusterLockWait) {
Expand Down

0 comments on commit 2e0dd19

Please sign in to comment.