prelude-sdk-beta 1427__tar.gz → 1430__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of prelude-sdk-beta might be problematic. Click here for more details.
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/PKG-INFO +1 -1
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/models/codes.py +42 -1
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta.egg-info/PKG-INFO +1 -1
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/setup.cfg +1 -1
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/test_scm.py +16 -11
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/LICENSE +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/README.md +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/__init__.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/__init__.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/build_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/detect_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/export_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/generate_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/http_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/iam_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/jobs_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/partner_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/probe_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/scm_controller.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/models/__init__.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/models/account.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta.egg-info/SOURCES.txt +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta.egg-info/dependency_links.txt +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta.egg-info/requires.txt +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta.egg-info/top_level.txt +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/pyproject.toml +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/test_build.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/test_detect.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/test_generate.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/test_iam.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/test_partner.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/test_probe.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/test_scm_build.py +0 -0
- {prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/tests/testutils.py +0 -0
|
@@ -206,6 +206,10 @@ class Control(Enum, metaclass=MissingItem):
|
|
|
206
206
|
return k
|
|
207
207
|
return SCMCategory.NONE
|
|
208
208
|
|
|
209
|
+
@property
|
|
210
|
+
def policy_types(self):
|
|
211
|
+
return [k for k, v in PolicyType.control_mapping().items() if self in v]
|
|
212
|
+
|
|
209
213
|
@property
|
|
210
214
|
def parent(self):
|
|
211
215
|
match self:
|
|
@@ -439,7 +443,9 @@ class PartnerEvents(Enum, metaclass=MissingItem):
|
|
|
439
443
|
],
|
|
440
444
|
PartnerEvents.MISSING_ASR_POLICY: [ControlCategory.ASSET_MANAGER],
|
|
441
445
|
PartnerEvents.MISSING_AV_POLICY: [ControlCategory.XDR],
|
|
442
|
-
PartnerEvents.MISSING_DEVICE_COMPLIANCE_POLICY: [
|
|
446
|
+
PartnerEvents.MISSING_DEVICE_COMPLIANCE_POLICY: [
|
|
447
|
+
ControlCategory.ASSET_MANAGER
|
|
448
|
+
],
|
|
443
449
|
PartnerEvents.MISSING_DISK_ENCRYPTION: [ControlCategory.ASSET_MANAGER],
|
|
444
450
|
PartnerEvents.MISSING_DISK_ENCRYPTION_POLICY: [
|
|
445
451
|
ControlCategory.ASSET_MANAGER
|
|
@@ -521,6 +527,41 @@ class PolicyType(Enum, metaclass=MissingItem):
|
|
|
521
527
|
def _missing_(cls, value):
|
|
522
528
|
return PolicyType.INVALID
|
|
523
529
|
|
|
530
|
+
@classmethod
|
|
531
|
+
def control_mapping(cls):
|
|
532
|
+
return {
|
|
533
|
+
PolicyType.EDR: ControlCategory.mapping()[ControlCategory.XDR],
|
|
534
|
+
PolicyType.AV: [Control.DEFENDER],
|
|
535
|
+
PolicyType.IDENTITY_PASSWORD: ControlCategory.mapping()[
|
|
536
|
+
ControlCategory.IDENTITY
|
|
537
|
+
],
|
|
538
|
+
PolicyType.EMAIL_ANTIPHISH: ControlCategory.mapping()[
|
|
539
|
+
ControlCategory.EMAIL
|
|
540
|
+
],
|
|
541
|
+
PolicyType.EMAIL_OUTBOUND: ControlCategory.mapping()[ControlCategory.EMAIL],
|
|
542
|
+
PolicyType.EMAIL_CONTENT: ControlCategory.mapping()[ControlCategory.EMAIL],
|
|
543
|
+
PolicyType.EMAIL_MALWARE: ControlCategory.mapping()[ControlCategory.EMAIL],
|
|
544
|
+
PolicyType.EMAIL_ATTACHMENT: ControlCategory.mapping()[
|
|
545
|
+
ControlCategory.EMAIL
|
|
546
|
+
],
|
|
547
|
+
PolicyType.EMAIL_LINKS: ControlCategory.mapping()[ControlCategory.EMAIL],
|
|
548
|
+
PolicyType.EMAIL_DKIM: ControlCategory.mapping()[ControlCategory.EMAIL],
|
|
549
|
+
PolicyType.DEVICE_COMPLIANCE: [Control.INTUNE],
|
|
550
|
+
PolicyType.IDENTITY_MFA: ControlCategory.mapping()[
|
|
551
|
+
ControlCategory.IDENTITY
|
|
552
|
+
],
|
|
553
|
+
PolicyType.HOST_FIREWALL: [Control.INTUNE],
|
|
554
|
+
PolicyType.NETWORK_FIREWALL: ControlCategory.mapping()[
|
|
555
|
+
ControlCategory.NETWORK
|
|
556
|
+
],
|
|
557
|
+
PolicyType.INTEL_BELOW_OS: [Control.INTEL_INTUNE],
|
|
558
|
+
PolicyType.INTEL_OS: [Control.INTEL_INTUNE],
|
|
559
|
+
PolicyType.INTEL_TDT: [Control.INTEL_INTUNE],
|
|
560
|
+
PolicyType.INTEL_CHIP: [Control.INTEL_INTUNE],
|
|
561
|
+
PolicyType.DISK_ENCRYPTION: [Control.INTUNE],
|
|
562
|
+
PolicyType.ASR: [Control.INTUNE],
|
|
563
|
+
}
|
|
564
|
+
|
|
524
565
|
|
|
525
566
|
class Platform(Enum, metaclass=MissingItem):
|
|
526
567
|
INVALID = 0
|
|
@@ -168,6 +168,16 @@ class TestScmPerControl:
|
|
|
168
168
|
raise e
|
|
169
169
|
|
|
170
170
|
def test_evaluation(self, unwrap, control):
|
|
171
|
+
def _wait_for_policies(control, instance_id, category):
|
|
172
|
+
timeout = time.time() + 300
|
|
173
|
+
while time.time() < timeout:
|
|
174
|
+
evaluation = unwrap(self.scm.evaluation)(self.scm, control, instance_id)
|
|
175
|
+
evaluation = evaluation[f"{category}_evaluation"]
|
|
176
|
+
if len(evaluation["policies"]) > 0:
|
|
177
|
+
return evaluation
|
|
178
|
+
time.sleep(5)
|
|
179
|
+
assert False, "Timed out waiting for policies to show up in evaluation"
|
|
180
|
+
|
|
171
181
|
instance_id = pytest.controls.get(control.value)
|
|
172
182
|
assert instance_id
|
|
173
183
|
evaluation = unwrap(self.scm.evaluation)(self.scm, control, instance_id)
|
|
@@ -178,7 +188,7 @@ class TestScmPerControl:
|
|
|
178
188
|
control.control_category == ControlCategory.XDR
|
|
179
189
|
or control == Control.INTUNE
|
|
180
190
|
):
|
|
181
|
-
|
|
191
|
+
evaluation = _wait_for_policies(control, instance_id, "endpoint")
|
|
182
192
|
assert {
|
|
183
193
|
"excepted",
|
|
184
194
|
"id",
|
|
@@ -194,19 +204,14 @@ class TestScmPerControl:
|
|
|
194
204
|
elif "user_evaluation" in evaluation:
|
|
195
205
|
evaluation = evaluation["user_evaluation"]
|
|
196
206
|
assert {"policies"} == evaluation.keys()
|
|
197
|
-
|
|
198
|
-
assert {
|
|
199
|
-
"
|
|
200
|
-
|
|
201
|
-
"name",
|
|
202
|
-
"noncompliant_hostnames",
|
|
203
|
-
"settings",
|
|
204
|
-
"user_count",
|
|
205
|
-
} == evaluation["policies"][0].keys()
|
|
207
|
+
evaluation = _wait_for_policies(control, instance_id, "user")
|
|
208
|
+
assert {"excepted", "id", "name", "settings", "user_count"} == evaluation[
|
|
209
|
+
"policies"
|
|
210
|
+
][0].keys()
|
|
206
211
|
elif "inbox_evaluation" in evaluation:
|
|
207
212
|
evaluation = evaluation["inbox_evaluation"]
|
|
208
213
|
assert {"policies"} == evaluation.keys()
|
|
209
|
-
|
|
214
|
+
evaluation = _wait_for_policies(control, instance_id, "inbox")
|
|
210
215
|
assert {"excepted", "id", "name", "settings", "inbox_count"} == evaluation[
|
|
211
216
|
"policies"
|
|
212
217
|
][0].keys()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/build_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/detect_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/export_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/generate_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/http_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/iam_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/jobs_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/partner_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/probe_controller.py
RENAMED
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta/controllers/scm_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prelude_sdk_beta-1427 → prelude_sdk_beta-1430}/prelude_sdk_beta.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|