Connect Google Workspace to Smallstep
Smallstep can integrate with Google Workspace to keep your ChromeOS device inventory in sync and manage credentials for ChromeOS devices.
Prerequisites
You will need:
- A Smallstep team
- A Google Workspace tenant, with ability to manage domain-wide delegation
- A Google Cloud project, with ability to create service accounts and keys
Step-by-step instructions
In Google Cloud Console, select a project you will use for Smallstep. This can be any project, as long as you can grant domain-wide delegation to the client in a future step.
Your Google Cloud project must have the Admin SDK and Chrome Verified Access APIs enabled. By default, they're disabled.
0. Enable APIs
- Go to Admin SDK API for your project, and choose Enable API
- Go to Chrome Verified Access API for your project, and choose Enable API
1. Create a service account for Smallstep
- In Google Cloud, visit IAM & Admin → Service Accounts
- Choose Create service account
- Set a Service account name, e.g.
Smallstep Google Workplace Sync - Optionally, provide a Description for the account
- Choose Done
- Open the details for the Service Account you just created
- Copy the Unique ID (numeric) and the Email shown on the details tab; you’ll need them later
2. Setup Workload Identity Federation
The Smallstep platform authenticates to your Google Workspace through Workspace Identity Federation for Google Kubernetes Engine.
- In Google Cloud, visit IAM & Admin → Workload Identity Federation
- Choose Create pool
- Set a name, e.g. "Smallstep Google Workspace Sync Pool"
- Optionally, provide a Description for the pool
- Click Continue
- Select OpenID Connect (OIDC) as the provider
- Set a name, e.g. "Smallstep Google Workspace Sync"
- Set the issuer URL to https://container.googleapis.com/v1/projects/prod-us-central1-e5bd/locations/us-central1/clusters/primary
- Set Allowed audiences to
sts.googleapis.com - Click Continue
- For the google.subject attribute, set assertion.sub
- Click Add mapping, and set attribute.k8s_sa to assertion.kubernetes.io.serviceaccount.name
- Click Save
3. Grant Access to the Service Account
- Click Grant access
- Select Grant access using service account impersonation
- Select the Service account you created earlier from the dropdown
- Select k8s_sa as the attribute
- Set system:serviceaccount:prod:inventory as the value for the attribute
- Click Save
- When the modal appears, you can Dismiss it
4. Grant device directory API permissions
- In Google Admin, visit Security → Access and data control → API controls
- Under Domain wide delegation, select Manage Domain Wide Delegation
- In the API Clients table, select Add new
-
Enter the Unique ID of the service account from Step 1
-
For the OAuth Scopes, enter the following scopes:
https://www.googleapis.com/auth/admin.directory.device.chromeos https://www.googleapis.com/auth/verifiedaccess
-
Choose Authorize
-
5. Create and Assign Custom Admin Role to Service Account
- In Google Admin, visit Account → Admin roles
- Click Create new role
- Give it a descriptive name, e.g. Google Workspace Sync
- Enable the Manage ChromeOS Devices privilege (incl. all subitems)
- Click Continue
- Click Create role
- Click the newly created role
- Click Admins assigned
- Click Assign service accounts
- Enter the principal of the service account created earlier
- Click Assign role
6. Add Google Workspace to Smallstep
In Smallstep, visit Settings → Device Management.
Configure a new Google Workspace Integration with the following values:
- The Customer ID of your Google Workspace tenant. The Customer ID is a short alphanumeric string. It can be obtained from the Google Workspace Admin Account Settings page
- The numeric Project ID of the GCP project your service account was created in
- The workload identity pool
- The workload identity provider
- The service account principal
7. Add Smallstep certificates to Google Workspace
After saving the Google Workspace connection, you will see settings for your integration.
-
Download the following Authority Certificates:
- Smallstep Devices Root CA
- Smallstep Devices Intermediate CA
- Smallstep Agents Root CA
- Smallstep Agents Intermediate CA
-
In Google Workspace, visit Devices → Networks → Certificates.
-
Choose an Organizational Unit, if desired
-
Choose Add certificate
In the modal, configure the following:
- Provide a descriptive name, e.g.
Smallstep Devices Root - Upload the PEM file for the Smallstep Devices Root CA
- Check ✅ Enabled for Chromebook
- Choose Add
- Provide a descriptive name, e.g.
-
Repeat Step 4 for each of the certificates you downloaded
8. Verified Access Mode Configuration
- In Google Workspace, visit Devices → Chrome → Settings.
- Select Device settings
- Click Verified mode
- Ensure the correct Organizational Unit is selected for scoping the configuration
- Under Configuration, select Require verified mode boot for verified access
- Set the email address of the GCP service account in the Services with full access field
- Click Save
9. ChromeOS Extension Configuration
- In Google Workspace, visit Devices → Chrome → Apps & extension.
- Click Users & browsers
- Ensure the proper Organizational Unit is selected for scoping the configuration
- Click the + icon on the bottom right
- Click Add Chrome app or extension by ID
- Set the Extension ID to icjpnolkgdnfgpccpkdlipalcmalkndl
- In the dropdown, choose From a custom URL, and set it to https://packages.smallstep.com/chromeos/latest/update.xml
- Click Save
- Click the newly created extension to edit it
- Select Force install + pin as the Installation policy
- Under Certificate management, enable allow access to keys and Allow enterprise challenge
- Under Policy for extensions, add the following JSON, replacing
<team-slug>with your Smallstep team slug:
{
"team": {
"Value": "<team-slug>"
}
}
- Click Save in the top right corner
- Scroll down in the side panel details, and confirm the Installation URL field shows the URL you set in step 7.
- Set the Update URL to Installation URL (see above)
- Click Save
Confirmation
Within a few minutes, you should see all of your ChromeOS devices in Smallstep's Devices tab. A full sync is performed every 8 hours, and a partial sync every hour.
With the extension deployed, continue to Configure ChromeOS Device Identity Certificates — by default the extension only requests a short-lived attestation certificate, which can't be used for Wi-Fi, VPN, or mTLS.
Last updated on February 3, 2026
Introducing
Device Identity
Ensure that only company-owned devices can access your enterprise's most sensitive resources.