Roles (basic, predefined, custom) in GCP - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When assigning roles in Google Cloud, it's important to understand how the number of operations grows as you assign roles to more users or resources.
We want to know how the time to assign roles changes when the number of assignments increases.
Analyze the time complexity of assigning roles to multiple users.
# Assign roles to users
for user in user_list:
gcloud projects add-iam-policy-binding my-project \
--member="user:" + user.email \
--role="roles/viewer"
This sequence assigns the predefined "viewer" role to each user in a list.
Identify the API calls, resource provisioning, data transfers that repeat.
- Primary operation: IAM policy binding API call to assign a role to a user.
- How many times: Once per user in the list.
Each user requires a separate API call to assign the role, so the total calls grow directly with the number of users.
| Input Size (n) | Approx. Api Calls/Operations |
|---|---|
| 10 | 10 |
| 100 | 100 |
| 1000 | 1000 |
Pattern observation: The number of API calls increases one-to-one with the number of users.
Time Complexity: O(n)
This means the time to assign roles grows linearly as you add more users.
[X] Wrong: "Assigning roles to many users happens instantly regardless of number."
[OK] Correct: Each assignment requires a separate API call, so more users mean more time.
Understanding how role assignments scale helps you design efficient access control in cloud projects, a useful skill for real-world cloud management.
What if we batch multiple role assignments into a single API call? How would the time complexity change?
Practice
Solution
Step 1: Understand role categories
Google Cloud has three main role types: basic, predefined, and custom.Step 2: Identify broad access roles
Basic roles like Owner, Editor, and Viewer provide broad access across all services.Final Answer:
Basic roles -> Option BQuick Check:
Broad access = Basic roles [OK]
- Confusing predefined roles with basic roles
- Thinking custom roles are broad by default
- Mixing service accounts with roles
Solution
Step 1: Identify how to create custom roles
Custom roles require specifying exact permissions and are created via CLI or console.Step 2: Match correct command
The 'gcloud iam roles create' command is used to create custom roles with specific permissions.Final Answer:
Use the gcloud CLI with 'gcloud iam roles create' and specify permissions -> Option AQuick Check:
Create custom role = gcloud iam roles create [OK]
- Confusing assigning roles with creating roles
- Using service accounts to create roles
- Assigning basic roles instead of creating custom ones
gcloud projects add-iam-policy-binding my-project \ --member='user:alice@example.com' \ --role='roles/storage.objectViewer'What type of role is 'roles/storage.objectViewer'?
Solution
Step 1: Analyze the role name format
The role name 'roles/storage.objectViewer' follows the predefined role naming pattern.Step 2: Understand role types
Predefined roles are specific to services and have names like 'roles/serviceName.roleName'.Final Answer:
Predefined role -> Option DQuick Check:
roles/storage.objectViewer = Predefined role [OK]
- Thinking all roles starting with 'roles/' are basic
- Confusing custom roles with predefined roles
- Assuming service accounts have roles
gcloud iam roles create myCustomRole --project=my-project --permissions=storage.buckets.list,compute.instances.createWhat is the likely cause of the error?
Solution
Step 1: Review required parameters for custom role creation
Creating a custom role requires a title and description along with permissions.Step 2: Check the command for missing parameters
The command lacks '--title' and '--description' flags, causing the error.Final Answer:
The command is missing the role title and description -> Option AQuick Check:
Missing title/description causes create role error [OK]
- Assuming permissions from multiple services are invalid
- Ignoring required flags like title and description
- Mistaking project ID errors for permission errors
Solution
Step 1: Understand the requirement
The team member needs permissions only for Compute Engine, not other services.Step 2: Evaluate role types
Basic roles are broad and cover all services; custom roles require manual permission selection; predefined roles offer service-specific permissions.Step 3: Choose the best fit
The predefined Compute Engine Admin role grants full Compute Engine permissions without extra access.Final Answer:
Predefined Compute Engine Admin role, because it limits permissions to Compute Engine only -> Option CQuick Check:
Service-specific access = Predefined role [OK]
- Using broad basic roles instead of specific predefined roles
- Assigning Viewer role expecting management permissions
- Creating unnecessary custom roles without need
