Code Monkey home page Code Monkey logo

org-monitor's Introduction

OrgMonitor

OrgMonitor is a Salesforce Connected App written in Node.js used to gather the stats necessary to evaluate the basic security posture of a wide portfolio of Salesforce Orgs. It runs a set of SOQL queries against all connected Orgs on an hourly basis: it answers questions like "how many users/profiles/permsets/roles/classes do we have?", gives you visibility of users with high-level privileges (VAD, MAD, AuthorApex, etc), and surfaces Health Check score and risks โ€” all from a central location.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

The application requires:

  • Node.js
  • Yarn
  • MongoDB
  • PostgreSQL
  • One or more Salesforce Orgs (production or sandbox)

Installing locally

Create a Connected App

  1. Create a Connected App in your main Salesforce Org by navigating to Setup > Create > Apps, then click on "New"
  2. Set the Selected OAuth Scopes value to Access and manage your data (api) and Perform requests on your behalf at any time (refresh_token, offline_access)
  3. Set the Callback URL value to http://localhost:3000/callback
  4. Save and note down the Consumer Key and Consumer Secret values

Download and run the application

  1. Download this repo to your local machine
  2. Create the following ENV variables:
  • PORT is the port the web application will run on, defaults to 3000
  • NODE_ENV set to development allows the application to bypass the built-in SAML SSO auth
  • DATABASE_URL is a connection string pointing to your PostgresSQL database
  • MONGODB_URI is a connection string pointing to your MongoDB database
  • CLIENT_ID is the newly created Connected App's Consumer Key value
  • CLIENT_SECRET is the newly created Connected App's Consumer Secret value
  • REDIRECT_URI is the newly created Connected App's Callback URL value
  • CORP_DOMAIN is your corporate domain (i.e.: mycompany.com) used to identify Salesforce users without corporate email
  • COOKIE_SECRET is a secret used to sign the session cookie
  • ADMIN_TOKEN is a secret used to edit/delete Org information such as name or description
  • ENCRYPTION_KEY is a hex string representing 32 random bytes, used to encrypt/decrypt the Oauth refresh tokens (AES 256). Generate one with openssl rand -hex 32.
  1. Install Node.js dependencies through Yarn, with yarn install
  2. Run the server with node server.js, confirm you see the App listening on port 3000 message in the console
  3. Load http://localhost:3000/setup, confirm you see the Successfully setup DB message in the console
  4. Kill and restart the server with node server.js and start the worker with node worker.js
  5. Load http://localhost:3000 and you should now see the OrgMonitor homepage

Create a dedicated user for OrgMonitor in each of your Orgs, and connect them to OrgMonitor

  1. It's recommended to create a dedicated user/profile for OrgMonitor with no CRUD access and only API Enabled, View All Users, View Health Check and View Setup and Configuration permissions, with proper IP whitelisting
  2. You're now ready to connect your Salesforce Orgs by navigating to http://localhost:3000/add/prod for Production Orgs, or http://localhost:3000/add/sandbox for Sandbox Orgs, logging in with the credentials of the newly created users, and accepting the Oauth request

Deployment

When ready for production deployment:

  1. Edit the Connected App and include the new hostname to the Callback URL value
  2. Update the application's REDIRECT_URI value to match the Callback URL
  3. Update the application's NODE_ENV value to production and add the following ENV variables (refer to the Passport-SAML documentation on how to set these) to enable SAML SSO auth in order to protect access to the application's data:
  • SAML_ENTRY_POINT
  • SAML_ISSUER
  • SAML_CALLBACK
  • SAML_CERT

License

Copyright (c) 2017, salesforce.com, inc.
All rights reserved.
Licensed under the BSD 3-Clause license.
For full license text, see LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause

org-monitor's People

Contributors

hiddenshape avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.