@vectraai/kibana-vc

    0.2.5 • Public • Published

    Kibana-dashboard

    This is a CLI tool that:

    • Source controls Kibana default dashboards
    • Fetching remote Kibana state
    • Deploying new Kibana state

    Notes

    • Customers would be able to create their own dashboards and new deployment won't affect them
    • All the changes customers do on a default Vectra's dashboards would be overwritten when deploying
    • If customers want to modify Vectra's dashboard and keep the changes, they will need to clone them. It is easy to do with Kibana, just click Save and tick create new Dashboard. That will actually clone the dashboard and all the future deployments won't affect cloned Dashboards. Cloned Dashboard won't receive any updates

    Installation

    npm i -g @vectraai/kibana-vc
    

    Usage

    Run kibana-vc --help for a usage explanation

    kibana-vc --help
    
      Usage: kibana-vc [options] [command]
    
      Options:
    
        -V, --version                     output the version number
        -h, --help                        output usage information
    
      Commands:
    
        deploy [options] <stateFilePath>
    

    Fetch

    Run kibana-vc fetch --help for a fetch explanation

    kibana-vc fetch --help
    
      Usage: fetch [options]
    
      Options:
    
        -h, --host [url]                 ElasticSearch host (default: http://127.0.0.1)
        -p, --port [port]                ElasticSearch port (default: 9200)
        -i, --kibanaIndex [kibanaIndex]  Kibana Index (default: .kibana)
        -P, --pretty-print               Pretty Print output
        -h, --help                       output usage information
    
    

    getting the state of the target kibana and writing into the stdout We can redirect to a file

    kibana-vc fetch > somefilename.json

    Fetch command generates a file ready to be deployed. We keep track of the category, certainty, description, threat fields in config.notification for searches on account of Vectra provided searches Objects of type config are ignored by this tool.

    Fetch by id

    Run kibana-vc fetch_ids --help for an explanation

    kibana-vc fetch_ids --help
    
     Usage: fetch_ids [options]
    
      Options:
    
        -h, --host [url]                 ElasticSearch host (default: http://127.0.0.1)
        -p, --port [port]                ElasticSearch port (default: 9200)
        -i, --kibanaIndex [kibanaIndex]  Kibana Index (default: .kibana)
        -I, --id [id]                    Individual ids to fetch (default: )
        -h, --help                       output usage information
    

    In short: kibana-vs fetch_ids --id "some-id" --id "some-other-id" will return a json array with the objects from ES if found If no id is specified, it'll return the entire kibana state

    Deploy

    Run kibana-vc deploy --help for a deploy explanation

    kibana-vc deploy --help
    
      Usage: deploy [options] <stateFilePath>
    
      Options:
    
        -h, --host [url]                 ElasticSearch host (default: http://127.0.0.1)
        -p, --port [port]                ElasticSearch port (default: 9200)
        -i, --kibanaIndex [kibanaIndex]  Kibana Index (default: .kibana)
        --dry-run                        don't make any changes to anything
        --force-update                   force update of kibana state (default: false)
        -h, --help                       output usage information
    

    Examples

    Get the state from the remote running Elastic Search. kibana-vc fetch -h "ELASTIC_HOST" > ${pathToStateFile}

    Deploy to localhost kibana-vc deploy ${pathToStateFile}

    Deploy to remote running ES

    kibana-vc deploy -h "ELASTIC_HOST" ${pathToStateFile}
    

    Objects of type config are ignored by this tool. We update records based on a checksum of the _source object and the description field in config.notification if one is present

    Kibana state file

    State file is a json document that represent Kibana state. We are getting it from "Dev" Kibana and version controling it using git (TODO). Example statefile with initial Kibana is located in src/__tests__/fixtures/kibana_initial_state.json

    Dev infrastructure

    Run docker-compose up to spin up local kibana + elasticsearch

    TODO:

    • Support S3 as a state storage
    • Write statefile in kibana index in a special document for kibana-vc. That way we can track state more easily and be independent of customers changes
    • More verbose diff (like tf does)
    • Fully featured dryRun with initialization support
    • Version Control with git
    • Fetch Remote State
    • Support Multiple config files
    • Support Multiple Kibana versions

    Keywords

    none

    Install

    npm i @vectraai/kibana-vc

    DownloadsWeekly Downloads

    14

    Version

    0.2.5

    License

    ISC

    Unpacked Size

    31.8 kB

    Total Files

    17

    Last publish

    Collaborators

    • dkatavic
    • gambuzzi
    • lmammino
    • serbanescueugen