📖 Scenario: You are managing access control in a Google Cloud Platform (GCP) project. You want to create a custom role to grant specific permissions to a team member without giving full predefined roles.
🎯 Goal: Create a custom role in GCP with a specific set of permissions using a JSON configuration file.
📋 What You'll Learn
Create a JSON object representing the custom role with exact fields
Add a title and description for the custom role
Specify the exact permissions list for the role
Include the stage of the role as 'GA' (General Availability)
💡 Why This Matters
🌍 Real World
Custom roles help organizations give precise access to team members, improving security by limiting permissions to only what is needed.
💼 Career
Understanding custom roles is essential for cloud administrators and security engineers managing access control in GCP environments.
Progress0 / 4 steps
1
Create the base JSON structure for the custom role
Create a JSON object called custom_role with the keys title, description, and includedPermissions. Set title to "Custom Viewer", description to "Can view resources", and includedPermissions to an empty list [].
GCP
Hint
Start by defining the main keys and their exact values as strings and an empty list for permissions.
2
Add permissions to the custom role
Add the following permissions to the includedPermissions list in custom_role: "storage.buckets.get", "storage.objects.list", and "compute.instances.get".
GCP
Hint
List the permissions exactly as strings inside the includedPermissions array.
3
Add the role stage to the custom role
Add the key stage with the value "GA" to the custom_role JSON object.
GCP
Hint
Add the stage key at the same level as title and description.
4
Complete the custom role JSON for deployment
The custom role JSON object is now complete and ready for deployment. Ensure it has the title, description, includedPermissions, and stage at the top level.
GCP
Hint
This JSON format matches the GCP custom role definition for use with `gcloud iam roles create`.
Practice
(1/5)
1. What is the main purpose of creating a custom role in Google Cloud Platform?
easy
A. To create virtual machines quickly
B. To automatically assign all permissions to a user
C. To delete existing predefined roles
D. To tailor permissions specifically for your project needs
Solution
Step 1: Understand role customization
Custom roles allow you to pick specific permissions instead of using broad predefined roles.
Step 2: Identify the purpose of custom roles
They help tailor access to exactly what is needed, improving security and management.
Final Answer:
To tailor permissions specifically for your project needs -> Option D
Quick Check:
Custom roles = tailored permissions [OK]
Hint: Custom roles = pick permissions you want [OK]
Common Mistakes:
Thinking custom roles give all permissions automatically
Confusing custom roles with deleting roles
Assuming custom roles create resources
2. Which of the following is the correct gcloud command syntax to create a custom role named myCustomRole in project my-project with the title "My Role" and permission storage.buckets.list?
easy
A. gcloud iam roles create myCustomRole --project=my-project --title="My Role" --permissions=storage.buckets.list --stage=GA
B. gcloud iam create role myCustomRole --project my-project --title My Role --permissions storage.buckets.list
C. gcloud roles create myCustomRole --project=my-project --title="My Role" --permissions=storage.buckets.list
D. gcloud iam roles add myCustomRole --project=my-project --title="My Role" --permissions=storage.buckets.list
Solution
Step 1: Identify correct gcloud command structure
The correct command to create a custom role is gcloud iam roles create with flags for project, title, permissions, and stage.
Step 2: Match syntax with options
gcloud iam roles create myCustomRole --project=my-project --title="My Role" --permissions=storage.buckets.list --stage=GA matches the correct syntax including --project, --title, --permissions, and --stage flags.
Final Answer:
gcloud iam roles create myCustomRole --project=my-project --title="My Role" --permissions=storage.buckets.list --stage=GA -> Option A
Hint: Use 'gcloud iam roles create' with all flags [OK]
Common Mistakes:
Using 'gcloud iam create role' instead of 'roles create'
Missing the --stage flag
Incorrect flag order or missing equal signs
3. Given this command:
gcloud iam roles create dataViewer --project=my-project --title="Data Viewer" --permissions=bigquery.datasets.get,bigquery.tables.list --stage=ALPHA
What will be the effect of this custom role?
medium
A. Allows users to get dataset metadata and list tables in BigQuery
B. Allows users to create and delete BigQuery datasets
C. Grants full admin access to BigQuery
D. Denies all BigQuery permissions
Solution
Step 1: Analyze permissions in the command
The permissions bigquery.datasets.get and bigquery.tables.list allow reading dataset info and listing tables.
Step 2: Understand what these permissions enable
These permissions let users view dataset metadata and see tables but not modify or delete them.
Final Answer:
Allows users to get dataset metadata and list tables in BigQuery -> Option A
Quick Check:
Permissions = read-only BigQuery access [OK]
Hint: Check permissions list for read or write actions [OK]
Common Mistakes:
Assuming ALPHA stage means full access
Confusing get/list with create/delete permissions
Thinking it grants admin rights
4. You tried to create a custom role with this command:
gcloud iam roles create testRole --project=my-project --title="Test Role" --permissions=compute.instances.start,compute.instances.stop
But it failed. What is the most likely reason?
medium
A. Project ID is incorrect
B. Permissions are invalid for custom roles
C. Missing the --stage flag which is required
D. Role ID cannot contain uppercase letters
Solution
Step 1: Check required flags for role creation
The --stage flag is mandatory when creating custom roles to specify the release stage.
Step 2: Identify missing flag in the command
The command lacks the --stage flag, causing failure.
Final Answer:
Missing the --stage flag which is required -> Option C
Quick Check:
--stage flag required = Missing the --stage flag which is required [OK]
Hint: Always include --stage when creating custom roles [OK]
Common Mistakes:
Ignoring the required --stage flag
Assuming permissions are invalid
Mistaking project ID or role ID format
5. You want to create a custom role that allows users to list storage buckets and read objects but not delete them. Which permissions should you include in your custom role?
hard
A. storage.buckets.list, storage.objects.delete
B. storage.buckets.list, storage.objects.get
C. storage.buckets.create, storage.objects.get
D. storage.buckets.delete, storage.objects.get
Solution
Step 1: Identify permissions for listing buckets and reading objects
storage.buckets.list allows listing buckets, and storage.objects.get allows reading objects.
Step 2: Exclude delete permissions
Do not include any delete permissions to prevent deletion.
Final Answer:
storage.buckets.list, storage.objects.get -> Option B
Quick Check:
List + read, no delete = storage.buckets.list, storage.objects.get [OK]
Hint: Include only list and get permissions, exclude delete [OK]
Common Mistakes:
Including delete permissions by mistake
Confusing create with list permissions
Assuming read includes delete
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.