Skip to content
This repository was archived by the owner on Dec 5, 2025. It is now read-only.

Commit 050e4e1

Browse files
richard-julienJeremyCloarec
authored andcommitted
[client] Adapt sharing and start restrict access
1 parent 70a2284 commit 050e4e1

File tree

2 files changed

+52
-11
lines changed

2 files changed

+52
-11
lines changed

pycti/entities/opencti_stix_core_object.py

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1753,6 +1753,33 @@ def rules_rescan(self, **kwargs):
17531753
self.opencti.app_logger.error("[stix_core_object] Missing parameters: id")
17541754
return None
17551755

1756+
"""
1757+
Ask clear restriction
1758+
1759+
:param element_id: the Stix-Core-Object id
1760+
:return void
1761+
"""
1762+
1763+
def clear_access_restriction(self, **kwargs):
1764+
element_id = kwargs.get("element_id", None)
1765+
if element_id is not None:
1766+
query = """
1767+
mutation StixCoreObjectEdit($id: ID!) {
1768+
stixCoreObjectEdit(id: $id) {
1769+
clearAccessRestriction
1770+
}
1771+
}
1772+
"""
1773+
self.opencti.query(
1774+
query,
1775+
{
1776+
"id": element_id,
1777+
},
1778+
)
1779+
else:
1780+
self.opencti.app_logger.error("[stix_core_object] Missing parameters: id")
1781+
return None
1782+
17561783
"""
17571784
Ask enrichment with multiple connectors
17581785
@@ -1789,11 +1816,11 @@ def ask_enrichment(self, **kwargs):
17891816
:return void
17901817
"""
17911818

1792-
def organization_share(self, entity_id, organization_ids):
1819+
def organization_share(self, entity_id, organization_ids, sharing_direct_container):
17931820
query = """
1794-
mutation StixCoreObjectEdit($id: ID!, $organizationId: [ID!]!) {
1821+
mutation StixCoreObjectEdit($id: ID!, $organizationId: [ID!]!, $directContainerSharing: Boolean) {
17951822
stixCoreObjectEdit(id: $id) {
1796-
restrictionOrganizationAdd(organizationId: $organizationId) {
1823+
restrictionOrganizationAdd(organizationId: $organizationId, directContainerSharing: $directContainerSharing) {
17971824
id
17981825
}
17991826
}
@@ -1804,6 +1831,7 @@ def organization_share(self, entity_id, organization_ids):
18041831
{
18051832
"id": entity_id,
18061833
"organizationId": organization_ids,
1834+
"directContainerSharing": sharing_direct_container,
18071835
},
18081836
)
18091837

@@ -1815,11 +1843,13 @@ def organization_share(self, entity_id, organization_ids):
18151843
:return void
18161844
"""
18171845

1818-
def organization_unshare(self, entity_id, organization_ids):
1846+
def organization_unshare(
1847+
self, entity_id, organization_ids, sharing_direct_container
1848+
):
18191849
query = """
1820-
mutation StixCoreObjectEdit($id: ID!, $organizationId: [ID!]!) {
1850+
mutation StixCoreObjectEdit($id: ID!, $organizationId: [ID!]!, $directContainerSharing: Boolean) {
18211851
stixCoreObjectEdit(id: $id) {
1822-
restrictionOrganizationDelete(organizationId: $organizationId) {
1852+
restrictionOrganizationDelete(organizationId: $organizationId, directContainerSharing: $directContainerSharing) {
18231853
id
18241854
}
18251855
}
@@ -1830,6 +1860,7 @@ def organization_unshare(self, entity_id, organization_ids):
18301860
{
18311861
"id": entity_id,
18321862
"organizationId": organization_ids,
1863+
"directContainerSharing": sharing_direct_container,
18331864
},
18341865
)
18351866

pycti/utils/opencti_stix2.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2479,12 +2479,18 @@ def rules_rescan(self, item):
24792479
self.opencti.stix_core_object.rules_rescan(element_id=item["id"])
24802480

24812481
def organization_share(self, item):
2482-
organization_ids = item["organization_ids"]
2483-
self.opencti.stix_core_object.organization_share(item["id"], organization_ids)
2482+
organization_ids = item["sharing_organization_ids"]
2483+
sharing_direct_container = item["sharing_direct_container"]
2484+
self.opencti.stix_core_object.organization_share(
2485+
item["id"], organization_ids, sharing_direct_container
2486+
)
24842487

24852488
def organization_unshare(self, item):
2486-
organization_ids = item["organization_ids"]
2487-
self.opencti.stix_core_object.organization_unshare(item["id"], organization_ids)
2489+
organization_ids = item["sharing_organization_ids"]
2490+
sharing_direct_container = item["sharing_direct_container"]
2491+
self.opencti.stix_core_object.organization_unshare(
2492+
item["id"], organization_ids, sharing_direct_container
2493+
)
24882494

24892495
def apply_opencti_operation(self, item, operation):
24902496
if operation == "delete" or operation == "delete-force":
@@ -2507,7 +2513,11 @@ def apply_opencti_operation(self, item, operation):
25072513
self.organization_share(item=item)
25082514
elif operation == "unshare":
25092515
self.organization_unshare(item=item)
2510-
elif operation == "enrichment":
2516+
elif operation == "clear_access_restriction":
2517+
self.opencti.stix_core_object.clear_access_restriction(
2518+
element_id=item["id"]
2519+
)
2520+
elif item["opencti_operation"] == "enrichment":
25112521
connector_ids = item["connector_ids"]
25122522
self.opencti.stix_core_object.ask_enrichment(
25132523
element_id=item["id"], connector_ids=connector_ids

0 commit comments

Comments
 (0)