This repository contains the source code that synchronizes Google Workspace Users/Groups and Keeper Enterprise Users/Teams. This is necessary because Google Workspace does not adequately support Team SCIM provisioning.
Read this document: Google Workspace User and Group Provisioning with Cloud Function
This project replicates the
keeper scim push --source=googleCommander CLI command and shares configuration settings with this command.
- Keeper Secret Manager enterprise subscription
- Create KSM application or reuse the existing one
- Share the SCIM configuration record with this KSM application
Add Deviceand make sure method isConfiguration FileBase64 encoding.
Run the sync locally using a KSM configuration file (config.base64 in the current directory or $HOME):
go run ./cmd/local [optional-record-uid]- Clone this repository locally
- Copy
.env.yaml.sampleto.env.yaml - Edit
.env.yaml- Set
KSM_CONFIG_BASE64to the content of the KSM configuration file generated at the previous step - Set
KSM_RECORD_UIDto configuration record UID created for Commander'sscim pushcommand
- Set
- Deploy to Cloud Run. Replace
<REGION>placeholder with the GCP region.
gcloud run deploy ksm-google-scim \
--source=. \
--region=<REGION> \
--memory=512Mi \
--timeout=120 \
--max-instances=1 \
--no-allow-unauthenticated \
--env-vars-file=.env.yamlAlternatively, deploy the published Docker Hub image:
gcloud run deploy ksm-google-scim \
--image=docker.io/keeper/ksm-google-scim:latest \
--region=<REGION> \
--memory=512Mi \
--timeout=120 \
--max-instances=1 \
--no-allow-unauthenticated \
--env-vars-file=.env.yamlOr build locally from the Dockerfile:
docker build --platform linux/amd64 -t ksm-google-scim .If go mod download fails behind Zscaler, uncomment the corporate CA lines at the top of the Dockerfile.
Published automatically on push to main or version tags (v*):
docker pull keeper/ksm-google-scim:latest- Navigate to Cloud Run -> Services
-
Paste
docker.io/library/keeper/ksm-google-scim:latestinto Container image URL -
Pick your
Region -
Expand Containers, Networking, Security
-
Select Variables & Secrets tab and add
KSM_CONFIG_BASE64andKSM_RECORD_UIDenvironment variables
-
Click
Createbutton
-
Find the deployed Cloud Run service and copy its URL to the clipboard
-
Search for
schedulerand selectCloud Scheduler -
Click
CREATE JOB.15 * * * *means every hour at 15th minute -
Configure the executionPick HTTPTarget type, GETHTTP method. Paste theksm-google-scimservice URL -
Grant the scheduler service account the Cloud Run Invoker role (
roles/run.invoker) on the service -
Configure the job to send an OIDC token for authentication
-
Create Scheduler and check it works by clicking
FORCE RUN





