After this article
You’ll be able to connect Google Cloud Platform to Lumos so that Lumos can securely audit which users, groups, and service accounts have access to which projects across your GCP organization. Lumos can also assign and unassign IAM role bindings and suspend or reactivate users.Capabilities
Provisioning behavior:
- Assign a role: Lumos reads the resource’s IAM policy, adds the member to the role binding, and writes the policy back. Assigning a role the member already holds is rejected as already assigned.
- Unassign a role: Lumos removes the member from the role binding in the resource’s IAM policy. Deleted users are matched by principal so stale bindings can still be cleaned up.
- Suspend and reactivate: these set the
suspendedflag on the Google account through the Admin SDK Directory API. This suspends the whole Google account, not just GCP access, so use it deliberately.
Required plan and roles
There’s no required Google Cloud plan to connect this integration. To complete setup you need:- Google Workspace Super Admin (or a user with access to the domain-wide delegation page) to delegate API access to Lumos.
- Organization-level administrator access in Google Cloud to create a custom role and bind it at the organization level. Assigning the custom role to a service account requires the Organization Role Administrator role at the org level.
- An Admin User Email that Lumos impersonates for organization-level endpoints. This user must hold the Cloud Asset Viewer and Organization Administrator roles at the Org level. For auditability, Lumos recommends creating a dedicated service account email specifically for Lumos use.
setIamPolicy permissions that role-binding provisioning needs. The Admin SDK admin.directory.user scope lets Lumos suspend and reactivate users. A read-only connection is possible
Instructions
Step 1: Delegate access to Lumos in Google Workspace
- In the Google Admin console, go to Security → Access and data control → API controls → Manage Domain Wide Delegation (direct link: admin.google.com/ac/owl/domainwidedelegation).
- Click Add new.
- Enter the following Client ID:
- Paste the following OAuth Scopes and click Authorize:
admin.directory.user scope is what lets Lumos suspend and reactivate users. The other Admin SDK scopes are read-only.
Step 2: Create and assign a custom role in Google Cloud Console
- In the Google Cloud Console, go to IAM & Admin → Roles. Make sure your Organization (not an individual project) is selected in the resource picker in the top left.
- Create a new custom role with the following permissions:
setIamPolicy permissions are what let Lumos assign and unassign IAM role bindings. Leave them out for a read-only connection.
- Set the role’s launch stage to at least Beta or General Availability.
- Go to IAM & Admin → IAM (with the Organization still selected), click Grant Access, and assign the custom role to the Lumos service account:
Step 3: Find your Organization ID
- In the Google Cloud Console, click the resource drop-down menu in the top left corner (or go to IAM & Admin → Settings).
- Copy your Organization ID, a purely numeric string like
123456789.
C, for example C0xxxxxxx). It is a different identifier and the connection will fail.
Step 4: Connect in Lumos
- Find the Google Cloud Platform card in your Lumos integrations and click it.
- Enter your Organization ID from Step 3.
- Enter the Admin User Email, the user Lumos will impersonate to access endpoints that require Organization-level admin permissions. This user must have the Cloud Asset Viewer and Organization Administrator roles assigned at the Org level.
- Complete the connection flow.
API Endpoints Used
Troubleshooting
The custom role doesn’t appear when assigning it to the service account
- Ensure your account has the Organization Role Administrator role at the org level.
- Confirm the custom role’s launch stage is set to at least Beta or General Availability.
- Confirm the role was created with the Organization selected, not an individual project. A role created or bound at the project level will not grant Lumos visibility across the organization.
Connection fails with HttpError 400: Fail to resolve resource organizations/<id>
The value entered in the Organization ID field is likely your Google Workspace Customer ID (starts with C), not your numeric GCP Organization ID. Enter the numeric Organization ID found in IAM & Admin → Settings (or in the Cloud Console URL).