JupiterOne Starbase
repository·main·Indexed 18 days ago
https://github.com/jupiterone/starbaseAn orchestrator for JupiterOne open source ingestion projects that aggregates assets and relationships from cloud, SaaS, and security services into a unified graph database powered by Neo4j. It supports over 115 open-source graph integrations, including Azure, GitHub, and Google Cloud. Starbase provides a CLI for managing the lifecycle of these integrations and supports storage endpoints for both local Neo4j instances and remote JupiterOne accounts.
What's inside Starbase
- The Google Cloud integration allows you to ingest Google Cloud resources and users into the JupiterOne graph. This enables resource visualization, mapping Google users to employees, and monitoring environment governance through pre-built queries, compliance frameworks (like Google Cloud CIS), and alert rule packs.
Overview of Starbase
mainStarbase is a platform from JupiterOne designed to democratize graph-based security analysis. It collects assets and relationships from various services and systems—including cloud infrastructure, SaaS applications, and security controls—and aggregates them into an intuitive graph view. The underlying storage engine is powered by Neo4j.
Key value propositions include:
- Depth and breadth: Provides thousands of entities (vertices) and relationships (edges) out-of-the-box from a wide range of external services.
- Uniform data model: Automatically classifies collected data, enabling the development of generic queries across different data sources.
- Extensibility: Designed to allow for easy development of new graph integrations.
Explore Starbase integrations
mainStarbase supports integrations with hundreds of services and systems. You can find detailed setup guides and configuration instructions for specific providers in their respective documentation pages.
Key integration highlights include:
- Cloud Providers: Azure, Google Cloud
- Version Control: GitHub, Bitbucket
- Productivity & Collaboration: Google Workspace, Jira
Understand the Starbase architecture
mainStarbase is composed of three distinct layers:
- Starbase Core: The orchestration engine responsible for bootstrapping and managing the lifecycle of graph integrations.
- Graph Integrations: Individual tools that perform the actual data collection from third-party services (e.g., Google Cloud, AWS). These are managed as separate repositories.
- Graph Integrations SDK: A library containing core utilities and runtime packages used by developers to build new integrations.
How the Google Cloud integration works
mainThe integration operates on a periodic fetch cycle:
- JupiterOne periodically fetches users and cloud resources from your Google Cloud environment.
- This data is used to update the JupiterOne graph.
- You can then use JupiterOne queries to monitor updates or configure alerts to trigger actions when the graph changes.
Uninstall the Google Cloud integration from JupiterOne
mainTo remove the Google Cloud integration, follow these steps within the JupiterOne interface:
- Click the Gear Icon in the configuration menu and select Integrations.
- Locate the Google Cloud integration tile and click it.
- Find the specific integration to delete in the list.
- Click the trash can icon associated with that integration.
- Click the Remove button to confirm deletion.
Configure Starbase via config.yaml
mainStarbase uses a
config.yamlfile located at the project root to manage integrations and storage settings.- Create your configuration file by copying the example:
cp config.yaml.example config.yaml - Edit
config.yamlto provide values for each integration and your storage engine.
Note on Integrations: The specific configuration keys for individual integrations (e.g.,
PROJECT_ID,SERVICE_ACCOUNT_KEY_FILE) are defined within their respectivegraph-*repository projects. You must supply these values in theconfig.integrations[].configsection.integrations: - name: graph-google-cloud instanceId: testInstanceId directory: ./.integrations/graph-google-cloud gitRemoteUrl: https://github.com/JupiterOne/graph-google-cloud.git config: SERVICE_ACCOUNT_KEY_FILE: {} PROJECT_ID: '...' ORGANIZATION_ID: '...' CONFIGURE_ORGANIZATION_PROJECTS: false storage: engine: neo4j config: username: neo4j password: devpass uri: bolt://localhost:7687- Create your configuration file by copying the example:
Set up Google Cloud Organization auto-discovery
mainJupiterOne can automatically discover and configure integration instances for every project under a Google Cloud organization.
Setup Steps
- Prepare a Main Project:
- Create a service account in a single Google Cloud project.
- Copy the service account email and generate a service account key.
- Enable all required Service APIs in this 'main' project and all 'child' projects (except
cloudasset.googleapis.comandiam.googleapis.com, which only need to be enabled in the 'main' project).
- Configure Organization Permissions:
- Create a custom role at the Organization level with these permissions:
resourcemanager.folders.get resourcemanager.folders.list resourcemanager.organizations.get resourcemanager.projects.get resourcemanager.projects.list serviceusage.services.list resourcemanager.organizations.getIamPolicy cloudasset.assets.searchAllIamPolicies orgpolicy.policy.get - Add the service account email as a member of the Organization. Assign it the custom role created above plus
roles/iam.securityReviewer.
- Create a custom role at the Organization level with these permissions:
- Configure in JupiterOne:
- Navigate to the Google Cloud integration configuration page.
- Use the service account key from step 1.
- Check Configure Organization Projects.
- Enter your numerical Organization ID.
- Click CREATE CONFIGURATION.
Note: Auto-configuration may take several minutes. Once complete, individual project instances will appear in your integration list.
- Prepare a Main Project:
Prerequisites for Starbase development
mainTo develop with or run Starbase locally, ensure you have the following installed:
- Node.js: Use the official installer or a version manager like
nvmorfnm. - Yarn: The project uses
yarnfor dependency management. - API Credentials: You must register accounts in the external systems you intend to ingest and obtain the necessary API credentials.
After installation, run
yarn installto set up the local environment.yarn install- Node.js: Use the official installer or a version manager like
Enable required Google Cloud Service APIs
mainThe JupiterOne Google Cloud integration requires specific APIs to be enabled to ingest data. If an API is disabled, the integration will skip that specific data type.
Enabling via Google Cloud Console
- Click the service name link in the reference table below.
- Select your Google Cloud project from the dropdown.
- Click Enable.
Enabling via
gcloudCLIYou can enable all supported services using the
gcloud services enablecommand. Note: You can only enable 20 services at a time.gcloud services enable \ accesscontextmanager.googleapis.com \ apigateway.googleapis.com \ appengine.googleapis.com \ bigquery.googleapis.com \ binaryauthorization.googleapis.com \ privateca.googleapis.com \ cloudasset.googleapis.com \ dns.googleapis.com \ cloudfunctions.googleapis.com \ cloudkms.googleapis.com \ logging.googleapis.com \ memcache.googleapis.com \ pubsub.googleapis.com \ cloudresourcemanager.googleapis.com \ run.googleapis.com \ spanner.googleapis.com \ sqladmin.googleapis.com \ storage.googleapis.com \ compute.googleapis.com \ redis.googleapis.com \ iam.googleapis.com \ container.googleapis.com \ serviceusage.googleapis.com \ monitoring.googleapis.comConfigure the Azure Integration in JupiterOne
mainOnce Azure is prepared, add the configuration in the JupiterOne UI:
- In JupiterOne, go to the Gear Icon -> Integrations.
- Select the Azure tile and click Add Configuration.
- Fill in the following settings:
- Account Name: A unique identifier for this account. If Tag with Account Name is checked, this value is stored in
tag.AccountName. - Description: A description for your team.
- Polling Interval: Frequency of updates (use
DISABLEDfor manual execution). - Directory (tenant) ID: The Azure Tenant ID.
- Application (client) ID: The Azure App Registration Client ID.
- Application (client) Secret: The Azure App Registration Secret Value.
- Ingest Active Directory: Enable this to ingest
azure_user,azure_user_group, andazure_service_principalentities. (Enable in only one instance per Directory). - Scope Configuration:
- To ingest all subscriptions: Select Configure Subscription Instances. This enables
azure_management_groupingestion and automatically provisions instances for each subscription. - To ingest a single subscription: Enter the specific Subscription ID.
- To ingest all subscriptions: Select Configure Subscription Instances. This enables
- Account Name: A unique identifier for this account. If Tag with Account Name is checked, this value is stored in
Use the Starbase base container image
mainA pre-built base container image is available via the GitHub Container Registry.
This image contains the Starbase installation but does not include any configuration or graph integrations. To use this image, you must:
- Provide configuration: Make your
config.yamlavailable to the container (for example, using a Kubernetes ConfigMap). - Initialize integrations: Run
starbase setupinside the container to install the specific graph integrations required by your configuration before attempting to run data collection.
- Provide configuration: Make your