Safeguard.sh Documentation Center

Integrations

Every external system Safeguard connects to — source control, registries, clouds, identity, ticketing, notifications, SIEMs, and more.

Integrations

Safeguard is useful only if it sees your environment. This page catalogs every supported integration across nine categories, how each one connects, and what scopes it needs.

Every integration:

  • Authenticates with the minimum privileges required.
  • Uses short-lived workload identity where the provider supports it.
  • Logs every action to the Safeguard audit stream.
  • Can be disconnected and its data purged in one click.

Add and manage integrations under Settings → Integrations or via the safeguard integrations CLI.

Source Control (SCM)

ProviderAuthNotes
GitHub (Cloud + Enterprise Server 3.7+)GitHub App + OAuthOrganization-wide install; per-repo enablement
GitLab (SaaS + Self-managed 15.0+)GitLab App + OAuthSupports groups, sub-groups
Bitbucket (Cloud + Data Center 7.0+)OAuth + App PasswordWorkspace-wide install
Azure DevOpsAzure DevOps App + PATOrg or project scope
Gitea / ForgejoOAuth AppSelf-hosted
AWS CodeCommitIAM roleOIDC federation supported
Google Cloud Source RepositoriesWorkload Identity
GerritService accountREST API

What Safeguard does with SCM access:

  • Reads repository metadata, commits, PRs, CODEOWNERS, GitHub Advanced Security findings.
  • Opens pull requests for Griffin auto-fix and self-healing.
  • Writes commit status / check runs with pass/fail results.
  • Subscribes to push, PR, tag, and release webhooks.

Write scopes are never enabled without explicit per-repo consent.

Container Registries

RegistryAuthNotes
Docker HubOAuth / TokenRead only unless push is enabled for auto-fix
GitHub Container Registry (GHCR)GitHub App or PATOIDC supported
Amazon ECR / ECR PublicIAM roleRoles Anywhere supported
Azure Container Registry (ACR)Managed Identity / Service Principal
Google Artifact Registry (GAR)Workload Identity Federation
Google Container Registry (GCR)Workload Identity FederationDeprecated by Google; migrate to GAR
HarborRobot accountOn-prem + SaaS
JFrog ArtifactoryToken
Sonatype NexusToken
Quay.io / Red Hat QuayRobot accountOn-prem + SaaS
Red Hat OpenShift internal registryKubeconfig
GitLab Container RegistryGitLab App
AWS Public ECRAnonymous read
Custom OCI-compliantTokenAny OCI-distribution-compatible registry

Capabilities:

  • Enumerate images, tags, and digests.
  • Pull image metadata for layer analysis without pulling the full image.
  • Verify Sigstore / Notation signatures.
  • Push signed attestations alongside images.

Cloud Providers

ProviderAuthUse
AWSIAM role, Roles Anywhere, OIDC WIFAsset inventory (EKS, ECS, Lambda, ECR, S3, CodeBuild), VPC deployment for runners/admission
AzureManaged Identity / Service Principal / Workload IdentityAsset inventory (AKS, ACI, Functions, ACR, Container Apps), VNet deployment
Google CloudWorkload Identity FederationAsset inventory (GKE, Cloud Run, Cloud Functions, GAR, Cloud Build), VPC deployment
Oracle Cloud InfrastructureInstance principalOKE + ADB scans
IBM CloudIAM tokenKubernetes Service + Code Engine
DigitalOceanAPI token
Linode / Akamai CloudPersonal access token
HetznerAPI token
Kubernetes (any)Kubeconfig or in-cluster service accountAdmission controller, runtime collector

CI / CD

SystemIntegration
GitHub ActionsMarketplace actions + OIDC federation
GitLab CIDocker image + JWT authentication
Azure PipelinesTask extension
JenkinsPlugin (2.346+)
CircleCIOrb
BuildkitePlugin
TeamCityPlugin
Bitbucket PipelinesPipe
Travis CIContainer image
Drone CIPlugin
Tekton / Jenkins XTask
Argo WorkflowsWorkflowTemplate
Spacelift / Terraform CloudIntegration

See CI/CD Integration for installation snippets.

Identity (SSO / SCIM)

ProviderProtocolsNotes
OktaSAML 2.0, OIDC, SCIM 2.0Reference implementation
Microsoft Entra ID (Azure AD)SAML 2.0, OIDC, SCIM 2.0Conditional Access supported
Google WorkspaceOIDC, SAML 2.0Directory sync supported
JumpCloudSAML 2.0, SCIM
OneLoginSAML 2.0, OIDC, SCIM
Ping IdentitySAML 2.0, OIDC
DuoSAML 2.0
KeycloakOIDC, SAML 2.0Self-hosted
Authentik / autheliaOIDC, SAML 2.0Self-hosted
AWS IAM Identity CenterSAML 2.0, SCIM

Secret Managers

SystemUse
HashiCorp VaultRotate leaked secrets, fetch short-lived credentials for workflows
AWS Secrets ManagerAuto-rotate on secret detection
Azure Key VaultRotate + retrieve
GCP Secret ManagerRotate + retrieve
DopplerRotate on secret detection
InfisicalRotate on secret detection
1Password Secrets AutomationRotate on secret detection
CyberArk ConjurRotate + retrieve

Ticketing & Work Tracking

SystemCapabilities
Jira (Cloud + Data Center 8.20+)Create / update / comment / transition; custom field mapping; auto-close on finding resolution
LinearCreate issue, assign, update status
Azure BoardsWork item create / update
AsanaTask create / update
ClickUpTask create / update
GitHub IssuesIssue create / close on merge
GitLab IssuesIssue create / close
ServiceNow ITSMIncident / Change / Problem records
ZendeskTicket create
FreshServiceTicket create

Notifications & ChatOps

ChannelNotes
SlackPer-channel routing + slash commands (/safeguard triage, /safeguard suppress)
Microsoft TeamsAdaptive cards; per-channel routing
DiscordWebhook-based
Google ChatChatbot integration
MattermostWebhook-based
EmailPer-user digest + escalation routes
SMS (Twilio)Critical-KEV-in-prod pages only, opt-in
Webhook (generic)JSON or plain-text templates

On-Call & Incident

SystemUse
PagerDutyPage on critical in-production findings, workflow failures, missed SLAs
OpsGenieSame as PagerDuty
VictorOps / Splunk On-CallSame as PagerDuty
incident.ioOpen incident channel on qualifying findings
FireHydrantOpen incident
RootlyOpen incident

SIEM, Logging & Observability

SystemData
SplunkHEC (findings, audit, telemetry) + Splunk ES app
DatadogLogs + Metrics + Events API
New RelicOpenTelemetry
Elastic (ECS)Logs + Metrics
Chronicle (Google SecOps)Direct integration
Microsoft SentinelNative connector
Exabeam / LogRhythm / Securonix / Arctic Wolf / Rapid7 InsightIDRSyslog + JSON webhook
HoneycombOpenTelemetry
Grafana CloudOpenTelemetry
Prometheus + Loki + TempoSelf-hosted OpenTelemetry
AWS CloudWatch / S3Log ship
Azure Monitor / Log AnalyticsLog ship
Google Cloud LoggingLog ship

Package Managers & Registries (Non-Container)

EcosystemIntegration
npm Registry / GitHub Packages / internal npmToken-authenticated read
PyPI / private PyPI (devpi / Gemfury)Token-authenticated read
Maven Central / Sonatype Nexus / JFrog ArtifactoryToken-authenticated read
NuGet Gallery / Azure Artifacts / GitHub PackagesToken-authenticated read
RubyGemsAPI key
Packagist / ComposerToken
crates.io / private CargoToken
Go modules / GOPROXYGOPROXY endpoint
Conda / Anaconda Cloud / mambaToken

AI / ML Registries

SystemIntegration
Hugging FaceUser / org / private; OAuth or token
MLflowREST API token
AWS SageMaker Model RegistryIAM role
Vertex AI Model RegistryWorkload Identity Federation
Azure ML Model RegistryManaged Identity
Databricks Model ServingPAT
Kubeflow / KServeIn-cluster service account

Data Warehouses / Lakes (for audit log + metric export)

SystemMode
SnowflakeSecure data sharing / pull subscription
BigQueryDataset export
Redshift / Redshift ServerlessDirect load
Databricks (Unity Catalog)Delta share
Clickhouse Cloud / self-hostedJSON over HTTP

Compliance & GRC Platforms

SystemIntegration
DrataEvidence push
VantaEvidence push
SecureFrameEvidence push
Tugboat Logic / OneTrustEvidence push
HyperproofEvidence push
Archer / MetricStream / LogicManagerExport bundle

How to Add an Integration

Most integrations follow the same flow:

  1. Settings → Integrations → Add integration.
  2. Pick the provider.
  3. Authenticate (OAuth redirect, workload identity, or paste a token).
  4. Pick the scope (which repos / clusters / projects to include).
  5. Confirm.

Integrations are scoped to a team or organization, with team-level overrides where relevant.

API and Terraform

Integrations can be declared as code:

safeguard integrations create --type github --org acme --token-env SG_GH_TOKEN

Or via the Terraform provider:

resource "safeguard_integration" "github_acme" {
  type  = "github"
  org   = "acme"
  token = var.github_token
}

On this page