DelineaDSV
Manage credentials for applications, databases, CI/CD tools, and services without causing friction in the development process.
Authentication & Identity Management · Delinea DevOps Secrets Vault
Details
| ID | DelineaDSV |
|---|---|
| Provider | Delinea |
| Category | Authentication & Identity Management |
| From Version | 6.0.0 |
| Docker Image | demisto/python3:3.12.13.10116658 |
| Supported Modules | Agentix XSIAM |
README
Manage credentials for applications, databases, CI/CD tools, and services without causing friction in the development process.
This integration was integrated and tested with version 1.37.0 of DelineaDSV
Configure DelineaDSV in Cortex
| Parameter | Required |
|---|---|
| Server URL (e.g. https://example.com) | True |
| Trust any certificate (not secure) | False |
| Use system proxy settings | False |
| Client ID | True |
| Client Secret | True |
Commands
You can execute these commands from the CLI, as part of an automation, or in a playbook.
After you successfully execute a command, a DBot message appears in the War Room with the command details.
dsv-secret-get
Getting a secret fom DSV
Base Command
dsv-secret-get
Input
| Argument Name | Description | Required |
|---|---|---|
| name | Secret name for DSV. | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| secret | String | Received JSON object secret |
Command Example
!dsv-secret-get name="accounts/xsoar"
Context Example
{
"DSV": {
"Secret": {
"attributes": {},
"created": "2022-05-17T10:55:41Z",
"createdBy": "users:thy-one:testuser@accessecm.com",
"data": {
"password": "XSOARPassword",
"username": "xsoar"
},
"description": "",
"id": "e88f725b-ff1c-4902-961e-fcdf3c7f712f",
"lastModified": "2022-05-17T10:55:41Z",
"lastModifiedBy": "users:thy-one:testuser@accessecm.com",
"path": "accounts:xsoar",
"version": "1"
}
}
}
Configuration parameters
url— Server URL (e.g. https://example.com) (required)client_id— Username (required)client_secret— Password (required)insecure— Trust any certificate (not secure)proxy— Use system proxy settings
Commands (1)
-
dsv-secret-getGetting a secret fom DSV.
import demistomock as demisto from CommonServerPython import * from CommonServerUserPython import * # from typing import Dict # Disable insecure warnings import urllib3 urllib3.disable_warnings() class Client(BaseClient): def __init__(self, server_url: str, client_id: str, client_secret: str, proxy: bool, verify: bool, provider: str): super().__init__(base_url=server_url, proxy=proxy, verify=verify) self._client_id = client_id self._client_secret = client_secret self.provider = provider self._token = self._generate_token() self._headers = {"Authorization": self._token, "Content-Type": "application/json"} def _generate_token(self) -> str: if self.provider == "Local Login": body = { "username": self._client_id, "password": self._client_secret, "grant_type": "password", } else: raise Exception("Logon Type not supported") headers = {"Content-Type": "application/x-www-form-urlencoded"} return "Bearer " + (self._http_request("POST", "/v1/token", headers=headers, data=body)).get("accessToken") def getSecret(self, name: str) -> str: return self._http_request("GET", url_suffix="/v1/secrets/" + str(name)) def dsv_secret_get_command(client, name: str = ""): secret = client.getSecret(name) markdown = tableToMarkdown("Information", secret) return CommandResults( readable_output=markdown, outputs_prefix="DSV.Secret", outputs_key_field="secret", raw_response=secret, outputs=secret ) def test_module(client) -> str: if client._token == "": raise Exception("Failed to get authorization token.", "Check you credential and access to DSV.") return "ok" def main(): # pragma: no cover params = demisto.params() client_id = params.get("client_id") client_secret = params.get("client_secret") # get the service API url url = params.get("url") proxy = params.get("proxy", False) verify = not params.get("insecure", False) provider = params.get("provider", "Local Login") # credential_objects = demisto.params().get('credentialobjects') demisto.info(f"Command being called is {demisto.command()}") delinea_commands = {"dsv-secret-get": dsv_secret_get_command} try: client = Client( server_url=url, client_id=client_id, client_secret=client_secret, proxy=proxy, verify=verify, provider=provider ) if demisto.command() in delinea_commands: return_results( delinea_commands[demisto.command()](client, **demisto.args()) # type: ignore[operator] ) elif demisto.command() == "test-module": # This is the call made when pressing the integration Test button. result = test_module(client) return_results(result) except Exception as e: return_error(f"Failed to execute {demisto.command()} command.", f"Error: {str(e)}") if __name__ in ("__main__", "__builtin__", "builtins"): main()