@@ -29,7 +29,7 @@ def policy_v2(self):
29
29
30
30
def _get_falco_rules (self , kind ):
31
31
res = self .http .get (self .url + '/api/settings/falco/{}RulesFile' .format (kind ), headers = self .hdrs ,
32
- verify = self .ssl_verify )
32
+ verify = self .ssl_verify )
33
33
if not self ._checkResponse (res ):
34
34
return [False , self .lasterr ]
35
35
data = res .json ()
@@ -65,10 +65,20 @@ def get_user_falco_rules(self):
65
65
`examples/get_secure_user_falco_rules.py <https://github.com/draios/python-sdc-client/blob/master/examples/get_secure_user_falco_rules.py>`_
66
66
'''
67
67
ok , res = self ._get_user_falco_rules ()
68
- return [False , res ] if not ok else [True , res ["customFalcoRulesFiles" ]["files" ][0 ]["variants" ][0 ]["content" ]]
68
+ if not ok :
69
+ return [False , res ]
70
+
71
+ local_rules_file = [file
72
+ for file in res ["customFalcoRulesFiles" ]["files" ]
73
+ if file ["name" ] == "falco_rules_local.yaml" ]
74
+ if len (local_rules_file ) == 0 :
75
+ return [False , "Expected falco_rules_local.yaml file, but no file found" ]
76
+
77
+ return [True , local_rules_file [0 ]["variants" ][0 ]["content" ]]
69
78
70
79
def _get_user_falco_rules (self ):
71
- res = self .http .get (self .url + '/api/settings/falco/customRulesFiles' , headers = self .hdrs , verify = self .ssl_verify )
80
+ res = self .http .get (self .url + '/api/settings/falco/customRulesFiles' , headers = self .hdrs ,
81
+ verify = self .ssl_verify )
72
82
73
83
if not self ._checkResponse (res ):
74
84
return [False , self .lasterr ]
@@ -84,7 +94,7 @@ def _set_falco_rules(self, kind, rules_content):
84
94
payload [1 ]["{}RulesFile" .format (kind )]["content" ] = rules_content # pylint: disable=unsubscriptable-object
85
95
86
96
res = self .http .put (self .url + '/api/settings/falco/{}RulesFile' .format (kind ), headers = self .hdrs ,
87
- data = json .dumps (payload [1 ]), verify = self .ssl_verify )
97
+ data = json .dumps (payload [1 ]), verify = self .ssl_verify )
88
98
if not self ._checkResponse (res ):
89
99
return [False , self .lasterr ]
90
100
return [True , res .json ()]
@@ -124,10 +134,16 @@ def set_user_falco_rules(self, rules_content):
124
134
if not ok :
125
135
return res
126
136
127
- res ["customFalcoRulesFiles" ]["files" ][0 ]["variants" ][0 ]["content" ] = rules_content
137
+ local_rules_file = [file
138
+ for file in res ["customFalcoRulesFiles" ]["files" ]
139
+ if file ["name" ] == "falco_rules_local.yaml" ]
140
+ if len (local_rules_file ) == 0 :
141
+ return [False , "Expected falco_rules_local.yaml file, but no file found" ]
142
+
143
+ local_rules_file [0 ]["variants" ][0 ]["content" ] = rules_content
128
144
129
145
res = self .http .put (self .url + '/api/settings/falco/customRulesFiles' , headers = self .hdrs ,
130
- data = json .dumps (res ), verify = self .ssl_verify )
146
+ data = json .dumps (res ), verify = self .ssl_verify )
131
147
132
148
if not self ._checkResponse (res ):
133
149
return [False , self .lasterr ]
@@ -139,7 +155,7 @@ def set_user_falco_rules(self, rules_content):
139
155
def _get_falco_rules_files (self , kind ):
140
156
141
157
res = self .http .get (self .url + '/api/settings/falco/{}RulesFiles' .format (kind ), headers = self .hdrs ,
142
- verify = self .ssl_verify )
158
+ verify = self .ssl_verify )
143
159
if not self ._checkResponse (res ):
144
160
return [False , self .lasterr ]
145
161
data = res .json ()
@@ -302,7 +318,7 @@ def _set_falco_rules_files(self, kind, rules_files):
302
318
obj ["defaultPolicies" ] = rules_files ["defaultPolicies" ]
303
319
304
320
res = self .http .put (self .url + '/api/settings/falco/{}RulesFiles' .format (kind ), headers = self .hdrs ,
305
- data = json .dumps (payload [1 ]), verify = self .ssl_verify )
321
+ data = json .dumps (payload [1 ]), verify = self .ssl_verify )
306
322
if not self ._checkResponse (res ):
307
323
return [False , self .lasterr ]
308
324
return [True , res .json ()]
@@ -530,7 +546,7 @@ def add_policy(self, name, description, rule_names=[], actions=[], scope=None, s
530
546
"notificationChannelIds" : notification_channels
531
547
}
532
548
res = self .http .post (self .url + '/api/v2/policies' , headers = self .hdrs , data = json .dumps (policy ),
533
- verify = self .ssl_verify )
549
+ verify = self .ssl_verify )
534
550
return self ._request_result (res )
535
551
536
552
def add_policy_json (self , policy_json ):
@@ -556,7 +572,7 @@ def add_policy_json(self, policy_json):
556
572
return [False , "policy json is not valid json: {}" .format (str (e ))]
557
573
558
574
res = self .http .post (self .url + '/api/v2/policies' , headers = self .hdrs , data = json .dumps (policy_obj ),
559
- verify = self .ssl_verify )
575
+ verify = self .ssl_verify )
560
576
return self ._request_result (res )
561
577
562
578
def update_policy (self , id , name = None , description = None , rule_names = None , actions = None , scope = None ,
@@ -601,7 +617,7 @@ def update_policy(self, id, name=None, description=None, rule_names=None, action
601
617
policy ["notificationChannelIds" ] = notification_channels
602
618
603
619
res = self .http .put (self .url + '/api/v2/policies/{}' .format (id ), headers = self .hdrs , data = json .dumps (policy ),
604
- verify = self .ssl_verify )
620
+ verify = self .ssl_verify )
605
621
return self ._request_result (res )
606
622
607
623
def update_policy_json (self , policy_json ):
@@ -630,7 +646,7 @@ def update_policy_json(self, policy_json):
630
646
return [False , "Policy Json does not have an 'id' field" ]
631
647
632
648
res = self .http .put (self .url + '/api/v2/policies/{}' .format (policy_obj ["id" ]), headers = self .hdrs ,
633
- data = json .dumps (policy_obj ), verify = self .ssl_verify )
649
+ data = json .dumps (policy_obj ), verify = self .ssl_verify )
634
650
return self ._request_result (res )
635
651
636
652
def delete_policy_name (self , name ):
@@ -703,7 +719,7 @@ def get_rules_group(self, name):
703
719
A JSON object representing the list of rules.
704
720
'''
705
721
res = self .http .get (self .url + '/api/secure/rules/groups?name={}' .format (name ), headers = self .hdrs ,
706
- verify = self .ssl_verify )
722
+ verify = self .ssl_verify )
707
723
return self ._request_result (res )
708
724
709
725
def get_rule_id (self , id ):
@@ -739,7 +755,7 @@ def add_rule(self, name, details={}, description="", tags=[]):
739
755
"tags" : tags
740
756
}
741
757
res = self .http .post (self .url + '/api/secure/rules' , data = json .dumps (rule ), headers = self .hdrs ,
742
- verify = self .ssl_verify )
758
+ verify = self .ssl_verify )
743
759
return self ._request_result (res )
744
760
745
761
def update_rule (self , id , details = {}, description = "" , tags = []):
@@ -767,7 +783,7 @@ def update_rule(self, id, details={}, description="", tags=[]):
767
783
if tags :
768
784
rule ['tags' ] = tags
769
785
res = self .http .put (self .url + '/api/secure/rules/{}' .format (id ), data = json .dumps (rule ), headers = self .hdrs ,
770
- verify = self .ssl_verify )
786
+ verify = self .ssl_verify )
771
787
return self ._request_result (res )
772
788
773
789
def delete_rule (self , id ):
@@ -811,7 +827,7 @@ def get_falco_macros_group(self, name):
811
827
A JSON object representing the list of falco macros.
812
828
'''
813
829
res = self .http .get (self .url + '/api/secure/falco/macros/groups?name={}' .format (name ), headers = self .hdrs ,
814
- verify = self .ssl_verify )
830
+ verify = self .ssl_verify )
815
831
return self ._request_result (res )
816
832
817
833
def get_falco_macro_id (self , id ):
@@ -825,7 +841,7 @@ def get_falco_macro_id(self, id):
825
841
A JSON object representing the falco macro.
826
842
'''
827
843
res = self .http .get (self .url + '/api/secure/falco/macros/{}' .format (id ), headers = self .hdrs ,
828
- verify = self .ssl_verify )
844
+ verify = self .ssl_verify )
829
845
return self ._request_result (res )
830
846
831
847
def add_falco_macro (self , name , condition , append = False ):
@@ -848,7 +864,7 @@ def add_falco_macro(self, name, condition, append=False):
848
864
"append" : append
849
865
}
850
866
res = self .http .post (self .url + '/api/secure/falco/macros' , data = json .dumps (macro ), headers = self .hdrs ,
851
- verify = self .ssl_verify )
867
+ verify = self .ssl_verify )
852
868
return self ._request_result (res )
853
869
854
870
def update_falco_macro (self , id , condition ):
@@ -869,7 +885,7 @@ def update_falco_macro(self, id, condition):
869
885
macro ['condition' ]['condition' ] = condition
870
886
871
887
res = self .http .put (self .url + '/api/secure/falco/macros/{}' .format (id ), data = json .dumps (macro ),
872
- headers = self .hdrs , verify = self .ssl_verify )
888
+ headers = self .hdrs , verify = self .ssl_verify )
873
889
return self ._request_result (res )
874
890
875
891
def delete_falco_macro (self , id ):
@@ -883,7 +899,7 @@ def delete_falco_macro(self, id):
883
899
A JSON object representing the macro.
884
900
'''
885
901
res = self .http .delete (self .url + '/api/secure/falco/macros/{}' .format (id ), headers = self .hdrs ,
886
- verify = self .ssl_verify )
902
+ verify = self .ssl_verify )
887
903
return self ._request_result (res )
888
904
889
905
def list_falco_lists (self ):
@@ -914,7 +930,7 @@ def get_falco_lists_group(self, name):
914
930
A JSON object representing the list of falco lists.
915
931
'''
916
932
res = self .http .get (self .url + '/api/secure/falco/lists/groups?name={}' .format (name ), headers = self .hdrs ,
917
- verify = self .ssl_verify )
933
+ verify = self .ssl_verify )
918
934
return self ._request_result (res )
919
935
920
936
def get_falco_list_id (self , id ):
@@ -928,7 +944,7 @@ def get_falco_list_id(self, id):
928
944
A JSON object representing the falco list.
929
945
'''
930
946
res = self .http .get (self .url + '/api/secure/falco/lists/{}' .format (id ), headers = self .hdrs ,
931
- verify = self .ssl_verify )
947
+ verify = self .ssl_verify )
932
948
return self ._request_result (res )
933
949
934
950
def add_falco_list (self , name , items , append = False ):
@@ -950,7 +966,7 @@ def add_falco_list(self, name, items, append=False):
950
966
"append" : append
951
967
}
952
968
res = self .http .post (self .url + '/api/secure/falco/lists' , data = json .dumps (flist ), headers = self .hdrs ,
953
- verify = self .ssl_verify )
969
+ verify = self .ssl_verify )
954
970
return self ._request_result (res )
955
971
956
972
def update_falco_list (self , id , items ):
@@ -971,7 +987,7 @@ def update_falco_list(self, id, items):
971
987
flist ['items' ]['items' ] = items
972
988
973
989
res = self .http .put (self .url + '/api/secure/falco/lists/{}' .format (id ), data = json .dumps (flist ),
974
- headers = self .hdrs , verify = self .ssl_verify )
990
+ headers = self .hdrs , verify = self .ssl_verify )
975
991
return self ._request_result (res )
976
992
977
993
def delete_falco_list (self , id ):
@@ -985,7 +1001,7 @@ def delete_falco_list(self, id):
985
1001
A JSON object representing the list.
986
1002
'''
987
1003
res = self .http .delete (self .url + '/api/secure/falco/lists/{}' .format (id ), headers = self .hdrs ,
988
- verify = self .ssl_verify )
1004
+ verify = self .ssl_verify )
989
1005
return self ._request_result (res )
990
1006
991
1007
def add_compliance_task (self , name , module_name = 'docker-bench-security' , schedule = '06:00:00Z/PT12H' , scope = None ,
@@ -1012,7 +1028,7 @@ def add_compliance_task(self, name, module_name='docker-bench-security', schedul
1012
1028
"schedule" : schedule
1013
1029
}
1014
1030
res = self .http .post (self .url + '/api/complianceTasks' , data = json .dumps (task ), headers = self .hdrs ,
1015
- verify = self .ssl_verify )
1031
+ verify = self .ssl_verify )
1016
1032
return self ._request_result (res )
1017
1033
1018
1034
def list_compliance_tasks (self ):
@@ -1070,7 +1086,7 @@ def update_compliance_task(self, id, name=None, module_name=None, schedule=None,
1070
1086
}
1071
1087
task .update ({k : v for k , v in options .items () if v is not None })
1072
1088
res = self .http .put (self .url + '/api/complianceTasks/{}' .format (id ), data = json .dumps (task ), headers = self .hdrs ,
1073
- verify = self .ssl_verify )
1089
+ verify = self .ssl_verify )
1074
1090
return self ._request_result (res )
1075
1091
1076
1092
def delete_compliance_task (self , id ):
@@ -1081,7 +1097,7 @@ def delete_compliance_task(self, id):
1081
1097
- id: the id of the compliance task to delete
1082
1098
'''
1083
1099
res = self .http .delete (self .url + '/api/complianceTasks/{}' .format (id ), headers = self .hdrs ,
1084
- verify = self .ssl_verify )
1100
+ verify = self .ssl_verify )
1085
1101
if not self ._checkResponse (res ):
1086
1102
return False , self .lasterr
1087
1103
@@ -1119,7 +1135,8 @@ def get_compliance_results(self, id):
1119
1135
**Success Return Value**
1120
1136
A JSON representation of the compliance task run result.
1121
1137
'''
1122
- res = self .http .get (self .url + '/api/complianceResults/{}' .format (id ), headers = self .hdrs , verify = self .ssl_verify )
1138
+ res = self .http .get (self .url + '/api/complianceResults/{}' .format (id ), headers = self .hdrs ,
1139
+ verify = self .ssl_verify )
1123
1140
return self ._request_result (res )
1124
1141
1125
1142
def get_compliance_results_csv (self , id ):
@@ -1133,7 +1150,7 @@ def get_compliance_results_csv(self, id):
1133
1150
A CSV representation of the compliance task run result.
1134
1151
'''
1135
1152
res = self .http .get (self .url + '/api/complianceResults/{}/csv' .format (id ), headers = self .hdrs ,
1136
- verify = self .ssl_verify )
1153
+ verify = self .ssl_verify )
1137
1154
if not self ._checkResponse (res ):
1138
1155
return False , self .lasterr
1139
1156
0 commit comments