Setting Up Google Cloud Projects, Resource Hierarchy, and IAM
Setting up a Google Cloud environment means building a resource hierarchy — an organization node at the top, folders for teams or environments, and projects that contain every actual resource — then controlling it with IAM allow and deny policies, organization policies, and Cloud Identity users and groups. The ACE exam opens with this domain because everything else depends on it: you cannot deploy a VM, enable an API, or grant access without a project, and you cannot govern dozens of projects without inheritance flowing down from the organization. This lesson walks through creating the hierarchy and a standalone organization, granting IAM roles at the right level (and blocking or time-limiting them when needed), managing identities manually and automatically, enabling APIs, provisioning Google Cloud Observability, checking quotas and regional availability, setting up networking, and the newer setup tasks Google now tests: Cloud Asset Inventory, Gemini Cloud Assist, and Workforce Identity Federation. Expect scenario questions that hinge on where in the hierarchy you attach a policy.
On this page11 sections
- How the Google Cloud resource hierarchy works
- Setting up a standalone organization
- How IAM policy inheritance flows down the hierarchy
- Blocking access with IAM deny policies and project liens
- Applying organization policies to the hierarchy
- Managing users and groups in Cloud Identity
- Configuring Workforce Identity Federation
- Enabling APIs and managing quotas
- Provisioning Google Cloud Observability
- Networking setup and verifying regional availability
- Cloud Asset Inventory and Gemini Cloud Assist
- Explain the organization, folder, project, resource hierarchy and how IAM allow policies inherit down it
- Set up a standalone organization with Cloud Identity and lock down its default domain-wide grants
- Grant IAM roles within a project using predefined roles, IAM Conditions and deny policies where appropriate
- Apply organization policy constraints, choosing between inherit, merge, replace and dry-run
- Manage Cloud Identity users and groups manually and with GCDS, SSO or Workforce Identity Federation
- Enable APIs, provision Google Cloud Observability, and assess regional and global quotas
- Set up VPC networking and verify product, machine type and GPU availability across regions and zones
- Analyze resources with Cloud Asset Inventory and Gemini Cloud Assist
How the Google Cloud resource hierarchy works
The resource hierarchy is a tree: one organization node at the root, optional folders beneath it (folders can nest), projects inside the organization or folders, and every actual resource — VMs, buckets, databases — inside a project. Resource Manager is the service that creates and manages this tree.
The organization node represents your company and comes from a Google Workspace or Cloud Identity account on a verified domain (see the next section). Folders group projects by department, team, or environment (for example finance/prod and finance/dev) and are the natural attachment point for policies and administrators that apply to a subset of the company. A common, exam-friendly design is one organization, a folder per department, and environment subfolders inside each: a department's guardrails and admins are set once on its folder, and every project created there later picks them up automatically. Separate organizations per department are the wrong answer — they split identity, billing and policy management instead of delegating it.
Projects are the unit that matters day to day. Every project has three identifiers: a mutable display name, a globally unique, immutable project ID you choose at creation (used in gcloud commands and API calls), and a Google-assigned immutable project number. Create one with gcloud projects create my-app-prod --organization=ORG_ID or place it in a folder with --folder=FOLDER_ID. APIs are enabled per project, billing is linked per project, and quotas are enforced per project — which is why the default answer to "how do I isolate two workloads?" is almost always "separate projects."
Who may create projects and manage folders
| Role | What it allows | What it does not allow |
|---|---|---|
Project Creator (roles/resourcemanager.projectCreator) | Create projects under the node where it is granted (org or folder); the creator becomes Owner of the new project | Change the folder's IAM policy or create projects under other folders |
Folder Admin (roles/resourcemanager.folderAdmin) | Full control of folders, including moving them and setting their IAM policies | Create projects — it has no resourcemanager.projects.create |
Folder Editor (roles/resourcemanager.folderEditor) | Update, delete and undelete folders | Move folders, change their IAM policies, or create projects |
Project IAM Admin (roles/resourcemanager.projectIamAdmin) | Manage a project's IAM policy | Use or change the project's resources |
The rule behind the table: a creation role takes effect only beneath the node where it is bound, so the place you grant it is the boundary of what the holder can create. Administering folders is a separate permission set from creating projects in them, and managing a project's IAM policy is separate from using its resources — which is why Project IAM Admin, not the basic Owner role, is the least-privilege way to delegate access management.
Setting up a standalone organization
A standalone organization is a Google Cloud organization for a company that does not use Google Workspace: you sign up for Cloud Identity on your own domain, verify that you own the domain, and the organization resource is provisioned automatically for that account. Cloud Identity has a Free edition with no per-user licence (Premium adds device and security management), whereas Workspace is licensed per user — so a company that does not use Google for email and collaboration has no reason to buy Workspace licences just to get an organization; Cloud Identity Free is enough.
The setup sequence:
- Sign up for Cloud Identity with the company domain; the person signing up becomes the first super administrator of the Admin console.
- Verify the domain (typically a DNS TXT record).
- Sign in to the Google Cloud console with that account and accept the terms; the organization resource is created then (for a user who already used Google Cloud, it appears when they next create a project or billing account). Existing projects created by domain users can be migrated into it.
- Grant Organization Administrator to an admin group, and add users — manually, synced from a directory, or with SSO to your existing identity provider.
Lock down the default grants. When an organization is created, the entire domain is granted Project Creator and Billing Account Creator on the organization node, so every user can create projects and billing accounts. Remove that domain binding at the organization node (adding a narrower grant for the platform team does not take anything away, because allow policies are additive), then grant those roles only to the groups that need them.
Workforce Identity Federation cannot replace this first step: a workforce identity pool is created inside an organization, so you need the Cloud Identity (or Workspace) account and its organization before you can federate anyone. The order is always the same: an organization from a Cloud Identity or Workspace account on the verified domain first, then sign-in through your existing identity provider — via SSO for those accounts, or a workforce pool added later. A pool on its own has nowhere to live.
How IAM policy inheritance flows down the hierarchy
IAM allow policies attached at a higher level of the hierarchy are inherited by everything beneath: a role granted on the organization applies to every folder, project, and resource in it; a role granted on a folder applies to all its projects; a role granted on a project applies to all resources in that project. The effective allow policy on a resource is the union of the policy set on it and every policy inherited from above. Allow policies only add: granting someone Viewer on a project does not reduce the Editor role they hold on the organization. The only way to block an inherited grant without removing it at its source is an IAM deny policy (next section).
An allow policy is a set of role bindings: each binding ties a role (a bundle of permissions) to one or more principals — a Google Account, a group, a service account, a domain, or a federated principal set. Grant one in a project with gcloud projects add-iam-policy-binding my-app-prod --member=group:devs@example.com --role=roles/compute.instanceAdmin.v1.
Moving a project changes what it inherits. Inheritance follows the current parent: after a project moves from one folder to another, it gets the new folder's (and its ancestors') bindings and loses the old folder's. Bindings set on the project itself move with it, and grants on the organization still apply. The same is true of organization policies, so check both before a move.
The three role types
| Type | Examples | When to use |
|---|---|---|
| Basic | Owner, Editor, Viewer | Rarely — they span every service in the project and violate least privilege |
| Predefined | roles/compute.viewer, roles/storage.objectViewer | The default choice — service-specific, maintained by Google |
| Custom | Your own permission bundle | When no predefined role matches the exact permission set |
Time-bound and attribute-based grants: IAM Conditions
An IAM Condition is a CEL expression attached to a role binding; the binding applies only while the expression is true. The usual use is temporary access: a condition such as request.time < timestamp("2026-12-31T00:00:00Z") makes a contractor's grant expire on its own, with no one having to remember to remove it. Conditions can also limit a grant to resources with a given name prefix or tag. Two limits matter: conditions cannot be used with basic roles (Owner, Editor, Viewer), so a time-bound grant must use a predefined or custom role; and not every resource type supports them.
Habits that keep this manageable: grant roles to groups, not individual users, at the lowest level of the hierarchy that covers every resource the group needs — a folder when the need spans its current and future projects, a single project when it does not.
Blocking access with IAM deny policies and project liens
An IAM deny policy is a set of rules that stop named principals from using named permissions, regardless of which roles they hold. Deny policies attach to an organization, folder or project, are inherited by everything beneath, and are evaluated before allow policies: if a deny rule matches, the request fails even when an allow binding grants the permission. Creating and managing them needs the Deny Admin role (roles/iam.denyAdmin).
Each deny rule lists:
- Denied principals — users, groups, service accounts, or principal sets (for example all principals).
- Denied permissions — written in the service's FQDN form, for example
cloudresourcemanager.googleapis.com/projects.delete; some permission groups are supported. - Exception principals (optional) — principals the rule does not apply to. Exceptions are set per rule, so exempting one person from a group-wide rule means adding them to that rule's exceptions, not granting them another role.
- An optional denial condition, for example to deny only on resources carrying a certain tag.
Because deny rules sit on top of allow policies rather than replacing them, they solve two kinds of problem: carving a single resource out of a broad inherited grant without touching the grant itself, and setting an ancestor-level prohibition that every existing and future descendant inherits, with a small exempt set of principals named in the rule.
| Control | Scope | Who can lift it |
|---|---|---|
Deny policy on projects.delete | Org, folder or project, inherited by new projects | Deny Admins can change the policy; that rule's exception principals are not blocked by it |
| Project lien | One project at a time; must be added to each project | Anyone with resourcemanager.projects.updateLiens, which project Owners have |
A lien is a guard against accidental deletion of a single project; a deny policy is the organization-wide, owner-proof control.
Applying organization policies to the hierarchy
Organization policies constrain what can be done with resources, regardless of who is doing it — the complement to IAM, which controls who can do what. An organization policy sets a constraint, and constraints come in two flavors: boolean constraints that are enforced or not (for example constraints/iam.disableServiceAccountKeyCreation or constraints/compute.skipDefaultNetworkCreation) and list constraints that allow or deny specific values (for example constraints/gcp.resourceLocations to restrict where resources may be created, or constraints/compute.vmExternalIpAccess to control which VMs may have external IPs). You can also write custom constraints on specific resource fields of supported services.
Organization policies are not a substitute for quotas or budgets either: a quota caps how much a project can consume, a budget alerts on spend, and an org policy decides which configurations are allowed at all. The underlying rule: a control that must bind even project Owners cannot be an IAM allow grant (Owners can change those), and coverage of projects that do not exist yet requires attaching the control to an ancestor — the organization or a folder.
How organization policy inheritance works
A node with no policy of its own inherits its parent's effective policy. A node that sets its own policy chooses how it relates to the parent:
| Setting on the child | Effect |
|---|---|
| Inherit (no policy) | Uses the parent's effective policy, including later changes to it |
| Merge with parent (list constraints) | Adds the child's allowed/denied values to the parent's; later changes to the parent still flow in |
| Replace (override) | Ignores the parent; only the child's values apply |
| Reset to default | Uses the constraint's Google-managed default behavior for that node |
The practical difference: merging keeps the child connected to its parent, so values the organization adds or removes later still reach it; replacing freezes the child on its own list and cuts it off from every later change above. Choose merge when a node needs extra values on top of the company-wide list, and replace only when it must deliberately diverge. This is the key contrast with IAM: allow-policy inheritance is strictly additive, whereas a lower node can replace an inherited organization policy.
Two behaviors to remember. Policies are not retroactive: enforcing a constraint blocks new non-compliant actions but does not delete or change resources that already violate it. And you can test before enforcing: a dry-run policy (supported for custom constraints, managed constraints and some legacy managed constraints) blocks nothing but writes would-be violations to the audit logs with protoPayload.metadata.dryRunResult="DENIED", giving you evidence of which teams would be affected; the Policy Simulator for organization policies previews a change against the resources that already exist. Setting policies needs the Organization Policy Administrator role (roles/orgpolicy.policyAdmin), granted at the organization.
Managing users and groups in Cloud Identity
Cloud Identity is where the human identities live — Google Cloud IAM grants roles to identities but never creates them. Cloud Identity provides Google Accounts for your domain and is administered in the Admin console at admin.google.com, which is separate from the Google Cloud console. Users, groups and organizational units are managed there by administrators.
Manual management means creating users and groups directly in the Admin console — one at a time, or many at once with a CSV bulk upload of users. It suits small teams but drifts out of date as people join and leave.
Automated management keeps Cloud Identity in step with an existing source of truth. Two separate decisions are involved, and exam scenarios often need both:
| Decision | Tool | What it does |
|---|---|---|
| Provisioning (do accounts exist?) | Google Cloud Directory Sync (GCDS), IdP provisioning connectors, Admin SDK Directory API | Creates, updates and suspends users and groups |
| Authentication (how do users sign in?) | SAML SSO profile in Cloud Identity (for example AD FS, Okta, Entra ID) | Sends sign-in to your IdP; no passwords need to be stored in Cloud Identity |
GCDS is a tool you run on a server in your network on a schedule. It performs a one-way sync from Active Directory or another LDAP directory into Cloud Identity, with no custom code. The directory stays authoritative: GCDS never writes back, and with its default deletion rules a change made directly to a synced user or group in the Admin console or through the Directory API is overwritten on the next run. To add someone to a synced group, add them in Active Directory.
SSO and provisioning are complementary: SSO with a third-party IdP still requires a Cloud Identity user account for each person; it only changes where they authenticate. If you want no Google accounts at all, that is Workforce Identity Federation (next section).
The operational pattern the exam expects: provision users automatically, organize them into groups that mirror job functions, and bind IAM roles to those groups. When an engineer joins or changes teams, a membership change in one place updates their access in every project — no IAM edits required.
Configuring Workforce Identity Federation
Workforce Identity Federation lets your employees access Google Cloud using their existing external identity provider without creating or syncing Cloud Identity user accounts for them. Your IdP authenticates the user via SAML 2.0 or OpenID Connect, and Google Cloud trusts that assertion directly.
The setup has three parts. First, create a workforce identity pool in your organization — a container for a set of external identities (the organization must already exist). Second, add a workforce pool provider configured with your IdP's metadata and:
- Attribute mappings that translate IdP claims into Google attributes:
google.subject(required, the user's identity),google.groups(group membership, for example fromassertion.groups), and customattribute.NAMEvalues. - An optional attribute condition — a CEL expression on the mapped attributes that decides which identities may authenticate through the provider at all (for example only one department). It filters sign-in; it is not an IAM Condition on a role binding.
Third, grant IAM roles to principals from the pool:
| Grant to | Principal identifier |
|---|---|
| One user | principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT |
| Everyone in an IdP group | principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/GROUP_ID |
| Everyone with an attribute value | principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/attribute.NAME/VALUE |
| Every identity in the pool | principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/* |
Federated users sign in through the federated console URL or configure gcloud for workforce federation.
Choosing between the approaches is a classic exam decision:
- Cloud Identity accounts (synced or provisioned, optionally with SSO) when users need Google accounts — for Workspace apps, the broadest product compatibility, or because you are creating the organization itself.
- Workforce Identity Federation when an organization already exists and wants no duplicate account lifecycle; identities live only in the external IdP, and deactivating someone there removes their access.
Do not confuse this with Workload Identity Federation, which does the same trick for applications and CI pipelines instead of humans — that one belongs to the service-account part of the exam.
Enabling APIs and managing quotas
Every Google Cloud service is exposed through an API that must be enabled in each project before the service will accept requests; most are disabled in a new project. Enable through the console's APIs and Services page or with gcloud services enable compute.googleapis.com. gcloud services list --enabled and --available only report state, and gcloud services disable turns an API off. Enabling needs the serviceusage.services.enable permission.
Diagnosing a disabled API. A request to a disabled API fails with HTTP 403 and the reason SERVICE_DISABLED (the message says the API "has not been used in project… or it is disabled"). It looks like a permissions problem but is not: the fix is gcloud services enable for that API, not a new IAM role.
What else a new project needs. Billable APIs such as Compute Engine can only be enabled once the project is linked to an active Cloud Billing account (billing setup is covered in the billing lesson). Enabling the Compute Engine API also creates things for you: the default VPC network (an auto mode network with permissive default firewall rules) unless the compute.skipDefaultNetworkCreation constraint is enforced, and the Compute Engine default service account (PROJECT_NUMBER-compute@developer.gserviceaccount.com). Some enablements also create Google-managed service agents.
Quotas
Quotas cap how much of each resource a project may consume. Rate quotas reset over a time window (API requests per minute); allocation quotas cap concurrent resources (CPUs per region, VPC networks per project, static IPs). Quotas are per project, and many are also per region — and several resources have both a regional and a global quota, each checked independently:
| Resource | Regional quota | Global quota |
|---|---|---|
| vCPUs | CPUS in the region (some families have their own, e.g. N2 CPUs) | CPUS_ALL_REGIONS |
| GPUs (standard VMs) | Per model, e.g. NVIDIA_T4_GPUS in the region | GPUS_ALL_REGIONS |
| GPUs (Spot/preemptible VMs) | Separate per-model preemptible quota, e.g. PREEMPTIBLE_NVIDIA_T4_GPUS | Not covered by the standard per-model quotas; check the project's quota page |
Read the quota named in a QUOTA_EXCEEDED error: if it is the regional CPUs quota, raising CPUS_ALL_REGIONS does not help, and moving to another region is not an option when data residency fixes the region. A project's first standard GPUs need both the regional per-model quota and the global GPUs quota raised; raising the preemptible quota does nothing for standard VMs.
View quotas on the Cloud Quotas page (IAM and Admin, then Quotas) or with gcloud quota commands, and request an increase there. Requesting an increase needs quota-admin permissions (for example the Quota Administrator role, which includes serviceusage.quotas.update). Increases are reviewed by Google, are not guaranteed, and can take time, so request them ahead of a launch rather than mid-incident. Keep three neighbours straight: a quota limits capacity; reservations hold zonal capacity and consume quota just like running VMs; a budget only alerts on spend and neither caps usage nor changes any quota. Raising a quota never raises your bill by itself — you pay only for what you use.
Provisioning Google Cloud Observability
Google Cloud Observability — Cloud Monitoring, Cloud Logging, and companion tools like Cloud Trace and Cloud Profiler — works per project with no setup: platform metrics for supported services flow into Monitoring automatically, and platform logs land in Logging's _Default log bucket, with admin activity audit logs kept in the non-configurable _Required bucket.
The setup tasks the exam cares about sit on top of that baseline:
- The Ops Agent on Compute Engine VMs. Without it, a VM reports only hypervisor-visible metrics (CPU, disk and network throughput). Installing the Ops Agent adds in-guest telemetry — memory utilization, disk space, and log files written inside the guest — so missing memory metrics or missing application log files are fixed by installing it.
- Metrics scopes for multi-project monitoring. A project's metrics scope starts with only itself. To build dashboards and alerting policies across several projects, designate a scoping project whose metrics scope includes each monitored project; its charts and alerts can then read their metrics.
- Central log storage. A log sink routes entries to a destination — a log bucket (possibly in another project), BigQuery, Cloud Storage or Pub/Sub — and exclusion filters drop noise. To collect logs from every current and future project in a folder or organization, create an aggregated sink on that folder or organization with child resources included, and point it at a user-defined log bucket whose retention period you choose to match your requirement. Grant the sink's writer identity permission to write to the destination (for a log bucket in another project, Logs Bucket Writer).
| Aggregated sink | Effect on child projects |
|---|---|
| Non-intercepting (default) | Copies matching logs; each project's own sinks, including _Default, keep routing them, so teams still see their logs |
| Intercepting | Stops matching logs from reaching the child projects' own sinks (except _Required), so they leave the projects' buckets |
Provisioning also includes creating notification channels (email, chat, paging integrations) so that alerting policies have somewhere to send incidents. At setup time your job is wiring: agents installed, scopes arranged, sinks pointed at the right destinations with the right retention.
Networking setup and verifying regional availability
Initial network setup means deciding which VPC networks your projects use. A VPC network is global; its subnets are regional.
| Auto mode | Custom mode | |
|---|---|---|
| Subnets | One created automatically in every region, plus new regions as they launch | Only the subnets you create, in the regions you choose |
| IP ranges | Predefined ranges from 10.128.0.0/9 | Any ranges you choose — so you can avoid overlap with on-premises or peered networks |
| Typical use | Experiments | Production |
Create one with gcloud compute networks create prod-vpc --subnet-mode=custom and then add subnets. An auto mode network can be converted to custom mode (one way only); its existing subnets are kept and you manage them from then on. The default network that comes with the Compute Engine API is auto mode with broad default firewall rules (SSH, RDP, ICMP from anywhere). To stop it appearing in every new project, enforce the compute.skipDefaultNetworkCreation organization policy on the organization or folder.
Shared VPC lets a host project own the network while service projects run workloads on it. A Shared VPC Admin enables the host project and attaches service projects. Service project developers then need Compute Network User (roles/compute.networkUser) in the host project — on the whole host project, or on individual subnets to limit which subnets they may use. A role in the service project such as Compute Instance Admin lets them create VMs there but does not grant use of host-project subnets.
Verify product availability before you commit to a location
Not every product, machine type or GPU exists in every region or zone. List locations with gcloud compute regions list and gcloud compute zones list; check a machine type with gcloud compute machine-types list --zones=europe-west2-a; check GPU models with gcloud compute accelerator-types list, filtered to the zones you care about with --filter; and consult each product's locations page. A scenario that fixes a region for data residency and needs a specific product or GPU there is testing this check.
Location scope also decides what survives a zone outage:
| Zonal (lost with the zone) | Regional (survives one zone) |
|---|---|
| VM instances, zonal persistent disks, Local SSD, Filestore Basic instances | Regional persistent disks (replicated to two zones; after a zone failure the disk can be force-attached to a VM in the other zone), regional and multi-region Cloud Storage buckets, regional managed instance groups |
Cloud Asset Inventory and Gemini Cloud Assist
Cloud Asset Inventory is the managed metadata inventory of your resources and policies across a project, folder or organization. It records resources together with their IAM policies, organization policies and other content types, and offers:
- Search —
gcloud asset search-all-resourcesandsearch-all-iam-policiesacross a whole organization. - Export — a point-in-time snapshot of all assets to BigQuery or Cloud Storage for analysis.
- Asset history — what an asset or its IAM policy looked like at any point in the last 35 days.
- Real-time feeds — publish each change to chosen asset types or content types (for example firewall rules, IAM policies) to a Pub/Sub topic, which a Cloud Run service or function can consume.
Two scoping details matter. A feed created on the organization or a folder covers projects created later; feeds created on each existing project miss every new project. And an export is a snapshot, so a Cloud Storage notification on the export bucket announces a new export file, not individual changes — use a feed for change notifications.
Know the neighbours: Cloud Audit Logs record who called which API (the change events), Cloud Asset Inventory records what the resources and policies look like now and over the last 35 days, and IAM recommendations (role recommender) suggest removing permissions a principal has not used.
Gemini Cloud Assist is the AI assistant inside the Google Cloud console: you ask in natural language about your own environment — which VMs have external IPs, what a failing deployment's errors mean, how resources are configured — and it analyzes the resources and logs to answer and suggest fixes. It is not Gemini Code Assist, the coding assistant for IDEs and the Cloud Shell Editor that helps write and explain code.
Tip. The ACE exam tests this topic with scenario questions about where to attach a control and which control it is: coverage of projects that do not exist yet needs an attachment on an ancestor (organization or folder); a control that must bind Owners cannot be an IAM allow grant; and federating identities without Google accounts still requires an organization to exist first. Expect near-twins: merge versus replace for organization policies, intercepting versus non-intercepting sinks, regional versus global quotas, Gemini Cloud Assist versus Gemini Code Assist, GCDS (provisioning) versus SSO (sign-in). Watch for distractors that present a disabled API as an IAM problem, and know the shapes of gcloud projects create, gcloud services enable, gcloud projects add-iam-policy-binding and gcloud compute accelerator-types list.
- The hierarchy is organization to folders to projects to resources; IAM and organization policies attach at any level and inherit downward
- A standalone organization comes from Cloud Identity (Free edition is fine) on a verified domain; remove the domain-wide Project Creator and Billing Account Creator grants it starts with
- Allow policies are additive — a lower-level grant never removes an inherited one; IAM deny policies, evaluated first and with per-rule exception principals, are how you block inherited access
- Moving a project swaps the inheritance from the old folder for the new one; project-level bindings move with it
- Prefer predefined roles granted to groups at the lowest level that works; IAM Conditions give time-bound grants but cannot be used with basic roles
- Organization policies constrain what can be done (even by Owners); a child can inherit, merge, replace or reset, policies are not retroactive, and dry-run shows impact first
- GCDS is a one-way sync from Active Directory (the directory wins); SSO controls sign-in but still needs Cloud Identity accounts; Workforce Identity Federation needs no accounts but an existing organization
- APIs must be enabled per project (SERVICE_DISABLED means run gcloud services enable); billable APIs need a linked billing account
- Regional and global quotas (CPUs, GPUs) are checked separately; reservations consume quota and budgets never cap it
- Install the Ops Agent for memory and in-guest logs; use metrics scopes for multi-project monitoring and non-intercepting aggregated sinks for central logs
- Use custom mode VPCs, skipDefaultNetworkCreation to suppress the default network, and Compute Network User on host subnets for Shared VPC
- Cloud Asset Inventory keeps 35 days of history and streams changes through org- or folder-level feeds; Gemini Cloud Assist answers questions about your resources in the console
Frequently asked questions
What is the Google Cloud resource hierarchy?
The resource hierarchy is Google Cloud's tree of containers: a single organization node at the root (from a Cloud Identity or Google Workspace account on a verified domain), optional folders for departments or environments, projects inside them, and all actual resources — VMs, buckets, databases — inside projects. IAM policies and organization policies attached at any level are inherited by everything below, which is how you govern many projects with one policy.
How does IAM policy inheritance work in Google Cloud?
A role granted in an allow policy at a higher level applies to everything beneath it: organization grants cover all folders and projects, folder grants cover their projects, and project grants cover the project's resources. The effective allow policy is the union of the resource's own policy and all inherited ones, so granting a lesser role lower down never reduces access. To block an inherited permission without removing the original grant, attach an IAM deny policy, which is evaluated before allow policies.
How do I set up a Google Cloud organization without Google Workspace?
Sign up for Cloud Identity (the Free edition has no per-user licence) with your company domain and verify the domain; the organization resource is provisioned for that account and the person who signed up becomes the first super administrator. Then remove the Project Creator and Billing Account Creator roles that the whole domain receives on the organization at creation, and grant them only to the groups that should have them.
What is the difference between IAM and organization policies?
IAM controls who can do what: allow policies bind roles to principals, and deny policies block specific permissions for specific principals. Organization policies control what can be done at all, regardless of identity: constraints such as restricting resource locations or blocking external IPs apply even to project Owners. A child node can inherit, merge with, replace or reset an inherited organization policy, which IAM allow policies cannot do.
How does Google Cloud Directory Sync work with Active Directory?
Google Cloud Directory Sync runs on a server in your network on a schedule and performs a one-way sync of users and groups from Active Directory or another LDAP directory into Cloud Identity. Active Directory stays authoritative: changes made directly to synced objects in the Admin console are overwritten on the next run. GCDS handles provisioning only; to let users sign in with their AD FS credentials you also configure a SAML SSO profile in Cloud Identity.
What is Workforce Identity Federation in Google Cloud?
Workforce Identity Federation lets employees access Google Cloud by authenticating with an external identity provider over SAML or OpenID Connect, without creating or syncing Cloud Identity accounts. You create a workforce identity pool and provider in an existing organization, map IdP claims to google.subject, google.groups and custom attributes, optionally restrict sign-in with an attribute condition, and grant IAM roles to principal or principalSet identifiers from the pool.
How do I request a quota increase in Google Cloud?
Open the Cloud Quotas page (IAM and Admin, then Quotas), filter to the exact quota named in the error — for example CPUs in one region, or a GPU model in a region plus the global GPUs (all regions) quota — and submit an increase request. Google reviews requests, so approval is neither guaranteed nor instant; request ahead of launches. Raising a quota does not itself increase your bill, and budgets do not change quotas.
Why can't I see memory metrics for my Compute Engine VM?
Because memory utilization is only visible from inside the guest operating system, and the default hypervisor-level metrics do not include it. Install the Ops Agent on the VM: it collects in-guest metrics such as memory and disk-space utilization and sends log files written inside the guest to Cloud Logging. Once the agent is running, memory metrics appear in Cloud Monitoring automatically.
Source
This lesson covers the "Setting up a cloud solution environment" domain of the official ACE exam guide. Vendors revise their guides — check the source for the current version.
- Google Cloud Associate Cloud Engineer exam guide — Google Cloud
Sign up free to mark lessons complete, bookmark topics and track your exam readiness.