Rubrik Release 1.7.0#44132
Conversation
|
Thank you for your contribution. Your generosity and caring are unrivaled! Make sure to register your contribution by filling the Contribution Registration form, so our content wizard @kamalq97 will know the proposed changes are ready to be reviewed. |
|
Hi @crestdatasystems, thanks for contributing to the XSOAR marketplace. To receive credit for your generous contribution please follow this link. |
🤖 AI-Powered Code Review AvailableHi @kamalq97, @Benimanela, you can leverage AI-powered code review to assist with this PR! Available Commands:
|
Benimanela
left a comment
There was a problem hiding this comment.
Hi @crestdatasystems, Thank you for the work on this contribution. The implementation looks good overall.
I have a few comments from a security and standards perspective at this stage:
General
- Please run
demisto-sdk formaton the changed files. In particular,playbook-Rubrik_Quarantine_Files_using_MS_Graph_Search.ymlis being auto-detected as a silent playbook by the SDK (it would prefixid/namewithsilent-, bumpfromversionto8.9.0, and addissilent: true). Please either accept the format output and commit it, or confirm this playbook is not intended to be silent.
Incident Fields
incidentfield-Rubrik_Files_At_Risk.jsonandincidentfield-Rubrik_Violation_Status.jsonstill contain a"modified"timestamp key from a UI export (e.g."modified": "2026-04-03T11:15:42.429603116+05:30"). Please remove that key from both files.incidentfield-Rubrik_CDM_Cluster_Name.jsonis restricted to"marketplaces": ["xsoar"]but itsassociatedTypesnow includesRubrik DSPM Violation, so DSPM incidents on XSIAM will be missing this field. Please confirm this is intentional or drop the marketplace restriction.- For the new fields with
"unsearchable": false(Account Name, Location, Region, Policy Name, Snapshot ID, Violation ID, Violation Name, Violation Status), please confirm which ones genuinely need to be searchable and flip the rest totrue.
Incident Type
incidenttype-Rubrik_DSPM_Violation.json— theextractSettingsblock configuresrubrikcdmclusterid,rubrikobjectaccountname,rubrikobjectlocation, andrubrikpolarisobjectnameto extractdomainRepUnifiedindicators. These values are not domains and will generate incorrect indicators on every DSPM incident. Please disable this extraction or map to the correct indicator types.
Layout
- The layout has
"marketplaces": ["xsoar"]only, but the incident type and fields are not restricted. On XSIAM/marketplacev2 analysts will see the incident type without a layout. Please extend the layout marketplaces to includemarketplacev2andplatform, or restrict the incident type and fields toxsoarto match. - The quickView in layoutscontainer-Rubrik_DSPM_Violation.json includes a "Custom Fields" section with ~264 generic incident_* system fields - please confirm this is intentional or trim it down to the fields actually relevant to DSPM violations.
Classifier / Mapper
-
classifier-Rubrik_Polaris_Radar_-_Mapping.json(Rubrik DSPM Violation section) contains duplicate mappings for the same field:"Rubrik Object Location"(correct)"Rubrik Object location"(lowercasel, unused)
Please remove the lowercase duplicate.
-
The
Rubrik DSPM Violationmapper section does not map any field tooccurred. Please mapoccurredtocreatedAt(or the appropriate detection-time field) so incidents reflect the correct timeline.
Playbooks
Rubrik_Quarantine_Files_using_MS_Graph_Search.yml
- Task 11 (
Delete the file from its original location) runs after task 10 (Upload to quarantine folder) withcontinueonerror: trueon both. If the upload fails, the original file may still be deleted, which introduces a data-loss risk. Please guard the delete action on successful upload (e.g., validate upload output) or adjust the error handling. - Tasks 8, 10, 11, and condition 17 filter
FileInfousing twocontainsGeneralclauses combined with AND (input vs. form answer). The intended logic appears to be OR — please clarify or correct this. - In task 8, the
item_idfilter referencesinputs.file_namewhile the parallelobject_type_idfilter referencesinputs.file_path. This looks inconsistent — please confirm the logic. - Form 16 defines both file path and file name as
required: false. Please clarify whether at least one should be required. - Inputs
file_nameandfile_pathare both optional, but the descriptions do not clarify expected formats or whether one alone is sufficient. Please update the documentation. - The
Set the delete keysandClear Previous Inputsflow lacks explanation. Please add a description explaining its purpose. - The SDK
formatcommand auto-detects this playbook as silent (see General). Please rundemisto-sdk formatand either accept or investigate.
Rubrik_DSPM_Violation_Remediation_-_Rubrik_Security_Cloud.yml
- Task 20 includes a
loopblock (max: 100,wait: 1) withoutforEachorexitCondition. Please clarify intent or fix the implementation. - Task 11 (Yes/No prompt) has no
#default#path. Timed-out prompts may stall execution — please add a default route. - The
limitinput default is set to"1000"(maximum). Please confirm this is intended or reduce the default.
Rubrik_Quarantine_Files_General.yml
- The flow appears misordered: cleanup of previous form answers (tasks 11 + 12) runs before the condition that determines whether the form is needed (task 18). Please reorder or clarify the logic.
- The
Set the delete keysindirection (writing a static value to context just to read it inDeleteContext) lacks clear rationale — please simplify or document the reasoning. - The
file_informationinput is described generically but used as a list of objects with{name, path}. Please document the expected schema explicitly. - There is no integration availability check before calling the MS Graph sub-playbook. Please add an
IsIntegrationAvailableguard.
General Playbook Notes
- All three new playbooks define
outputs: []. Since these playbooks perform destructive operations, consider returning status/results so calling playbooks can make decisions based on outcomes.
If you have any questions, feel free to reach out on DFIR Slack.
Let me know once the fixes are in place so I can take another look.
|
Hi @Benimanela, We have applied suggested changes and please find the replies for the post comments. General
Incident Fields
Incident Type
Layout
Classifier / Mapper
PlaybooksRubrik_Quarantine_Files_using_MS_Graph_Search.yml
Rubrik_Quarantine_Files_using_MS_Graph_Search.yml
Rubrik_Quarantine_Files_General.yml
General Playbook Notes
|
Benimanela
left a comment
There was a problem hiding this comment.
Hi @crestdatasystems, Thank you for addressing all the feedback and implementing the requested fixes. I reviewed the updated changes, and everything looks good from my side.
Approved.
Waiting for the demo.
|
🤖 Analysis started. Please wait for results... |
|
For the Reviewer: Trigger build request has been accepted for this contribution PR. |
|
For the Reviewer: Successfully created a pipeline in GitLab with url: https://gitlab.xdr.pan.local/xdr/cortex-content/content/-/pipelines/8989632 |
🤖 AI Review DisclaimerThis review was generated by an AI-powered tool and may contain inaccuracies. Please be advised, and we extend our sincere apologies for any inconvenience this may cause. |
marketplace-ai-reviewer
left a comment
There was a problem hiding this comment.
Hi! Thanks for your contribution to the Rubrik Polaris pack.
I've reviewed the PR and noted a few areas for improvement, primarily around playbook logic, test data sanitization, and documentation. Please correct the playbook filter conditions that incorrectly use an AND operator for mutually exclusive inputs, sanitize the real-world domain (rubrik.us) in your test data, and ensure your release notes and READMEs follow standard formatting guidelines.
Thanks again for your hard work on this update!
Additionally, please address the following file-level notes:
Packs/RubrikPolaris/README.md: TheIntegration_description.mdfile is missing for the Rubrik Security Cloud integration.Packs/RubrikPolaris/Scripts/RubrikPullDSPMViolationFileInformation/README.md: This README appears to be missing standard sections such asCommand exampleandHuman Readable Output. Please ensure the README is generated using the SDK to include proper formatting, examples, and context output.
You can regenerate it by running:
demisto-sdk generate-docs --insecure -e <path/to/command_examples.txt>Packs/RubrikPolaris/Scripts/RubrikPullDSPMViolationInformation/README.md: This README appears to be missing standard sections such asCommand exampleandHuman Readable Output. Please ensure the README is generated using the SDK to include proper formatting, examples, and context output.
You can regenerate it by running:
demisto-sdk generate-docs --insecure -e <path/to/command_examples.txt>Packs/RubrikPolaris/Scripts/RubrikPushDSPMViolationStatus/README.md: This README appears to be missing standard sections such asCommand exampleandHuman Readable Output. Please ensure the README is generated using the SDK to include proper formatting, examples, and context output.
You can regenerate it by running:
demisto-sdk generate-docs --insecure -e <path/to/command_examples.txt>@kamalq97, @Benimanela please review and approve the results generated by the AI Reviewer by responding 👍 on this comment.
| "name": "DEMO-RADAR02", | ||
| "objectType": "VSPHERE_VIRTUAL_MACHINE", | ||
| "platform": "PLATFORM_DATA_CENTER", | ||
| "physicalHost": "vcsa.rubrik.us/Datacenters/Data Center/vm/Discovered virtual machine", |
There was a problem hiding this comment.
The test data contains a real-world domain rubrik.us in the physicalHost field.
| "isExtractingAllIndicatorTypes": false, | ||
| "extractIndicatorTypesIDs": [ | ||
| "domainRepUnified" | ||
| ] |
There was a problem hiding this comment.
Review indicator extraction settings for rubrikpolarisobjectname.
| nexttasks: | ||
| '#none#': | ||
| - "10" | ||
| scriptarguments: |
There was a problem hiding this comment.
The example in the file_information input description is inconsistent with the task logic.
|
|
||
| * Rubrik Quarantine Files General | ||
|
|
||
| ### Integrations |
There was a problem hiding this comment.
Update the 'Integrations' section to include the Rubrik Security Cloud integration.
|
|
||
| * Rubrik Quarantine Files using MS Graph Search | ||
|
|
||
| ### Integrations |
There was a problem hiding this comment.
Consider updating the 'Integrations' section to reflect the dependencies of the sub-playbooks.
|
|
||
| def sync_the_violation_file_information(args: dict[str, Any]) -> list: | ||
| """ | ||
| Sync the DSPM Violation file infromation from RSC. |
There was a problem hiding this comment.
Typo in docstring.
| Sync the DSPM Violation file infromation from RSC. | |
| Sync the DSPM Violation file information from RSC. |
|
|
||
| def sync_the_violation_information(args: dict[str, Any]) -> list: | ||
| """ | ||
| Sync the DSPM Violation infromation from RSC. |
There was a problem hiding this comment.
Typo in docstring.
| Sync the DSPM Violation infromation from RSC. | |
| Sync the DSPM Violation information from RSC. |
|
|
||
| def sync_the_violation_status(args: dict[str, Any]) -> dict[str, Any]: | ||
| """ | ||
| Push the DSPM Violation Status infromation from XSOAR to RSC. |
There was a problem hiding this comment.
Typo in docstring.
| Push the DSPM Violation Status infromation from XSOAR to RSC. | |
| Push the DSPM Violation Status information from XSOAR to RSC. |
| ], | ||
| ) | ||
| def test_sync_the_violation_status_with_invalid_args(args, error_message, capfd): | ||
| """Tests sync_the_violation_status command function with invalid argumets.""" |
There was a problem hiding this comment.
Typo in docstring.
| """Tests sync_the_violation_status command function with invalid argumets.""" | |
| """Tests sync_the_violation_status command function with invalid arguments.""" |
| | --- | --- | | ||
| | violation_id | The ID of the DSPM Violation.<br/><br/>Note: If not provided, the script will try to retrieve it from the incident context. | | ||
| | object_id | The Object ID.<br/><br/>Note: If not provided, the script will try to retrieve it from the incident context. | | ||
| | snapshot_id | The Sanpshot ID.<br/><br/>Note: If not provided, the script will try to retrieve it from the incident context. | |
There was a problem hiding this comment.
There is a typo in the word "Snapshot".
| | snapshot_id | The Sanpshot ID.<br/><br/>Note: If not provided, the script will try to retrieve it from the incident context. | | |
| | snapshot_id | The Snapshot ID.<br/><br/>Note: If not provided, the script will try to retrieve it from the incident context. | |
|
Validate summary Verdict: PR can be force merged from validate perspective? ❌ |
|
Thank you for your contribution. Please address all comments left by @marketplace-ai-reviewer. In addition, could you please fix the following validation errors? Please let me know once all the changes were made so we can re-review. |
Contributing to Cortex XSOAR Content
Make sure to register your contribution by filling the contribution registration form
The Pull Request will be reviewed only after the contribution registration form is filled.
Status
Description
Updated Integration "Rubrik Security Cloud":
Added following Playbooks:
Rubrik Quarantine Files using MS Graph Search
Rubrik Quarantine Files General
Rubrik DSPM Violation Remediation - Rubrik Security Cloud
Must have
relates: https://jira-dc.paloaltonetworks.com/browse/CIAC-16692