diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle
index efc2fcc95..a67e3704a 100644
Binary files a/.doctrees/environment.pickle and b/.doctrees/environment.pickle differ
diff --git a/.doctrees/fn_ansible_tower/README.doctree b/.doctrees/fn_ansible_tower/README.doctree
index 1628bd327..b23ce5dc9 100644
Binary files a/.doctrees/fn_ansible_tower/README.doctree and b/.doctrees/fn_ansible_tower/README.doctree differ
diff --git a/.doctrees/fn_aws_guardduty/README.doctree b/.doctrees/fn_aws_guardduty/README.doctree
index c2be76e0d..12dbaa2d3 100644
Binary files a/.doctrees/fn_aws_guardduty/README.doctree and b/.doctrees/fn_aws_guardduty/README.doctree differ
diff --git a/.doctrees/fn_microsoft_sentinel/README.doctree b/.doctrees/fn_microsoft_sentinel/README.doctree
index 5fb86c872..c0c19b31c 100644
Binary files a/.doctrees/fn_microsoft_sentinel/README.doctree and b/.doctrees/fn_microsoft_sentinel/README.doctree differ
diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree
index d1e40dd35..64c5ac39d 100644
Binary files a/.doctrees/index.doctree and b/.doctrees/index.doctree differ
diff --git a/.doctrees/fn_watson_translate/README.doctree b/.doctrees/older/fn_watson_translate/README.doctree
similarity index 88%
rename from .doctrees/fn_watson_translate/README.doctree
rename to .doctrees/older/fn_watson_translate/README.doctree
index bd32e2637..4bc63713f 100644
Binary files a/.doctrees/fn_watson_translate/README.doctree and b/.doctrees/older/fn_watson_translate/README.doctree differ
diff --git a/.doctrees/rc_data_feed/README.doctree b/.doctrees/rc_data_feed/README.doctree
index 17ecc5f0d..2887e0021 100644
Binary files a/.doctrees/rc_data_feed/README.doctree and b/.doctrees/rc_data_feed/README.doctree differ
diff --git a/.environments/README.html b/.environments/README.html
index 0ed60ef57..ef5c9e80c 100644
--- a/.environments/README.html
+++ b/.environments/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/.helper-scripts/mirror-containers/README.html b/.helper-scripts/mirror-containers/README.html
index cfc0afb1f..5f3ea33a4 100644
--- a/.helper-scripts/mirror-containers/README.html
+++ b/.helper-scripts/mirror-containers/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/.helper-scripts/soar-python-search-utility/README.html b/.helper-scripts/soar-python-search-utility/README.html
index fc6af4c51..3938c6270 100644
--- a/.helper-scripts/soar-python-search-utility/README.html
+++ b/.helper-scripts/soar-python-search-utility/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/.scripts/refresh_all_apps/README.html b/.scripts/refresh_all_apps/README.html
index 3ccf807b9..81b3d7e8a 100644
--- a/.scripts/refresh_all_apps/README.html
+++ b/.scripts/refresh_all_apps/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/_images/dt-ansible-tower-job-templates.png b/_images/dt-ansible-tower-job-templates.png
new file mode 100644
index 000000000..3916adae0
Binary files /dev/null and b/_images/dt-ansible-tower-job-templates.png differ
diff --git a/_images/dt-ansible-tower-launched-jobs.png b/_images/dt-ansible-tower-launched-jobs.png
new file mode 100644
index 000000000..6a98718e7
Binary files /dev/null and b/_images/dt-ansible-tower-launched-jobs.png differ
diff --git a/_images/job_results.png b/_images/job_results.png
new file mode 100644
index 000000000..883531d10
Binary files /dev/null and b/_images/job_results.png differ
diff --git a/_images/list_job_templates.png b/_images/list_job_templates.png
new file mode 100644
index 000000000..c0d195070
Binary files /dev/null and b/_images/list_job_templates.png differ
diff --git a/_images/list_jobs.png b/_images/list_jobs.png
new file mode 100644
index 000000000..02ae8249e
Binary files /dev/null and b/_images/list_jobs.png differ
diff --git a/_images/run_a_job_artifact.png b/_images/run_a_job_artifact.png
new file mode 100644
index 000000000..1e9df0482
Binary files /dev/null and b/_images/run_a_job_artifact.png differ
diff --git a/_images/run_an_ad_hoc_command.png b/_images/run_an_ad_hoc_command.png
new file mode 100644
index 000000000..f8d1eb20c
Binary files /dev/null and b/_images/run_an_ad_hoc_command.png differ
diff --git a/_sources/fn_ansible_tower/README.md.txt b/_sources/fn_ansible_tower/README.md.txt
index 5f7154757..2078e18af 100644
--- a/_sources/fn_ansible_tower/README.md.txt
+++ b/_sources/fn_ansible_tower/README.md.txt
@@ -1,26 +1,49 @@
# Ansible Tower
+
+## Table of Contents
- [Release Notes](#release-notes)
- [Overview](#overview)
+ - [Key Features](#key-features)
- [Requirements](#requirements)
+ - [SOAR platform](#soar-platform)
+ - [Cloud Pak for Security](#cloud-pak-for-security)
+ - [Proxy Server](#proxy-server)
+ - [Python Environment](#python-environment)
- [Installation](#installation)
-- [Uninstall](#uninstall)
-- [Troubleshooting](#troubleshooting)
-- [Support](#support)
+ - [Install](#install)
+ - [App Configuration](#app-configuration)
+- [Function - Ansible Tower Get Ad Hoc Command Results](#function---ansible-tower-get-ad-hoc-command-results)
+- [Function - Ansible Tower Get Job Results](#function---ansible-tower-get-job-results)
+- [Function - Ansible Tower List Job Templates](#function---ansible-tower-list-job-templates)
+- [Function - Ansible Tower List Jobs](#function---ansible-tower-list-jobs)
+- [Function - Ansible Tower Run an Ad Hoc Command](#function---ansible-tower-run-an-ad-hoc-command)
+- [Function - Ansible Tower Run Job](#function---ansible-tower-run-job)
+ - [Custom Layouts](#custom-layouts)
+- [Data Table - Ansible Tower Job Templates](#data-table---ansible-tower-job-templates)
+- [Data Table - Ansible Tower Launched Jobs](#data-table---ansible-tower-launched-jobs)
+- [Rules](#rules)
+- [Troubleshooting & Support](#troubleshooting--support)
---
@@ -31,6 +54,7 @@
-->
| Release | Date | Notes |
| ------- | ---- | ----- |
+| v1.0.4 | 10/2024 | Rebuilt the app to server v51.0.0 |
| v1.0.3 | 7/2021 | Bug fix to handle results data |
| v1.0.2 | 2/2021 | Bug fix for paged results from templates, jobs, etc. |
| v1.0.1 | 12/2020 | App Host support |
@@ -58,28 +82,70 @@ Specific features include:
![screenshot: main](./doc/screenshots/main.png)
-
---
## Requirements
-* Resilient platform >= `v36.0`
-* An Integration Server running `resilient_circuits>=30.0.0`
- * To set up an Integration Server see: [ibm.biz/res-int-server-guide](https://ibm.biz/res-int-server-guide)
+This app supports the IBM Security QRadar SOAR Platform and the IBM Security QRadar SOAR for IBM Cloud Pak for Security.
+
+### SOAR platform
+The SOAR platform supports two app deployment mechanisms, Edge Gateway (also known as App Host) and integration server.
+
+If deploying to a SOAR platform with an App Host, the requirements are:
+* SOAR platform >= `51.0.0`.
+* The app is in a container-based format (available from the AppExchange as a `zip` file).
+
+If deploying to a SOAR platform with an integration server, the requirements are:
+* SOAR platform >= `51.0.0`.
+* The app is in the older integration format (available from the AppExchange as a `zip` file which contains a `tar.gz` file).
+* Integration server is running `resilient_circuits>=51.0.0`.
+* If using an API key account, make sure the account provides the following minimum permissions:
+ | Name | Permissions |
+ | ---- | ----------- |
+ | Org Data | Read |
+ | Function | Read |
+
+The following SOAR platform guides provide additional information:
+* _Edge Gateway Deployment Guide_ or _App Host Deployment Guide_: provides installation, configuration, and troubleshooting information, including proxy server settings.
+* _Integration Server Guide_: provides installation, configuration, and troubleshooting information, including proxy server settings.
+* _System Administrator Guide_: provides the procedure to install, configure and deploy apps.
+
+The above guides are available on the IBM Documentation website at [ibm.biz/soar-docs](https://ibm.biz/soar-docs). On this web page, select your SOAR platform version. On the follow-on page, you can find the _Edge Gateway Deployment Guide_, _App Host Deployment Guide_, or _Integration Server Guide_ by expanding **Apps** in the Table of Contents pane. The System Administrator Guide is available by expanding **System Administrator**.
+
+### Cloud Pak for Security
+If you are deploying to IBM Cloud Pak for Security, the requirements are:
+* IBM Cloud Pak for Security >= `1.10.16`.
+* Cloud Pak is configured with an Edge Gateway.
+* The app is in a container-based format (available from the AppExchange as a `zip` file).
+
+The following Cloud Pak guides provide additional information:
+* _Edge Gateway Deployment Guide_ or _App Host Deployment Guide_: provides installation, configuration, and troubleshooting information, including proxy server settings. From the Table of Contents, select Case Management and Orchestration & Automation > **Orchestration and Automation Apps**.
+* _System Administrator Guide_: provides information to install, configure, and deploy apps. From the IBM Cloud Pak for Security IBM Documentation table of contents, select Case Management and Orchestration & Automation > **System administrator**.
+
+These guides are available on the IBM Documentation website at [ibm.biz/cp4s-docs](https://ibm.biz/cp4s-docs). From this web page, select your IBM Cloud Pak for Security version. From the version-specific IBM Documentation page, select Case Management and Orchestration & Automation.
+
+### Proxy Server
+The app **does** support a proxy server.
+
+### Python Environment
+Python 3.9, 3.11, and 3.12 are officially supported. When deployed as an app, the app runs on Python 3.11.
+Additional package dependencies may exist for each of these packages:
+* resilient_circuits>=51.0.0
+* resilient_lib>=51.0.0
---
## Installation
-### App Host
-All the components for running this integration in a container already exist when using the App Host app.
-To install,
+### Install
+* To install or uninstall an App or Integration on the _SOAR platform_, see the documentation at [ibm.biz/soar-docs](https://ibm.biz/soar-docs).
+* To install or uninstall an App on _IBM Cloud Pak for Security_, see the documentation at [ibm.biz/cp4s-docs](https://ibm.biz/cp4s-docs) and follow the instructions above to navigate to Orchestration and Automation.
+
+### App Configuration
+The following table provides the settings you need to configure the app. These settings are made in the app.config file. See the documentation discussed in the Requirements section for the procedure.
-* Navigate to Administrative Settings and then the Apps tab.
-* Click the Install button and select the downloaded file: app-fn_ansible_tower-x.x.x.zip.
-* Go to the Configuration tab and edit the app.config file, editing the url, access credentials, etc.
| Config | Required | Example | Description |
| ------ | :------: | ------- | ----------- |
@@ -88,7 +154,6 @@ To install,
| **url** | Yes | `` | *URL to Ansible Tower* |
| **cafile** | Yes | `False` | *False for no SSL certificate verification or path to certificate file* |
-
### Integration Server
* Download the `app-fn_ansible_tower-x.x.x.zip`.
* Copy the `.zip` to your Integration Server and SSH into it.
@@ -139,7 +204,7 @@ To install,
![screenshot: custom_layouts](./doc/screenshots/custom_layouts.png)
----
+ ---
## Uninstall
* SSH into your Integration Server.
@@ -150,45 +215,556 @@ To install,
* Open the config file, scroll to the [fn_ansible_tower] section and remove the section or prefix `#` to comment out the section.
* **Save** and **Close** the app.config file.
----
+## Function - Ansible Tower Get Ad Hoc Command Results
+Return the results of an ad hoc command job
+
+ ![screenshot: fn-ansible-tower-get-ad-hoc-command-results ](./doc/screenshots/job_results.png)
+
+Inputs:
+
+
+| Name | Type | Required | Example | Tooltip |
+| ---- | :--: | :------: | ------- | ------- |
+| `incident_id` | `number` | Yes | `-` | - |
+| `tower_job_id` | `number` | Yes | `-` | Launched job Id for a job template |
+| `tower_save_as` | `select` | Yes | `-` | - |
+
+
+
+
+Outputs:
+
+
+> **NOTE:** This example might be in JSON format, but `results` is a Python Dictionary on the SOAR platform.
+
+```python
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+```
+
+
+
+
+Example Function Input Script:
+
+
+```python
+inputs.tower_job_id = row['job_id']
+inputs.tower_save_as = rule.properties.tower_save_as
+inputs.incident_id = incident.id
+```
+
+
+
+
+Example Function Post Process Script:
+
+
+```python
+import re
+
+if results.content:
+ finished = results.content['summary']['finished'].replace('T', ' ') if results.content['summary']['finished'] else None
+
+ row['status'] = results.content['summary']['status']
+ row['completion_date'] = finished
+
+ note = u"Job Id: {}\nStatus: {}\nTemplate Name: {}\nFinished: {}".format(results.inputs['tower_job_id'], results.content['summary']['status'],
+ results.content['summary']['name'], finished)
+ if not results.inputs['tower_save_as_attachment']:
+ note = note + u"\n".join(event.get("stdout") for event in results.content['events']['results'])
+ incident.addNote(re.sub(r'[\x00-\x7f]\[[0-9;]*m', r'', note)) # remove color hilighting
+ else:
+ attachment_name = u"{}_{}.txt".format(results.content['summary']['name'].replace(" ", "_"), results.inputs['tower_job_id'])
+ note = note + u"\nAttachment Name: {}".format(attachment_name)
+ incident.addNote(note)
+
+```
+
+
+
-## Troubleshooting
-There are several ways to verify the successful operation of a function.
+---
+## Function - Ansible Tower Get Job Results
+Get the results of a complete job
+
+ ![screenshot: fn-ansible-tower-get-job-results ](./doc/screenshots/job_results.png)
+
+Inputs:
+
+
+| Name | Type | Required | Example | Tooltip |
+| ---- | :--: | :------: | ------- | ------- |
+| `incident_id` | `number` | Yes | `-` | - |
+| `tower_job_id` | `number` | Yes | `-` | Launched job Id for a job template |
+| `tower_save_as` | `select` | Yes | `-` | - |
+
+
+
+
+Outputs:
+
+
+> **NOTE:** This example might be in JSON format, but `results` is a Python Dictionary on the SOAR platform.
+
+```python
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+```
+
+
+
+
+Example Function Input Script:
+
+
+```python
+inputs.tower_job_id = row['job_id']
+inputs.tower_save_as = rule.properties.tower_save_as
+inputs.incident_id = incident.id
+```
+
+
+
+
+Example Function Post Process Script:
+
+
+```python
+import re
+
+if results.content:
+ finished = results.content['summary']['finished'].replace('T', ' ') if results.content['summary']['finished'] else None
+
+ row['status'] = results.content['summary']['status']
+ row['completion_date'] = finished
+
+ note = u"Job Id: {}\nStatus: {}\nTemplate Name: {}\nFinished: {}".format(results.inputs['tower_job_id'], results.content['summary']['status'],
+ results.content['summary']['name'], finished)
+ if not results.inputs['tower_save_as_attachment']:
+ note = note + u"\n".join(event.get("stdout") for event in results.content['events']['results'])
+ incident.addNote(re.sub(r'[\x00-\x7f]\[[0-9;]*m', r'', note)) # remove color hilighting
+ else:
+ attachment_name = u"{}_{}.txt".format(results.content['summary']['name'].replace(" ", "_"), results.inputs['tower_job_id'])
+ note = note + u"\nAttachment Name: {}".format(attachment_name)
+ incident.addNote(note)
+
+```
+
+
+
-### Resilient Action Status
-* When viewing an incident, use the Actions menu to view **Action Status**.
-* By default, pending and errors are displayed.
-* Modify the filter for actions to also show Completed actions.
-* Clicking on an action displays additional information on the progress made or what error occurred.
+---
+## Function - Ansible Tower List Job Templates
+List available job templates. * Wildcard can be used to filter project and template names
+
+ ![screenshot: fn-ansible-tower-list-job-templates ](./doc/screenshots/list_job_templates.png)
+Inputs:
+
+
+| Name | Type | Required | Example | Tooltip |
+| ---- | :--: | :------: | ------- | ------- |
+| `tower_project` | `text` | No | `-` | Optionally filter by project. Supports * wildcard |
+| `tower_template_pattern` | `text` | No | `-` | Use * to use wildcard matches |
+
+
+
+
+Outputs:
+
+
+> **NOTE:** This example might be in JSON format, but `results` is a Python Dictionary on the SOAR platform.
+
+
+```python
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+```
+
+
+
+
+Example Function Input Script:
+
+
+```python
+inputs.tower_project = rule.properties.tower_project
+inputs.tower_template_pattern = rule.properties.tower_template_pattern
+```
+
+
+
+
+Example Function Post Process Script:
+
+
+```python
+import java.util.Date as Date
+if not results.content:
+ row = incident.addRow("ansible_tower_job_templates")
+ row['reported_on'] = str(Date())
+ row['template_name'] = "-- No results returned --"
+else:
+ for template in results.content:
+ row = incident.addRow("ansible_tower_job_templates")
+ row['reported_on'] = str(Date())
+ row['template_id'] = template['id']
+ row['template_name'] = template['name']
+ row['template_description'] = template['description']
+ row['template_project'] = template['summary_fields']['project']['name']
+ row['template_playbook'] = template['playbook']
+ row['template_last_run'] = template['last_job_run'].replace('T', ' ') if template['last_job_run'] else None
+```
+
+
+
-### Resilient Scripting Log
-* A separate log file is available to review scripting errors.
-* This is useful when issues occur in the pre-processing or post-processing scripts.
-* The default location for this log file is: `/var/log/resilient-scripting/resilient-scripting.log`.
+---
+## Function - Ansible Tower List Jobs
+List Ansible Tower jobs based on job status and last modified conditions
+
+ ![screenshot: fn-ansible-tower-list-jobs ](./doc/screenshots/list_jobs.png)
+
+Inputs:
+
+
+| Name | Type | Required | Example | Tooltip |
+| ---- | :--: | :------: | ------- | ------- |
+| `tower_job_status` | `multiselect` | No | `-` | Leave empty for all status values |
+| `tower_last_updated` | `select` | No | `-` | specify timeframe to filter returned jobs |
+
+
+
+
+Outputs:
+
+
+> **NOTE:** This example might be in JSON format, but `results` is a Python Dictionary on the SOAR platform.
+
+```python
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+```
+
+
+
+
+Example Function Input Script:
+
+
+```python
+inputs.tower_job_status = rule.properties.job_status
+inputs.tower_last_updated = rule.properties.last_updated
+```
+
+
+
+
+Example Function Post Process Script:
+
+
+```python
+import java.util.Date as Date
+for job in results.content:
+ run_row = incident.addRow('ansible_tower_launched_jobs')
+
+ run_row['reported_on'] = str(Date())
+ run_row['type'] = 'template'
+ run_row['launch_date'] = job['created'].replace('T', ' ')
+ run_row['status'] = job['status']
+ run_row['job_id'] = job['id']
+ run_row['template_name'] = job['name']
+ run_row['project'] = job['summary_fields']['project']['name']
+ run_row['run_tags'] = job['job_tags']
+ run_row['skip_tags'] = job['skip_tags']
+ run_row['inventory'] = job['limit']
+ run_row['arguments'] = job['extra_vars'].replace("{", "").replace("}", "")
+ #run_row['ignored_fields'] = str(job['ignored_fields'])
+```
+
+
+
-### Resilient Logs
-* By default, Resilient logs are retained at `/usr/share/co3/logs`.
-* The `client.log` may contain additional information regarding the execution of functions.
+---
+## Function - Ansible Tower Run an Ad Hoc Command
+Run an ad hoc command through ansible tower
+
+ ![screenshot: fn-ansible-tower-run-an-ad-hoc-command ](./doc/screenshots/run_an_ad_hoc_command.png)
+
+Inputs:
+
+
+| Name | Type | Required | Example | Tooltip |
+| ---- | :--: | :------: | ------- | ------- |
+| `tower_arguments` | `text` | No | `name1=value;name2=value` | Semicolon separated name/value pairs |
+| `tower_credential` | `number` | Yes | `-` | - |
+| `tower_hosts` | `text` | No | `-` | comma separated list of hosts to limit |
+| `tower_inventory` | `number` | No | `-` | - |
+| `tower_module` | `select` | No | `-` | - |
+
+
+
+
+Outputs:
+
+
+> **NOTE:** This example might be in JSON format, but `results` is a Python Dictionary on the SOAR platform.
+
+```python
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+```
+
+
+
+
+Example Function Input Script:
+
+
+```python
+inputs.tower_module = rule.properties.ansible_tower_module
+inputs.tower_arguments = rule.properties.ansible_tower_module_arguments
+inputs.tower_hosts = rule.properties.ansible_tower_hosts
+
+inventory = rule.properties.ansible_tower_inventory
+if inventory.find('-') != -1:
+ inv_split = inventory.split("-")
+else:
+ inv_split = inventory.split(" ")
+inputs.tower_inventory = int(inv_split[0])
+
+credential = rule.properties.ansible_tower_credential
+if credential.find('-') != -1:
+ cred_split = credential.split("-")
+else:
+ cred_split = credential.split(" ")
+inputs.tower_credential = int(cred_split[0])
+```
+
+
+
+
+Example Function Post Process Script:
+
+
+```python
+import java.util.Date as Date
+
+run_row = incident.addRow('ansible_tower_launched_jobs')
+
+run_row["reported_on"] = str(Date())
+run_row['type'] = 'ad hoc'
+run_row['launch_date'] = results.content['created'].replace('T', ' ')
+run_row['status'] = results.content['status']
+run_row['job_id'] = results.content['id']
+run_row['template_name'] = results.content['name']
+run_row['inventory'] = results.content['limit']
+run_row['arguments'] = str(results.content['module_args']).replace("{", "").replace("}", "")
+
+```
+
+
+
-### Resilient-Circuits
-* The log is controlled in the `.resilient/app.config` file under the section [resilient] and the property `logdir`.
-* The default file name is `app.log`.
-* Each function will create progress information.
-* Failures will show up as errors and may contain python trace statements.
+---
+## Function - Ansible Tower Run Job
+Execute a job for a given tower template
+
+ ![screenshot: fn-ansible-tower-run-job ](./doc/screenshots/run_a_job_artifact.png)
+
+Inputs:
+
+
+| Name | Type | Required | Example | Tooltip |
+| ---- | :--: | :------: | ------- | ------- |
+| `tower_arguments` | `text` | No | `name1=value;name2=value` | Semicolon separated name/value pairs |
+| `tower_hosts` | `text` | No | `-` | comma separated list of hosts to limit |
+| `tower_run_tags` | `text` | No | `-` | Comma separated list of plays to run |
+| `tower_skip_tags` | `text` | No | `-` | Comma separated list of plays to skip |
+| `tower_template_id` | `number` | No | `-` | Job Template Id to launch |
+| `tower_template_name` | `text` | No | `-` | Name of Job Template, optional to tower_template_id |
+
+
+
+
+Outputs:
+
+
+> **NOTE:** This example might be in JSON format, but `results` is a Python Dictionary on the SOAR platform.
+
+
+```python
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+```
+
+
+
+
+Example Function Input Script:
+
+
+```python
+inputs.tower_template_name = rule.properties.ansible_tower_job_name
+inputs.tower_hosts = rule.properties.ansible_tower_hosts
+artifact_data = "artifact_value={};artifact_type={}".format(artifact.value, artifact.type)
+if rule.properties.ansible_tower_arguments:
+ inputs.tower_arguments = ";".join((rule.properties.ansible_tower_arguments, artifact_data))
+else:
+ inputs.tower_arguments = artifact_data
+inputs.tower_run_tags = rule.properties.ansible_tower_run_tags
+inputs.tower_skip_tags = rule.properties.ansible_tower_skip_tags
+```
+
+
+
+
+Example Function Post Process Script:
+
+
+```python
+import java.util.Date as Date
+if not results.content['failed']:
+ run_row = incident.addRow('ansible_tower_launched_jobs')
+
+ run_row['reported_on'] = str(Date())
+ run_row['type'] = 'template'
+ run_row['launch_date'] = results.content['created'].replace('T', ' ')
+ run_row['status'] = results.content['status']
+ run_row['job_id'] = results.content['job']
+ run_row['template_name'] = results.content['name']
+ run_row['project'] = results.content['summary_fields']['project']['name']
+ run_row['run_tags'] = results.content['job_tags']
+ run_row['skip_tags'] = results.content['skip_tags']
+ run_row['inventory'] = results.content['limit']
+ run_row['arguments'] = str(results.content['extra_vars']).replace("{", "").replace("}", "")
+ run_row['ignored_fields'] = str(results.content['ignored_fields']).replace("{", "").replace("}", "")
+```
+
+
+
---
+
+
+## Custom Layouts
-## Configure Ansible Tower
+* Import the Data Tables and Custom Fields like the screenshot below:
+
+ ![screenshot: custom_layouts](./doc/screenshots/custom_layouts.png)
+
+
+## Data Table - Ansible Tower Job Templates
-No additional configuration is requirement for Ansible Tower.
+ ![screenshot: dt-ansible-tower-job-templates](./doc/screenshots/dt-ansible-tower-job-templates.png)
+
+#### API Name:
+ansible_tower_job_templates
+
+#### Columns:
+| Column Name | API Access Name | Type | Tooltip |
+| ----------- | --------------- | ---- | ------- |
+| Description | `template_description` | `text` | - |
+| Job Id | `template_id` | `number` | - |
+| Last Run | `template_last_run` | `text` | - |
+| Name | `template_name` | `text` | - |
+| Playbook | `template_playbook` | `text` | - |
+| Project | `template_project` | `text` | - |
+| Reported On | `reported_on` | `text` | - |
+
+---
+## Data Table - Ansible Tower Launched Jobs
+
+ ![screenshot: dt-ansible-tower-launched-jobs](./doc/screenshots/dt-ansible-tower-launched-jobs.png)
+
+#### API Name:
+ansible_tower_launched_jobs
+
+#### Columns:
+| Column Name | API Access Name | Type | Tooltip |
+| ----------- | --------------- | ---- | ------- |
+| Arguments | `arguments` | `text` | - |
+| Completion Date | `completion_date` | `text` | - |
+| Hosts | `inventory` | `text` | - |
+| Ignored Fields | `ignored_fields` | `text` | - |
+| Job Id | `job_id` | `number` | - |
+| Launch Date | `launch_date` | `text` | Date Job was created |
+| Name | `template_name` | `text` | Job Template Name |
+| Project | `project` | `text` | - |
+| Reported On | `reported_on` | `text` | Date row was added |
+| Run Tags | `run_tags` | `text` | - |
+| Skip Tags | `skip_tags` | `text` | - |
+| Status | `status` | `text` | Status of Job |
+| Type | `type` | `text` | 'ad hoc', 'template' |
+
+---
+
+
+
+## Rules
+| Rule Name | Object | Workflow Triggered | Condition |
+| --------- | ------ | ------------------ | ---------- |
+| Ansible Tower Get Ad Hoc Command Results | ansible_tower_launched_jobs | `ansible_tower_get_ad_hoc_command_results` | `ansible_tower_launched_jobs.type equals ad hoc` |
+| Ansible Tower Get Job Results | ansible_tower_launched_jobs | `ansible_tower_get_job_results` | `ansible_tower_launched_jobs.type equals template` |
+| Ansible Tower List Job Templates | incident | `ansible_tower_list_job_templates` | `-` |
+| Ansible Tower List Jobs | incident | `ansible_tower_list_jobs` | `-` |
+| Ansible Tower Run an Ad Hoc Command | incident | `ansible_tower_run_an_ad_hoc_command` | `-` |
+| Ansible Tower Run Job | ansible_tower_job_templates | `ansible_tower_launch_job_template` | `ansible_tower_job_templates.template_id has_a_value` |
+| Ansible Tower Run Job - Artifact | artifact | `ansible_tower_run_job__artifact` | `-` |
+| Ansible Tower Run Job - Incident | incident | `ansible_tower_run_job__incident` | `-` |
---
-## Support
-| Name | Version | Author | Support Email |
-| ---- | ------- | ------ | ----------- |
-| fn_ansible_tower | 1.0.0 | IBM Resilient | support@resilientsystems.com |
+
+## Troubleshooting & Support
+Refer to the documentation listed in the Requirements section for troubleshooting information.
+
+### For Support
+This is a IBM Community provided app. Please search the Community [ibm.biz/soarsupport](https://ibm.biz/soarsupport) for assistance.
diff --git a/_sources/fn_aws_guardduty/README.md.txt b/_sources/fn_aws_guardduty/README.md.txt
index 0f094cd5d..481b1d067 100644
--- a/_sources/fn_aws_guardduty/README.md.txt
+++ b/_sources/fn_aws_guardduty/README.md.txt
@@ -108,13 +108,13 @@ This app supports the IBM Security QRadar SOAR Platform and the IBM Security QRa
The SOAR platform supports two app deployment mechanisms, Edge Gateway (also known as App Host) and integration server.
If deploying to a SOAR platform with an App Host, the requirements are:
-* SOAR platform >= `49.0.8803`.
+* SOAR platform >= `51.0.0.0.9339`.
* The app is in a container-based format (available from the AppExchange as a `zip` file).
If deploying to a SOAR platform with an integration server, the requirements are:
-* SOAR platform >= `49.0.8803`.
+* SOAR platform >= `51.0.0.0.9339`.
* The app is in the older integration format (available from the AppExchange as a `zip` file which contains a `tar.gz` file).
-* Integration server is running `resilient_circuits>=45.0.0`.
+* Integration server is running `resilient_circuits>=51.0.1.1.824`.
* If using an API key account, make sure the account provides the following minimum permissions:
| Name | Permissions |
| ---- | ----------- |
@@ -143,7 +143,7 @@ The following Cloud Pak guides provide additional information:
These guides are available on the IBM Documentation website at [ibm.biz/cp4s-docs](https://ibm.biz/cp4s-docs). From this web page, select your IBM Cloud Pak for Security version. From the version-specific IBM Documentation page, select Case Management and Orchestration & Automation.
### Proxy Server
-The app does not support a proxy server.
+The app does support a proxy server.
### Python Environment
Python 3.6 and Python 3.9 are supported.
@@ -243,12 +243,12 @@ results = {
},
"inputs": {
"aws_gd_detector_id": "48bbf98612290af2215c7a02b7ccbc82",
- "aws_gd_finding_id": "fec765d91888d9bbf6847953304233b8",
+ "aws_gd_finding_id": "xxxxyyyyzzzz",
"aws_gd_region": "us-east-1"
},
"metrics": {
"execution_time_ms": 2058,
- "host": "IBM-Allen-MacBookPro.local",
+ "host": "IBM-dummy-MacBookPro.local",
"package": "fn-aws-guardduty",
"package_version": "1.1.0",
"timestamp": "2024-04-11 14:09:19",
@@ -391,16 +391,16 @@ results = {
{
"cells": {
"access_key_id": {
- "value": "AKIA4EQBBG2YCZI44F7R"
+ "value": "xxxxyyyy"
},
"principal_id": {
- "value": "AIDA4EQBBG2YLAG6DD5J3"
+ "value": "xxxxyyyy"
},
"query_execution_date": {
"value": "2024-04-11 14:08:54"
},
"user_name": {
- "value": "Allen"
+ "value": "dummy"
},
"user_type": {
"value": "IAMUser"
@@ -460,7 +460,7 @@ results = {
{
"cells": {
"account_id": {
- "value": "834299573936"
+ "value": "xxxxyyyyzzzz"
},
"count": {
"value": "1"
@@ -502,18 +502,18 @@ results = {
"gd_s3_bucket_details": []
},
"finding": {
- "AccountId": "834299573936",
- "Arn": "arn:aws:guardduty:us-east-1:834299573936:detector/48bbf98612290af2215c7a02b7ccbc82/finding/fec765d91888d9bbf6847953304233b8",
+ "AccountId": "xxxxyyyyzzzz",
+ "Arn": "arn:aws:guardduty:us-east-1:xxxxyyyyzzzz:detector/48bbf98612290af2215c7a02b7ccbc82/finding/xxxxyyyyzzzz",
"CreatedAt": "2024-04-11T05:47:16.625Z",
- "Description": "APIs commonly used in Discovery tactics were invoked by user IAMUser : Allen under unusual circumstances. Such activity is not typically seen from this user.",
- "Id": "fec765d91888d9bbf6847953304233b8",
+ "Description": "APIs commonly used in Discovery tactics were invoked by user IAMUser : dummy under unusual circumstances. Such activity is not typically seen from this user.",
+ "Id": "xxxxyyyyzzzz",
"Partition": "aws",
"Region": "us-east-1",
"Resource": {
"AccessKeyDetails": {
- "AccessKeyId": "AKIA4EQBBG2YCZI44F7R",
- "PrincipalId": "AIDA4EQBBG2YLAG6DD5J3",
- "UserName": "Allen",
+ "AccessKeyId": "xxxxyyyy",
+ "PrincipalId": "xxxxyyyy",
+ "UserName": "dummy",
"UserType": "IAMUser"
},
"ResourceType": "AccessKey"
@@ -550,7 +550,7 @@ results = {
},
"AdditionalInfo": {
"Type": "default",
- "Value": "{\"userAgent\":{\"fullUserAgent\":\"Boto3/1.34.82 md/Botocore#1.34.82 ua/2.0 os/macos#23.4.0 md/arch#x86_64 lang/python#3.9.16 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.34.82\",\"userAgentCategory\":\"Botocore\"},\"anomalies\":{\"anomalousAPIs\":\"guardduty.amazonaws.com:[ListFindings:success , ListDetectors:success , GetFindings:success , ArchiveFindings:success] , ec2.amazonaws.com:[DescribeRegions:success]\"},\"profiledBehavior\":{\"rareProfiledAPIsAccountProfiling\":\"\",\"infrequentProfiledAPIsAccountProfiling\":\"\",\"frequentProfiledAPIsAccountProfiling\":\"ListFindings , DescribeVolumes , GetResources , BatchGetResourceConfig , ListHostedZones , SelectResourceConfig , DescribeConfigurationRecorderStatus , ListResourceRecordSets , DescribeTrails , DescribeRegions , GetBucketLocation , DescribeDBInstances , GetAccountPublicAccessBlock , GetBucketLifecycle , GenerateCredentialReport , DescribeMetricFilters , DescribeInstances , DescribeDBClusters , GetTrailStatus , ListBuckets\",\"rareProfiledAPIsUserIdentityProfiling\":\"ListFindings , TerminateInstances , EnableAlarmActions , CreateImage , ListMembers , GetBucketPolicy , DeleteAlarms , ModifyVolume , DescribeRegions , StartInstances , CreateSnapshot , GetFindings\",\"infrequentProfiledAPIsUserIdentityProfiling\":\"DescribeInstances , AllocateAddress , ListDetectors , PutBucketPolicy , RebootInstances , CreateTags\",\"frequentProfiledAPIsUserIdentityProfiling\":\"CreateBucket , ListBuckets\",\"rareProfiledUserTypesAccountProfiling\":\"\",\"infrequentProfiledUserTypesAccountProfiling\":\"\",\"frequentProfiledUserTypesAccountProfiling\":\"IAM_USER , ASSUMED_ROLE , ROOT\",\"rareProfiledUserNamesAccountProfiling\":\"aws:ec2-instance\",\"infrequentProfiledUserNamesAccountProfiling\":\"\",\"frequentProfiledUserNamesAccountProfiling\":\"Allen , AWSServiceRoleForSecurityHub , AWSServiceRoleForTrustedAdvisor , CloudabilityRole , AWSServiceRoleForAccessAnalyzer , AWSServiceRoleForConfig , gtrotman , mscherfling , Root , aws-controltower-ForwardSnsNotificationRole , AWSServiceRoleForAmazonGuardDuty\",\"rareProfiledASNsAccountProfiling\":\"asnNumber: 12271 asnOrg: TWC-12271-NYC asnNumber: 23908 asnOrg: IIAC asnNumber: 6167 asnOrg: CELLCO-PART asnNumber: 701 asnOrg: UUNET asnNumber: 209 asnOrg: CENTURYLINK-US-LEGACY-QWEST\",\"infrequentProfiledASNsAccountProfiling\":\"asnNumber: 4766 asnOrg: Korea Telecom\",\"frequentProfiledASNsAccountProfiling\":\"asnNumber: 17390 asnOrg: CIO-ORGANIZATION asnNumber: 16509 asnOrg: AMAZON-02 asnNumber: 36351 asnOrg: SOFTLAYER asnNumber: 2386 asnOrg: INS-AS asnNumber: 3462 asnOrg: Data Communication Business Group asnNumber: 15502 asnOrg: Vodafone Ireland Limited asnNumber: 14618 asnOrg: AMAZON-AES asnNumber: 7018 asnOrg: ATT-INTERNET4\",\"rareProfiledASNsUserIdentityProfiling\":\"\",\"infrequentProfiledASNsUserIdentityProfiling\":\"\",\"frequentProfiledASNsUserIdentityProfiling\":\"asnNumber: 2386 asnOrg: INS-AS\",\"rareProfiledUserAgentsAccountProfiling\":\"aws-sdk-go\",\"infrequentProfiledUserAgentsAccountProfiling\":\"aws-internal/account-settings\",\"frequentProfiledUserAgentsAccountProfiling\":\"AWS Service , aws-sdk-java , Botocore , AWS Internal , browser , aws-internal/3 , OTHER\",\"rareProfiledUserAgentsUserIdentityProfiling\":\"\",\"infrequentProfiledUserAgentsUserIdentityProfiling\":\"\",\"frequentProfiledUserAgentsUserIdentityProfiling\":\"Botocore\"},\"unusualBehavior\":{\"unusualAPIsAccountProfiling\":\"ArchiveFindings\",\"unusualUserTypesAccountProfiling\":\"\",\"unusualUserNamesAccountProfiling\":\"\",\"unusualASNsAccountProfiling\":\"\",\"unusualUserAgentsAccountProfiling\":\"\",\"unusualAPIsUserIdentityProfiling\":\"ArchiveFindings\",\"unusualASNsUserIdentityProfiling\":\"asnNumber: 17390 asnOrg: CIO-ORGANIZATION\",\"unusualUserAgentsUserIdentityProfiling\":\"\",\"isUnusualUserIdentity\":\"false\"}}"
+ "Value": "{\"userAgent\":{\"fullUserAgent\":\"Boto3/1.34.82 md/Botocore#1.34.82 ua/2.0 os/macos#23.4.0 md/arch#x86_64 lang/python#3.9.16 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.34.82\",\"userAgentCategory\":\"Botocore\"},\"anomalies\":{\"anomalousAPIs\":\"guardduty.amazonaws.com:[ListFindings:success , ListDetectors:success , GetFindings:success , ArchiveFindings:success] , ec2.amazonaws.com:[DescribeRegions:success]\"},\"profiledBehavior\":{\"rareProfiledAPIsAccountProfiling\":\"\",\"infrequentProfiledAPIsAccountProfiling\":\"\",\"frequentProfiledAPIsAccountProfiling\":\"ListFindings , DescribeVolumes , GetResources , BatchGetResourceConfig , ListHostedZones , SelectResourceConfig , DescribeConfigurationRecorderStatus , ListResourceRecordSets , DescribeTrails , DescribeRegions , GetBucketLocation , DescribeDBInstances , GetAccountPublicAccessBlock , GetBucketLifecycle , GenerateCredentialReport , DescribeMetricFilters , DescribeInstances , DescribeDBClusters , GetTrailStatus , ListBuckets\",\"rareProfiledAPIsUserIdentityProfiling\":\"ListFindings , TerminateInstances , EnableAlarmActions , CreateImage , ListMembers , GetBucketPolicy , DeleteAlarms , ModifyVolume , DescribeRegions , StartInstances , CreateSnapshot , GetFindings\",\"infrequentProfiledAPIsUserIdentityProfiling\":\"DescribeInstances , AllocateAddress , ListDetectors , PutBucketPolicy , RebootInstances , CreateTags\",\"frequentProfiledAPIsUserIdentityProfiling\":\"CreateBucket , ListBuckets\",\"rareProfiledUserTypesAccountProfiling\":\"\",\"infrequentProfiledUserTypesAccountProfiling\":\"\",\"frequentProfiledUserTypesAccountProfiling\":\"IAM_USER , ASSUMED_ROLE , ROOT\",\"rareProfiledUserNamesAccountProfiling\":\"aws:ec2-instance\",\"infrequentProfiledUserNamesAccountProfiling\":\"\",\"frequentProfiledUserNamesAccountProfiling\":\"dummy , AWSServiceRoleForSecurityHub , AWSServiceRoleForTrustedAdvisor , CloudabilityRole , AWSServiceRoleForAccessAnalyzer , AWSServiceRoleForConfig , gtrotman , mscherfling , Root , aws-controltower-ForwardSnsNotificationRole , AWSServiceRoleForAmazonGuardDuty\",\"rareProfiledASNsAccountProfiling\":\"asnNumber: 12271 asnOrg: TWC-12271-NYC asnNumber: 23908 asnOrg: IIAC asnNumber: 6167 asnOrg: CELLCO-PART asnNumber: 701 asnOrg: UUNET asnNumber: 209 asnOrg: CENTURYLINK-US-LEGACY-QWEST\",\"infrequentProfiledASNsAccountProfiling\":\"asnNumber: 4766 asnOrg: Korea Telecom\",\"frequentProfiledASNsAccountProfiling\":\"asnNumber: 17390 asnOrg: CIO-ORGANIZATION asnNumber: 16509 asnOrg: AMAZON-02 asnNumber: 36351 asnOrg: SOFTLAYER asnNumber: 2386 asnOrg: INS-AS asnNumber: 3462 asnOrg: Data Communication Business Group asnNumber: 15502 asnOrg: Vodafone Ireland Limited asnNumber: 14618 asnOrg: AMAZON-AES asnNumber: 7018 asnOrg: ATT-INTERNET4\",\"rareProfiledASNsUserIdentityProfiling\":\"\",\"infrequentProfiledASNsUserIdentityProfiling\":\"\",\"frequentProfiledASNsUserIdentityProfiling\":\"asnNumber: 2386 asnOrg: INS-AS\",\"rareProfiledUserAgentsAccountProfiling\":\"aws-sdk-go\",\"infrequentProfiledUserAgentsAccountProfiling\":\"aws-internal/account-settings\",\"frequentProfiledUserAgentsAccountProfiling\":\"AWS Service , aws-sdk-java , Botocore , AWS Internal , browser , aws-internal/3 , OTHER\",\"rareProfiledUserAgentsUserIdentityProfiling\":\"\",\"infrequentProfiledUserAgentsUserIdentityProfiling\":\"\",\"frequentProfiledUserAgentsUserIdentityProfiling\":\"Botocore\"},\"unusualBehavior\":{\"unusualAPIsAccountProfiling\":\"ArchiveFindings\",\"unusualUserTypesAccountProfiling\":\"\",\"unusualUserNamesAccountProfiling\":\"\",\"unusualASNsAccountProfiling\":\"\",\"unusualUserAgentsAccountProfiling\":\"\",\"unusualAPIsUserIdentityProfiling\":\"ArchiveFindings\",\"unusualASNsUserIdentityProfiling\":\"asnNumber: 17390 asnOrg: CIO-ORGANIZATION\",\"unusualUserAgentsUserIdentityProfiling\":\"\",\"isUnusualUserIdentity\":\"false\"}}"
},
"Archived": false,
"Count": 1,
@@ -561,7 +561,7 @@ results = {
"ServiceName": "guardduty"
},
"Severity": 2,
- "Title": "The user IAMUser : Allen is anomalously invoking APIs commonly used in Discovery tactics.",
+ "Title": "The user IAMUser : dummy is anomalously invoking APIs commonly used in Discovery tactics.",
"Type": "Discovery:IAMUser/AnomalousBehavior",
"UpdatedAt": "2024-04-11T05:47:16.625Z"
},
@@ -569,17 +569,17 @@ results = {
"artifacts": [],
"comments": [],
"description": {
- "content": "APIs commonly used in Discovery tactics were invoked by user IAMUser : Allen under unusual circumstances. Such activity is not typically seen from this user.",
+ "content": "APIs commonly used in Discovery tactics were invoked by user IAMUser : dummy under unusual circumstances. Such activity is not typically seen from this user.",
"format": "text"
},
"discovered_date": "2024-04-11T05:47:16.625Z",
- "name": "AWS GuardDuty: The user IAMUser : Allen is anomalously invoking APIs commonly used in Discovery tactics.",
+ "name": "AWS GuardDuty: The user IAMUser : dummy is anomalously invoking APIs commonly used in Discovery tactics.",
"properties": {
"aws_guardduty_archived": "False",
"aws_guardduty_count": "1",
"aws_guardduty_detector_id": "48bbf98612290af2215c7a02b7ccbc82",
- "aws_guardduty_finding_arn": "arn:aws:guardduty:us-east-1:834299573936:detector/48bbf98612290af2215c7a02b7ccbc82/finding/fec765d91888d9bbf6847953304233b8",
- "aws_guardduty_finding_id": "fec765d91888d9bbf6847953304233b8",
+ "aws_guardduty_finding_arn": "arn:aws:guardduty:us-east-1:xxxxyyyyzzzz:detector/48bbf98612290af2215c7a02b7ccbc82/finding/xxxxyyyyzzzz",
+ "aws_guardduty_finding_id": "xxxxyyyyzzzz",
"aws_guardduty_finding_type": "Discovery:IAMUser/AnomalousBehavior",
"aws_guardduty_finding_updated_at": "2024-04-11T05:47:16.625Z",
"aws_guardduty_region": "us-east-1",
@@ -593,19 +593,19 @@ results = {
},
"inputs": {
"aws_gd_detector_id": "48bbf98612290af2215c7a02b7ccbc82",
- "aws_gd_finding_id": "fec765d91888d9bbf6847953304233b8",
+ "aws_gd_finding_id": "xxxxyyyyzzzz",
"aws_gd_region": "us-east-1",
"incident_id": 2114
},
"metrics": {
"execution_time_ms": 1530,
- "host": "IBM-Allen-MacBookPro.local",
+ "host": "IBM-dummy-MacBookPro.local",
"package": "fn-aws-guardduty",
"package_version": "1.1.0",
"timestamp": "2024-04-11 14:08:54",
"version": "1.0"
},
- "raw": "{\"timestamp\": \"2024-04-11 14:08:54\", \"finding\": {\"AccountId\": \"834299573936\", \"Arn\": \"arn:aws:guardduty:us-east-1:834299573936:detector/48bbf98612290af2215c7a02b7ccbc82/finding/fec765d91888d9bbf6847953304233b8\", \"CreatedAt\": \"2024-04-11T05:47:16.625Z\", \"Description\": \"APIs commonly used in Discovery tactics were invoked by user IAMUser : Allen under unusual circumstances. Such activity is not typically seen from this user.\", \"Id\": \"fec765d91888d9bbf6847953304233b8\", \"Partition\": \"aws\", \"Region\": \"us-east-1\", \"Resource\": {\"AccessKeyDetails\": {\"AccessKeyId\": \"AKIA4EQBBG2YCZI44F7R\", \"PrincipalId\": \"AIDA4EQBBG2YLAG6DD5J3\", \"UserName\": \"Allen\", \"UserType\": \"IAMUser\"}, \"ResourceType\": \"AccessKey\"}, \"SchemaVersion\": \"2.0\", \"Service\": {\"Action\": {\"ActionType\": \"AWS_API_CALL\", \"AwsApiCallAction\": {\"Api\": \"ListFindings\", \"CallerType\": \"Remote IP\", \"RemoteIpDetails\": {\"City\": {\"CityName\": \"Singapore\"}, \"Country\": {\"CountryName\": \"Singapore\"}, \"GeoLocation\": {\"Lat\": 1.2868, \"Lon\": 103.8503}, \"IpAddressV4\": \"129.41.56.2\", \"Organization\": {\"Asn\": \"17390\", \"AsnOrg\": \"CIO-ORGANIZATION\", \"Isp\": \"IBM Corporation\", \"Org\": \"IBM Corporation\"}}, \"ServiceName\": \"guardduty.amazonaws.com\", \"AffectedResources\": {}}}, \"Archived\": false, \"Count\": 1, \"DetectorId\": \"48bbf98612290af2215c7a02b7ccbc82\", \"EventFirstSeen\": \"2024-04-11T05:26:01.000Z\", \"EventLastSeen\": \"2024-04-11T05:32:48.000Z\", \"ResourceRole\": \"TARGET\", \"ServiceName\": \"guardduty\", \"AdditionalInfo\": {\"Value\": \"{\\\"userAgent\\\":{\\\"fullUserAgent\\\":\\\"Boto3/1.34.82 md/Botocore#1.34.82 ua/2.0 os/macos#23.4.0 md/arch#x86_64 lang/python#3.9.16 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.34.82\\\",\\\"userAgentCategory\\\":\\\"Botocore\\\"},\\\"anomalies\\\":{\\\"anomalousAPIs\\\":\\\"guardduty.amazonaws.com:[ListFindings:success , ListDetectors:success , GetFindings:success , ArchiveFindings:success] , ec2.amazonaws.com:[DescribeRegions:success]\\\"},\\\"profiledBehavior\\\":{\\\"rareProfiledAPIsAccountProfiling\\\":\\\"\\\",\\\"infrequentProfiledAPIsAccountProfiling\\\":\\\"\\\",\\\"frequentProfiledAPIsAccountProfiling\\\":\\\"ListFindings , DescribeVolumes , GetResources , BatchGetResourceConfig , ListHostedZones , SelectResourceConfig , DescribeConfigurationRecorderStatus , ListResourceRecordSets , DescribeTrails , DescribeRegions , GetBucketLocation , DescribeDBInstances , GetAccountPublicAccessBlock , GetBucketLifecycle , GenerateCredentialReport , DescribeMetricFilters , DescribeInstances , DescribeDBClusters , GetTrailStatus , ListBuckets\\\",\\\"rareProfiledAPIsUserIdentityProfiling\\\":\\\"ListFindings , TerminateInstances , EnableAlarmActions , CreateImage , ListMembers , GetBucketPolicy , DeleteAlarms , ModifyVolume , DescribeRegions , StartInstances , CreateSnapshot , GetFindings\\\",\\\"infrequentProfiledAPIsUserIdentityProfiling\\\":\\\"DescribeInstances , AllocateAddress , ListDetectors , PutBucketPolicy , RebootInstances , CreateTags\\\",\\\"frequentProfiledAPIsUserIdentityProfiling\\\":\\\"CreateBucket , ListBuckets\\\",\\\"rareProfiledUserTypesAccountProfiling\\\":\\\"\\\",\\\"infrequentProfiledUserTypesAccountProfiling\\\":\\\"\\\",\\\"frequentProfiledUserTypesAccountProfiling\\\":\\\"IAM_USER , ASSUMED_ROLE , ROOT\\\",\\\"rareProfiledUserNamesAccountProfiling\\\":\\\"aws:ec2-instance\\\",\\\"infrequentProfiledUserNamesAccountProfiling\\\":\\\"\\\",\\\"frequentProfiledUserNamesAccountProfiling\\\":\\\"Allen , AWSServiceRoleForSecurityHub , AWSServiceRoleForTrustedAdvisor , CloudabilityRole , AWSServiceRoleForAccessAnalyzer , AWSServiceRoleForConfig , gtrotman , mscherfling , Root , aws-controltower-ForwardSnsNotificationRole , AWSServiceRoleForAmazonGuardDuty\\\",\\\"rareProfiledASNsAccountProfiling\\\":\\\"asnNumber: 12271 asnOrg: TWC-12271-NYC asnNumber: 23908 asnOrg: IIAC asnNumber: 6167 asnOrg: CELLCO-PART asnNumber: 701 asnOrg: UUNET asnNumber: 209 asnOrg: CENTURYLINK-US-LEGACY-QWEST\\\",\\\"infrequentProfiledASNsAccountProfiling\\\":\\\"asnNumber: 4766 asnOrg: Korea Telecom\\\",\\\"frequentProfiledASNsAccountProfiling\\\":\\\"asnNumber: 17390 asnOrg: CIO-ORGANIZATION asnNumber: 16509 asnOrg: AMAZON-02 asnNumber: 36351 asnOrg: SOFTLAYER asnNumber: 2386 asnOrg: INS-AS asnNumber: 3462 asnOrg: Data Communication Business Group asnNumber: 15502 asnOrg: Vodafone Ireland Limited asnNumber: 14618 asnOrg: AMAZON-AES asnNumber: 7018 asnOrg: ATT-INTERNET4\\\",\\\"rareProfiledASNsUserIdentityProfiling\\\":\\\"\\\",\\\"infrequentProfiledASNsUserIdentityProfiling\\\":\\\"\\\",\\\"frequentProfiledASNsUserIdentityProfiling\\\":\\\"asnNumber: 2386 asnOrg: INS-AS\\\",\\\"rareProfiledUserAgentsAccountProfiling\\\":\\\"aws-sdk-go\\\",\\\"infrequentProfiledUserAgentsAccountProfiling\\\":\\\"aws-internal/account-settings\\\",\\\"frequentProfiledUserAgentsAccountProfiling\\\":\\\"AWS Service , aws-sdk-java , Botocore , AWS Internal , browser , aws-internal/3 , OTHER\\\",\\\"rareProfiledUserAgentsUserIdentityProfiling\\\":\\\"\\\",\\\"infrequentProfiledUserAgentsUserIdentityProfiling\\\":\\\"\\\",\\\"frequentProfiledUserAgentsUserIdentityProfiling\\\":\\\"Botocore\\\"},\\\"unusualBehavior\\\":{\\\"unusualAPIsAccountProfiling\\\":\\\"ArchiveFindings\\\",\\\"unusualUserTypesAccountProfiling\\\":\\\"\\\",\\\"unusualUserNamesAccountProfiling\\\":\\\"\\\",\\\"unusualASNsAccountProfiling\\\":\\\"\\\",\\\"unusualUserAgentsAccountProfiling\\\":\\\"\\\",\\\"unusualAPIsUserIdentityProfiling\\\":\\\"ArchiveFindings\\\",\\\"unusualASNsUserIdentityProfiling\\\":\\\"asnNumber: 17390 asnOrg: CIO-ORGANIZATION\\\",\\\"unusualUserAgentsUserIdentityProfiling\\\":\\\"\\\",\\\"isUnusualUserIdentity\\\":\\\"false\\\"}}\", \"Type\": \"default\"}}, \"Severity\": 2, \"Title\": \"The user IAMUser : Allen is anomalously invoking APIs commonly used in Discovery tactics.\", \"Type\": \"Discovery:IAMUser/AnomalousBehavior\", \"UpdatedAt\": \"2024-04-11T05:47:16.625Z\"}, \"region\": \"us-east-1\", \"payload\": {\"name\": \"AWS GuardDuty: The user IAMUser : Allen is anomalously invoking APIs commonly used in Discovery tactics.\", \"description\": {\"format\": \"text\", \"content\": \"APIs commonly used in Discovery tactics were invoked by user IAMUser : Allen under unusual circumstances. Such activity is not typically seen from this user.\"}, \"discovered_date\": \"2024-04-11T05:47:16.625Z\", \"severity_code\": \"Low\", \"properties\": {\"aws_guardduty_finding_id\": \"fec765d91888d9bbf6847953304233b8\", \"aws_guardduty_finding_arn\": \"arn:aws:guardduty:us-east-1:834299573936:detector/48bbf98612290af2215c7a02b7ccbc82/finding/fec765d91888d9bbf6847953304233b8\", \"aws_guardduty_finding_type\": \"Discovery:IAMUser/AnomalousBehavior\", \"aws_guardduty_finding_updated_at\": \"2024-04-11T05:47:16.625Z\", \"aws_guardduty_region\": \"us-east-1\", \"aws_guardduty_severity\": \"2\", \"aws_guardduty_resource_type\": \"AccessKey\", \"aws_guardduty_detector_id\": \"48bbf98612290af2215c7a02b7ccbc82\", \"aws_guardduty_count\": \"1\", \"aws_guardduty_archived\": \"False\"}, \"artifacts\": [], \"comments\": []}, \"data_tables\": {\"gd_finding_overview\": [{\"cells\": {\"severity\": {\"value\": \"2\"}, \"query_execution_date\": {\"value\": \"2024-04-11 14:08:54\"}, \"region\": {\"value\": \"us-east-1\"}, \"count\": {\"value\": \"1\"}, \"account_id\": {\"value\": \"834299573936\"}, \"created_at\": {\"value\": \"2024-04-11T05:47:16.625Z\"}, \"updated_at\": {\"value\": \"2024-04-11T05:47:16.625Z\"}}}], \"gd_action_details\": [{\"cells\": {\"action_type\": {\"value\": \"AWS_API_CALL\"}, \"query_execution_date\": {\"value\": \"2024-04-11 14:08:54\"}, \"action_api\": {\"value\": \"ListFindings\"}, \"event_first_seen\": {\"value\": \"2024-04-11T05:26:01.000Z\"}, \"event_last_seen\": {\"value\": \"2024-04-11T05:32:48.000Z\"}, \"actor_caller_type\": {\"value\": \"Remote IP\"}, \"city_name\": {\"value\": \"Singapore\"}, \"country_name\": {\"value\": \"Singapore\"}, \"asn\": {\"value\": \"17390\"}, \"asn_org\": {\"value\": \"CIO-ORGANIZATION\"}, \"isp\": {\"value\": \"IBM Corporation\"}, \"org\": {\"value\": \"IBM Corporation\"}, \"service_name\": {\"value\": \"guardduty.amazonaws.com\"}, \"remote_ip\": {\"value\": \"129.41.56.2\"}}}], \"gd_resource_affected\": [{\"cells\": {\"resource_type\": {\"value\": \"AccessKey\"}, \"query_execution_date\": {\"value\": \"2024-04-11 14:08:54\"}, \"resource_role\": {\"value\": \"TARGET\"}}}], \"gd_s3_bucket_details\": [], \"gd_instance_details\": [], \"gd_access_key_details\": [{\"cells\": {\"access_key_id\": {\"value\": \"AKIA4EQBBG2YCZI44F7R\"}, \"query_execution_date\": {\"value\": \"2024-04-11 14:08:54\"}, \"principal_id\": {\"value\": \"AIDA4EQBBG2YLAG6DD5J3\"}, \"user_type\": {\"value\": \"IAMUser\"}, \"user_name\": {\"value\": \"Allen\"}}}]}}",
+ "raw": "{\"timestamp\": \"2024-04-11 14:08:54\", \"finding\": {\"AccountId\": \"xxxxyyyyzzzz\", \"Arn\": \"arn:aws:guardduty:us-east-1:xxxxyyyyzzzz:detector/48bbf98612290af2215c7a02b7ccbc82/finding/xxxxyyyyzzzz\", \"CreatedAt\": \"2024-04-11T05:47:16.625Z\", \"Description\": \"APIs commonly used in Discovery tactics were invoked by user IAMUser : dummy under unusual circumstances. Such activity is not typically seen from this user.\", \"Id\": \"xxxxyyyyzzzz\", \"Partition\": \"aws\", \"Region\": \"us-east-1\", \"Resource\": {\"AccessKeyDetails\": {\"AccessKeyId\": \"xxxxyyyy\", \"PrincipalId\": \"xxxxyyyy\", \"UserName\": \"dummy\", \"UserType\": \"IAMUser\"}, \"ResourceType\": \"AccessKey\"}, \"SchemaVersion\": \"2.0\", \"Service\": {\"Action\": {\"ActionType\": \"AWS_API_CALL\", \"AwsApiCallAction\": {\"Api\": \"ListFindings\", \"CallerType\": \"Remote IP\", \"RemoteIpDetails\": {\"City\": {\"CityName\": \"Singapore\"}, \"Country\": {\"CountryName\": \"Singapore\"}, \"GeoLocation\": {\"Lat\": 1.2868, \"Lon\": 103.8503}, \"IpAddressV4\": \"129.41.56.2\", \"Organization\": {\"Asn\": \"17390\", \"AsnOrg\": \"CIO-ORGANIZATION\", \"Isp\": \"IBM Corporation\", \"Org\": \"IBM Corporation\"}}, \"ServiceName\": \"guardduty.amazonaws.com\", \"AffectedResources\": {}}}, \"Archived\": false, \"Count\": 1, \"DetectorId\": \"48bbf98612290af2215c7a02b7ccbc82\", \"EventFirstSeen\": \"2024-04-11T05:26:01.000Z\", \"EventLastSeen\": \"2024-04-11T05:32:48.000Z\", \"ResourceRole\": \"TARGET\", \"ServiceName\": \"guardduty\", \"AdditionalInfo\": {\"Value\": \"{\\\"userAgent\\\":{\\\"fullUserAgent\\\":\\\"Boto3/1.34.82 md/Botocore#1.34.82 ua/2.0 os/macos#23.4.0 md/arch#x86_64 lang/python#3.9.16 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.34.82\\\",\\\"userAgentCategory\\\":\\\"Botocore\\\"},\\\"anomalies\\\":{\\\"anomalousAPIs\\\":\\\"guardduty.amazonaws.com:[ListFindings:success , ListDetectors:success , GetFindings:success , ArchiveFindings:success] , ec2.amazonaws.com:[DescribeRegions:success]\\\"},\\\"profiledBehavior\\\":{\\\"rareProfiledAPIsAccountProfiling\\\":\\\"\\\",\\\"infrequentProfiledAPIsAccountProfiling\\\":\\\"\\\",\\\"frequentProfiledAPIsAccountProfiling\\\":\\\"ListFindings , DescribeVolumes , GetResources , BatchGetResourceConfig , ListHostedZones , SelectResourceConfig , DescribeConfigurationRecorderStatus , ListResourceRecordSets , DescribeTrails , DescribeRegions , GetBucketLocation , DescribeDBInstances , GetAccountPublicAccessBlock , GetBucketLifecycle , GenerateCredentialReport , DescribeMetricFilters , DescribeInstances , DescribeDBClusters , GetTrailStatus , ListBuckets\\\",\\\"rareProfiledAPIsUserIdentityProfiling\\\":\\\"ListFindings , TerminateInstances , EnableAlarmActions , CreateImage , ListMembers , GetBucketPolicy , DeleteAlarms , ModifyVolume , DescribeRegions , StartInstances , CreateSnapshot , GetFindings\\\",\\\"infrequentProfiledAPIsUserIdentityProfiling\\\":\\\"DescribeInstances , AllocateAddress , ListDetectors , PutBucketPolicy , RebootInstances , CreateTags\\\",\\\"frequentProfiledAPIsUserIdentityProfiling\\\":\\\"CreateBucket , ListBuckets\\\",\\\"rareProfiledUserTypesAccountProfiling\\\":\\\"\\\",\\\"infrequentProfiledUserTypesAccountProfiling\\\":\\\"\\\",\\\"frequentProfiledUserTypesAccountProfiling\\\":\\\"IAM_USER , ASSUMED_ROLE , ROOT\\\",\\\"rareProfiledUserNamesAccountProfiling\\\":\\\"aws:ec2-instance\\\",\\\"infrequentProfiledUserNamesAccountProfiling\\\":\\\"\\\",\\\"frequentProfiledUserNamesAccountProfiling\\\":\\\"dummy , AWSServiceRoleForSecurityHub , AWSServiceRoleForTrustedAdvisor , CloudabilityRole , AWSServiceRoleForAccessAnalyzer , AWSServiceRoleForConfig , gtrotman , mscherfling , Root , aws-controltower-ForwardSnsNotificationRole , AWSServiceRoleForAmazonGuardDuty\\\",\\\"rareProfiledASNsAccountProfiling\\\":\\\"asnNumber: 12271 asnOrg: TWC-12271-NYC asnNumber: 23908 asnOrg: IIAC asnNumber: 6167 asnOrg: CELLCO-PART asnNumber: 701 asnOrg: UUNET asnNumber: 209 asnOrg: CENTURYLINK-US-LEGACY-QWEST\\\",\\\"infrequentProfiledASNsAccountProfiling\\\":\\\"asnNumber: 4766 asnOrg: Korea Telecom\\\",\\\"frequentProfiledASNsAccountProfiling\\\":\\\"asnNumber: 17390 asnOrg: CIO-ORGANIZATION asnNumber: 16509 asnOrg: AMAZON-02 asnNumber: 36351 asnOrg: SOFTLAYER asnNumber: 2386 asnOrg: INS-AS asnNumber: 3462 asnOrg: Data Communication Business Group asnNumber: 15502 asnOrg: Vodafone Ireland Limited asnNumber: 14618 asnOrg: AMAZON-AES asnNumber: 7018 asnOrg: ATT-INTERNET4\\\",\\\"rareProfiledASNsUserIdentityProfiling\\\":\\\"\\\",\\\"infrequentProfiledASNsUserIdentityProfiling\\\":\\\"\\\",\\\"frequentProfiledASNsUserIdentityProfiling\\\":\\\"asnNumber: 2386 asnOrg: INS-AS\\\",\\\"rareProfiledUserAgentsAccountProfiling\\\":\\\"aws-sdk-go\\\",\\\"infrequentProfiledUserAgentsAccountProfiling\\\":\\\"aws-internal/account-settings\\\",\\\"frequentProfiledUserAgentsAccountProfiling\\\":\\\"AWS Service , aws-sdk-java , Botocore , AWS Internal , browser , aws-internal/3 , OTHER\\\",\\\"rareProfiledUserAgentsUserIdentityProfiling\\\":\\\"\\\",\\\"infrequentProfiledUserAgentsUserIdentityProfiling\\\":\\\"\\\",\\\"frequentProfiledUserAgentsUserIdentityProfiling\\\":\\\"Botocore\\\"},\\\"unusualBehavior\\\":{\\\"unusualAPIsAccountProfiling\\\":\\\"ArchiveFindings\\\",\\\"unusualUserTypesAccountProfiling\\\":\\\"\\\",\\\"unusualUserNamesAccountProfiling\\\":\\\"\\\",\\\"unusualASNsAccountProfiling\\\":\\\"\\\",\\\"unusualUserAgentsAccountProfiling\\\":\\\"\\\",\\\"unusualAPIsUserIdentityProfiling\\\":\\\"ArchiveFindings\\\",\\\"unusualASNsUserIdentityProfiling\\\":\\\"asnNumber: 17390 asnOrg: CIO-ORGANIZATION\\\",\\\"unusualUserAgentsUserIdentityProfiling\\\":\\\"\\\",\\\"isUnusualUserIdentity\\\":\\\"false\\\"}}\", \"Type\": \"default\"}}, \"Severity\": 2, \"Title\": \"The user IAMUser : dummy is anomalously invoking APIs commonly used in Discovery tactics.\", \"Type\": \"Discovery:IAMUser/AnomalousBehavior\", \"UpdatedAt\": \"2024-04-11T05:47:16.625Z\"}, \"region\": \"us-east-1\", \"payload\": {\"name\": \"AWS GuardDuty: The user IAMUser : dummy is anomalously invoking APIs commonly used in Discovery tactics.\", \"description\": {\"format\": \"text\", \"content\": \"APIs commonly used in Discovery tactics were invoked by user IAMUser : dummy under unusual circumstances. Such activity is not typically seen from this user.\"}, \"discovered_date\": \"2024-04-11T05:47:16.625Z\", \"severity_code\": \"Low\", \"properties\": {\"aws_guardduty_finding_id\": \"xxxxyyyyzzzz\", \"aws_guardduty_finding_arn\": \"arn:aws:guardduty:us-east-1:xxxxyyyyzzzz:detector/48bbf98612290af2215c7a02b7ccbc82/finding/xxxxyyyyzzzz\", \"aws_guardduty_finding_type\": \"Discovery:IAMUser/AnomalousBehavior\", \"aws_guardduty_finding_updated_at\": \"2024-04-11T05:47:16.625Z\", \"aws_guardduty_region\": \"us-east-1\", \"aws_guardduty_severity\": \"2\", \"aws_guardduty_resource_type\": \"AccessKey\", \"aws_guardduty_detector_id\": \"48bbf98612290af2215c7a02b7ccbc82\", \"aws_guardduty_count\": \"1\", \"aws_guardduty_archived\": \"False\"}, \"artifacts\": [], \"comments\": []}, \"data_tables\": {\"gd_finding_overview\": [{\"cells\": {\"severity\": {\"value\": \"2\"}, \"query_execution_date\": {\"value\": \"2024-04-11 14:08:54\"}, \"region\": {\"value\": \"us-east-1\"}, \"count\": {\"value\": \"1\"}, \"account_id\": {\"value\": \"xxxxyyyyzzzz\"}, \"created_at\": {\"value\": \"2024-04-11T05:47:16.625Z\"}, \"updated_at\": {\"value\": \"2024-04-11T05:47:16.625Z\"}}}], \"gd_action_details\": [{\"cells\": {\"action_type\": {\"value\": \"AWS_API_CALL\"}, \"query_execution_date\": {\"value\": \"2024-04-11 14:08:54\"}, \"action_api\": {\"value\": \"ListFindings\"}, \"event_first_seen\": {\"value\": \"2024-04-11T05:26:01.000Z\"}, \"event_last_seen\": {\"value\": \"2024-04-11T05:32:48.000Z\"}, \"actor_caller_type\": {\"value\": \"Remote IP\"}, \"city_name\": {\"value\": \"Singapore\"}, \"country_name\": {\"value\": \"Singapore\"}, \"asn\": {\"value\": \"17390\"}, \"asn_org\": {\"value\": \"CIO-ORGANIZATION\"}, \"isp\": {\"value\": \"IBM Corporation\"}, \"org\": {\"value\": \"IBM Corporation\"}, \"service_name\": {\"value\": \"guardduty.amazonaws.com\"}, \"remote_ip\": {\"value\": \"129.41.56.2\"}}}], \"gd_resource_affected\": [{\"cells\": {\"resource_type\": {\"value\": \"AccessKey\"}, \"query_execution_date\": {\"value\": \"2024-04-11 14:08:54\"}, \"resource_role\": {\"value\": \"TARGET\"}}}], \"gd_s3_bucket_details\": [], \"gd_instance_details\": [], \"gd_access_key_details\": [{\"cells\": {\"access_key_id\": {\"value\": \"xxxxyyyy\"}, \"query_execution_date\": {\"value\": \"2024-04-11 14:08:54\"}, \"principal_id\": {\"value\": \"xxxxyyyy\"}, \"user_type\": {\"value\": \"IAMUser\"}, \"user_name\": {\"value\": \"dummy\"}}}]}}",
"reason": null,
"success": true,
"version": "1.0"
@@ -643,7 +643,7 @@ Result: { 'version': '1.0',
'discovered_date': '2020-11-25T13:46:37.960Z',
'severity_code': 'Low',
'properties': {'aws_guardduty_finding_id': '60baffd3f9042e38640f2300d5c5a631',
- 'aws_guardduty_finding_arn': 'arn:aws:guardduty:us-west-2:834299573936:detector/f2baedb0ac74f8f42fc929e15f56da6a/finding/60baffd3f9042e38640f2300d5c5a631',
+ 'aws_guardduty_finding_arn': 'arn:aws:guardduty:us-west-2:xxxxyyyyzzzz:detector/f2baedb0ac74f8f42fc929e15f56da6a/finding/60baffd3f9042e38640f2300d5c5a631',
'aws_guardduty_finding_type': 'UnauthorizedAccess:S3/MaliciousIPCaller.Custom',
'aws_guardduty_finding_updated_at': '2020-11-26T15:18:12.620Z', 'aws_guardduty_region': 'us-west-2',
'aws_guardduty_resource_type': 'S3Bucket', 'aws_guardduty_count': 4,
diff --git a/_sources/fn_microsoft_sentinel/README.md.txt b/_sources/fn_microsoft_sentinel/README.md.txt
index 21bbc6cd1..73f8fbe8f 100644
--- a/_sources/fn_microsoft_sentinel/README.md.txt
+++ b/_sources/fn_microsoft_sentinel/README.md.txt
@@ -37,6 +37,7 @@
-->
| Version | Date | Notes |
| ------- | ---- | ----- |
+| 2.1.2 | 10/2024 | Added retry logic to SOAR incident updates |
| 2.1.1 | 07/2024 | Correction to documentation on template references |
| 2.1.0 | 03/2024 | Add support for multi-tenancy. |
| 2.0.0 | 01/2024 | - Bug fix in jinja template, "incident_update_template.jinja", for escaping double quotation mark when rendering in json.
- Update jinja templates to use values rather than IDs.
- Add new setting in the app.config to set api-version.
- Add the ability to use a jinja template as the poller incident filter.
|
diff --git a/_sources/fn_watson_translate/README.md.txt b/_sources/older/fn_watson_translate/README.md.txt
similarity index 100%
rename from _sources/fn_watson_translate/README.md.txt
rename to _sources/older/fn_watson_translate/README.md.txt
diff --git a/_sources/rc_data_feed/README.md.txt b/_sources/rc_data_feed/README.md.txt
index 9e66b849b..bcd4f6e84 100644
--- a/_sources/rc_data_feed/README.md.txt
+++ b/_sources/rc_data_feed/README.md.txt
@@ -36,6 +36,7 @@ Newly added fields and data tables are created in the destination database (for
## Release Notes
| Version | Date | Notes |
| ------- | ---- | ----- |
+| 3.3.0 | 9/2024 | Support for incident time series data |
| 3.2.1 | 6/2024 | Fix for exclusion list logic |
| 3.2.0 | 5/2024 | Added ability to trap critical plugin errors |
| 3.1.0 | 2/2024 | Bug fix for exception handling. Added interruptible Sync Incidents playbook. |
diff --git a/app_host_files/README.html b/app_host_files/README.html
index 01ad3ee26..7595d55eb 100644
--- a/app_host_files/README.html
+++ b/app_host_files/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/base_input_types/README.html b/base_input_types/README.html
index b3f1e0913..f85326896 100644
--- a/base_input_types/README.html
+++ b/base_input_types/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/docs/python_api.html b/docs/python_api.html
index beb155674..b0fd87aa7 100644
--- a/docs/python_api.html
+++ b/docs/python_api.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/fn_abuseipdb/README.html b/fn_abuseipdb/README.html
index 0c434369b..fe9d36647 100644
--- a/fn_abuseipdb/README.html
+++ b/fn_abuseipdb/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/fn_algosec/README.html b/fn_algosec/README.html
index 966f86b09..dcdfdf68a 100644
--- a/fn_algosec/README.html
+++ b/fn_algosec/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/fn_alienvault_otx/README.html b/fn_alienvault_otx/README.html
index 9d3af3114..54bb52813 100644
--- a/fn_alienvault_otx/README.html
+++ b/fn_alienvault_otx/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/fn_anomali_staxx/README.html b/fn_anomali_staxx/README.html
index 88e487d87..73bb41d5f 100644
--- a/fn_anomali_staxx/README.html
+++ b/fn_anomali_staxx/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/fn_ansible/README.html b/fn_ansible/README.html
index c34a1b40e..b743651cd 100644
--- a/fn_ansible/README.html
+++ b/fn_ansible/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
diff --git a/fn_ansible_tower/README.html b/fn_ansible_tower/README.html
index b50c082ba..5a173a6ae 100644
--- a/fn_ansible_tower/README.html
+++ b/fn_ansible_tower/README.html
@@ -357,7 +357,6 @@
Utilities (Deprecated)
VirusTotal
VMRay Sandbox Analyzer
-Watson Translate
Cisco Webex
Whois
fn_whois_rdap
@@ -413,29 +412,65 @@
Ansible Tower
+
Release Notes
@@ -452,19 +487,23 @@ Release Notesv1.0.3 |
+v1.0.4 |
+10/2024 |
+Rebuilt the app to server v51.0.0 |
+
+v1.0.3 |
7/2021 |
Bug fix to handle results data |
-v1.0.2 |
+
v1.0.2 |
2/2021 |
Bug fix for paged results from templates, jobs, etc. |
-v1.0.1 |
+
v1.0.1 |
12/2020 |
App Host support |
-v1.0.0 |
+
v1.0.0 |
2/2020 |
Initial release |
@@ -497,26 +536,90 @@ Requirements
+
+Cloud Pak for Security
+If you are deploying to IBM Cloud Pak for Security, the requirements are:
+
+IBM Cloud Pak for Security >= 1.10.16
.
+Cloud Pak is configured with an Edge Gateway.
+The app is in a container-based format (available from the AppExchange as a zip
file).
+
+The following Cloud Pak guides provide additional information:
+
+Edge Gateway Deployment Guide or App Host Deployment Guide: provides installation, configuration, and troubleshooting information, including proxy server settings. From the Table of Contents, select Case Management and Orchestration & Automation > Orchestration and Automation Apps.
+System Administrator Guide: provides information to install, configure, and deploy apps. From the IBM Cloud Pak for Security IBM Documentation table of contents, select Case Management and Orchestration & Automation > System administrator.
+
+These guides are available on the IBM Documentation website at ibm.biz/cp4s-docs. From this web page, select your IBM Cloud Pak for Security version. From the version-specific IBM Documentation page, select Case Management and Orchestration & Automation.
+
+
+Proxy Server
+The app does support a proxy server.
+
+
+Python Environment
+Python 3.9, 3.11, and 3.12 are officially supported. When deployed as an app, the app runs on Python 3.11.
+Additional package dependencies may exist for each of these packages:
+
+
Installation
-
-App Host
-All the components for running this integration in a container already exist when using the App Host app.
-To install,
-
-Navigate to Administrative Settings and then the Apps tab.
-Click the Install button and select the downloaded file: app-fn_ansible_tower-x.x.x.zip.
-Go to the Configuration tab and edit the app.config file, editing the url, access credentials, etc.
+
+Install
+
+To install or uninstall an App or Integration on the SOAR platform, see the documentation at ibm.biz/soar-docs.
+To install or uninstall an App on IBM Cloud Pak for Security, see the documentation at ibm.biz/cp4s-docs and follow the instructions above to navigate to Orchestration and Automation.
+
+
+
+App Configuration
+The following table provides the settings you need to configure the app. These settings are made in the app.config file. See the documentation discussed in the Requirements section for the procedure.
@@ -550,8 +653,6 @@ App Host
-
-
Integration Server
@@ -657,75 +758,816 @@ Uninstall
-
-Troubleshooting
-There are several ways to verify the successful operation of a function.
-
-Resilient Action Status
-
-When viewing an incident, use the Actions menu to view Action Status.
-By default, pending and errors are displayed.
-Modify the filter for actions to also show Completed actions.
-Clicking on an action displays additional information on the progress made or what error occurred.
-
+
+Function - Ansible Tower Get Job Results
+Get the results of a complete job
+
+Inputs:
+
+
+
+
+Name |
+Type |
+Required |
+Example |
+Tooltip |
+
+
+
+incident_id
|
+number
|
+Yes |
+-
|
+- |
+
+tower_job_id
|
+number
|
+Yes |
+-
|
+Launched job Id for a job template |
+
+tower_save_as
|
+select
|
+Yes |
+-
|
+- |
+
+
+
+
+
+
+Outputs:
+
+
+NOTE: This example might be in JSON format, but results
is a Python Dictionary on the SOAR platform.
+
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+
+
+
+
+Example Function Input Script:
+
+
inputs.tower_job_id = row['job_id']
+inputs.tower_save_as = rule.properties.tower_save_as
+inputs.incident_id = incident.id
+
+
+
+
+Example Function Post Process Script:
+
+
import re
+
+if results.content:
+ finished = results.content['summary']['finished'].replace('T', ' ') if results.content['summary']['finished'] else None
+
+ row['status'] = results.content['summary']['status']
+ row['completion_date'] = finished
+
+ note = u"Job Id: {}\nStatus: {}\nTemplate Name: {}\nFinished: {}".format(results.inputs['tower_job_id'], results.content['summary']['status'],
+ results.content['summary']['name'], finished)
+ if not results.inputs['tower_save_as_attachment']:
+ note = note + u"\n".join(event.get("stdout") for event in results.content['events']['results'])
+ incident.addNote(re.sub(r'[\x00-\x7f]\[[0-9;]*m', r'', note)) # remove color hilighting
+ else:
+ attachment_name = u"{}_{}.txt".format(results.content['summary']['name'].replace(" ", "_"), results.inputs['tower_job_id'])
+ note = note + u"\nAttachment Name: {}".format(attachment_name)
+ incident.addNote(note)
+
+
+
+
+
-
-Resilient Scripting Log
-
-A separate log file is available to review scripting errors.
-This is useful when issues occur in the pre-processing or post-processing scripts.
-The default location for this log file is: /var/log/resilient-scripting/resilient-scripting.log
.
-
+
+
+Function - Ansible Tower List Job Templates
+List available job templates. * Wildcard can be used to filter project and template names
+
+Inputs:
+
+
+
+
+Name |
+Type |
+Required |
+Example |
+Tooltip |
+
+
+
+tower_project
|
+text
|
+No |
+-
|
+Optionally filter by project. Supports * wildcard |
+
+tower_template_pattern
|
+text
|
+No |
+-
|
+Use * to use wildcard matches |
+
+
+
+
+
+
+Outputs:
+
+
+NOTE: This example might be in JSON format, but results
is a Python Dictionary on the SOAR platform.
+
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+
+
+
+
+Example Function Input Script:
+
+
inputs.tower_project = rule.properties.tower_project
+inputs.tower_template_pattern = rule.properties.tower_template_pattern
+
+
+
+
+Example Function Post Process Script:
+
+
import java.util.Date as Date
+if not results.content:
+ row = incident.addRow("ansible_tower_job_templates")
+ row['reported_on'] = str(Date())
+ row['template_name'] = "-- No results returned --"
+else:
+ for template in results.content:
+ row = incident.addRow("ansible_tower_job_templates")
+ row['reported_on'] = str(Date())
+ row['template_id'] = template['id']
+ row['template_name'] = template['name']
+ row['template_description'] = template['description']
+ row['template_project'] = template['summary_fields']['project']['name']
+ row['template_playbook'] = template['playbook']
+ row['template_last_run'] = template['last_job_run'].replace('T', ' ') if template['last_job_run'] else None
+
+
+
+
-
-Resilient Logs
-
-By default, Resilient logs are retained at /usr/share/co3/logs
.
-The client.log
may contain additional information regarding the execution of functions.
-
+
+
+Function - Ansible Tower List Jobs
+List Ansible Tower jobs based on job status and last modified conditions
+
+Inputs:
+
+
+
+
+Name |
+Type |
+Required |
+Example |
+Tooltip |
+
+
+
+tower_job_status
|
+multiselect
|
+No |
+-
|
+Leave empty for all status values |
+
+tower_last_updated
|
+select
|
+No |
+-
|
+specify timeframe to filter returned jobs |
+
+
+
+
+
+
+Outputs:
+
+
+NOTE: This example might be in JSON format, but results
is a Python Dictionary on the SOAR platform.
+
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+
+
+
+
+Example Function Input Script:
+
+
inputs.tower_job_status = rule.properties.job_status
+inputs.tower_last_updated = rule.properties.last_updated
+
+
+
+
+Example Function Post Process Script:
+
+
import java.util.Date as Date
+for job in results.content:
+ run_row = incident.addRow('ansible_tower_launched_jobs')
+
+ run_row['reported_on'] = str(Date())
+ run_row['type'] = 'template'
+ run_row['launch_date'] = job['created'].replace('T', ' ')
+ run_row['status'] = job['status']
+ run_row['job_id'] = job['id']
+ run_row['template_name'] = job['name']
+ run_row['project'] = job['summary_fields']['project']['name']
+ run_row['run_tags'] = job['job_tags']
+ run_row['skip_tags'] = job['skip_tags']
+ run_row['inventory'] = job['limit']
+ run_row['arguments'] = job['extra_vars'].replace("{", "").replace("}", "")
+ #run_row['ignored_fields'] = str(job['ignored_fields'])
+
+
+
+
-
-Resilient-Circuits
-
-The log is controlled in the .resilient/app.config
file under the section [resilient] and the property logdir
.
-The default file name is app.log
.
-Each function will create progress information.
-Failures will show up as errors and may contain python trace statements.
-
+
+Function - Ansible Tower Run an Ad Hoc Command
+Run an ad hoc command through ansible tower
+
+Inputs:
+
+
+
+
+Name |
+Type |
+Required |
+Example |
+Tooltip |
+
+
+
+tower_arguments
|
+text
|
+No |
+name1=value;name2=value
|
+Semicolon separated name/value pairs |
+
+tower_credential
|
+number
|
+Yes |
+-
|
+- |
+
+tower_hosts
|
+text
|
+No |
+-
|
+comma separated list of hosts to limit |
+
+tower_inventory
|
+number
|
+No |
+-
|
+- |
+
+tower_module
|
+select
|
+No |
+-
|
+- |
+
+
+
+
+
+
+Outputs:
+
+
+NOTE: This example might be in JSON format, but results
is a Python Dictionary on the SOAR platform.
+
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+
+
+
+
+Example Function Input Script:
+
+
inputs.tower_module = rule.properties.ansible_tower_module
+inputs.tower_arguments = rule.properties.ansible_tower_module_arguments
+inputs.tower_hosts = rule.properties.ansible_tower_hosts
+
+inventory = rule.properties.ansible_tower_inventory
+if inventory.find('-') != -1:
+ inv_split = inventory.split("-")
+else:
+ inv_split = inventory.split(" ")
+inputs.tower_inventory = int(inv_split[0])
+
+credential = rule.properties.ansible_tower_credential
+if credential.find('-') != -1:
+ cred_split = credential.split("-")
+else:
+ cred_split = credential.split(" ")
+inputs.tower_credential = int(cred_split[0])
+
+
+
+
+Example Function Post Process Script:
+
+
import java.util.Date as Date
+
+run_row = incident.addRow('ansible_tower_launched_jobs')
+
+run_row["reported_on"] = str(Date())
+run_row['type'] = 'ad hoc'
+run_row['launch_date'] = results.content['created'].replace('T', ' ')
+run_row['status'] = results.content['status']
+run_row['job_id'] = results.content['id']
+run_row['template_name'] = results.content['name']
+run_row['inventory'] = results.content['limit']
+run_row['arguments'] = str(results.content['module_args']).replace("{", "").replace("}", "")
+
+
+
+
+
+
+
+
+Function - Ansible Tower Run Job
+Execute a job for a given tower template
+
+Inputs:
+
+
+
+
+Name |
+Type |
+Required |
+Example |
+Tooltip |
+
+
+
+tower_arguments
|
+text
|
+No |
+name1=value;name2=value
|
+Semicolon separated name/value pairs |
+
+tower_hosts
|
+text
|
+No |
+-
|
+comma separated list of hosts to limit |
+
+tower_run_tags
|
+text
|
+No |
+-
|
+Comma separated list of plays to run |
+
+tower_skip_tags
|
+text
|
+No |
+-
|
+Comma separated list of plays to skip |
+
+tower_template_id
|
+number
|
+No |
+-
|
+Job Template Id to launch |
+
+tower_template_name
|
+text
|
+No |
+-
|
+Name of Job Template, optional to tower_template_id |
+
+
+
+
+
+
+Outputs:
+
+
+NOTE: This example might be in JSON format, but results
is a Python Dictionary on the SOAR platform.
+
+results = {
+ # TODO: Generate an example of the Function Output within this code block.
+ # To get the output of a Function:
+ # 1. Run resilient-circuits in DEBUG mode: $ resilient-circuits run --loglevel=DEBUG
+ # 2. Invoke the Function in SOAR
+ # 3. Gather the results using: $ resilient-sdk codegen -p fn_ansible_tower --gather-results
+ # 4. Run docgen again: $ resilient-sdk docgen -p fn_ansible_tower
+ # Or simply paste example outputs manually here. Be sure to remove any personal information
+}
+
+
+
+
+Example Function Input Script:
+
+
inputs.tower_template_name = rule.properties.ansible_tower_job_name
+inputs.tower_hosts = rule.properties.ansible_tower_hosts
+artifact_data = "artifact_value={};artifact_type={}".format(artifact.value, artifact.type)
+if rule.properties.ansible_tower_arguments:
+ inputs.tower_arguments = ";".join((rule.properties.ansible_tower_arguments, artifact_data))
+else:
+ inputs.tower_arguments = artifact_data
+inputs.tower_run_tags = rule.properties.ansible_tower_run_tags
+inputs.tower_skip_tags = rule.properties.ansible_tower_skip_tags
+
+
+
+
+Example Function Post Process Script:
+
+
import java.util.Date as Date
+if not results.content['failed']:
+ run_row = incident.addRow('ansible_tower_launched_jobs')
+
+ run_row['reported_on'] = str(Date())
+ run_row['type'] = 'template'
+ run_row['launch_date'] = results.content['created'].replace('T', ' ')
+ run_row['status'] = results.content['status']
+ run_row['job_id'] = results.content['job']
+ run_row['template_name'] = results.content['name']
+ run_row['project'] = results.content['summary_fields']['project']['name']
+ run_row['run_tags'] = results.content['job_tags']
+ run_row['skip_tags'] = results.content['skip_tags']
+ run_row['inventory'] = results.content['limit']
+ run_row['arguments'] = str(results.content['extra_vars']).replace("{", "").replace("}", "")
+ run_row['ignored_fields'] = str(results.content['ignored_fields']).replace("{", "").replace("}", "")
+
+
+
+
+
+
+
+
+Data Table - Ansible Tower Job Templates
+
+
+API Name:
+ansible_tower_job_templates
+
+
+Columns:
+
+
+
+Column Name |
+API Access Name |
+Type |
+Tooltip |
+
+
+
+Description |
+template_description
|
+text
|
+- |
+
+Job Id |
+template_id
|
+number
|
+- |
+
+Last Run |
+template_last_run
|
+text
|
+- |
+
+Name |
+template_name
|
+text
|
+- |
+
+Playbook |
+template_playbook
|
+text
|
+- |
+
+Project |
+template_project
|
+text
|
+- |
+
+Reported On |
+reported_on
|
+text
|
+- |
+
+
+
+
-
-
-Support
+
+Data Table - Ansible Tower Launched Jobs
+
+
+API Name:
+ansible_tower_launched_jobs
+
+
+Columns:
-Name |
-Version |
-Author |
-Support Email |
+
---|
Column Name |
+API Access Name |
+Type |
+Tooltip |
+
+
+
+Arguments |
+arguments
|
+text
|
+- |
+
+Completion Date |
+completion_date
|
+text
|
+- |
+
+Hosts |
+inventory
|
+text
|
+- |
+
+Ignored Fields |
+ignored_fields
|
+text
|
+- |
+
+Job Id |
+job_id
|
+number
|
+- |
+
+Launch Date |
+launch_date
|
+text
|
+Date Job was created |
+
+Name |
+template_name
|
+text
|
+Job Template Name |
+
+Project |
+project
|
+text
|
+- |
+
+Reported On |
+reported_on
|
+text
|
+Date row was added |
+
+Run Tags |
+run_tags
|
+text
|
+- |
+
+Skip Tags |
+skip_tags
|
+text
|
+- |
+
+Status |
+status
|
+text
|
+Status of Job |
+
+Type |
+type
|
+text
|
+‘ad hoc’, ‘template’ |
+
+
+
+
+
+
+
+
+Rules
+
+
+
+Rule Name |
+Object |
+Workflow Triggered |
+Condition |
-fn_ansible_tower |
-1.0.0 |
-IBM Resilient |
-support@resilientsystems.com |
+
Ansible Tower Get Ad Hoc Command Results |
+ansible_tower_launched_jobs |
+ansible_tower_get_ad_hoc_command_results
|
+ansible_tower_launched_jobs.type equals ad hoc
|
+
+Ansible Tower Get Job Results |
+ansible_tower_launched_jobs |
+ansible_tower_get_job_results
|
+ansible_tower_launched_jobs.type equals template
|
+
+Ansible Tower List Job Templates |
+incident |
+ansible_tower_list_job_templates
|
+-
|
+
+Ansible Tower List Jobs |
+incident |
+ansible_tower_list_jobs
|
+-
|
+
+Ansible Tower Run an Ad Hoc Command |
+incident |
+ansible_tower_run_an_ad_hoc_command
|
+-
|
+
+Ansible Tower Run Job |
+ansible_tower_job_templates |
+ansible_tower_launch_job_template
|
+ansible_tower_job_templates.template_id has_a_value
|
+
+Ansible Tower Run Job - Artifact |
+artifact |
+ansible_tower_run_job__artifact
|
+-
|
+
+Ansible Tower Run Job - Incident |
+incident |
+ansible_tower_run_job__incident
|
+-
|
+
+
+Troubleshooting & Support
+Refer to the documentation listed in the Requirements section for troubleshooting information.
+
+For Support
+This is a IBM Community provided app. Please search the Community ibm.biz/soarsupport for assistance.
+
+
@@ -784,25 +1626,46 @@ Support