Explain IAM roles and service accounts in GCP.
GCP IAM binds principals to roles on resources. A service account is a special identity for workloads rather than humans.
- Principals: users, groups, service accounts, domains.
- Roles: basic (owner, editor, viewer), predefined, or custom. Roles are collections of permissions.
- Policy: a binding of principal, role, and resource, inherited down the hierarchy.
Service accounts:
- Identified by an email such as sa@project.iam.gserviceaccount.com.
- Prefer attaching them to resources such as Compute Engine, GKE Workload Identity, or Cloud Run so workloads get short-lived tokens.
- Avoid downloading long-lived JSON keys; if you must, rotate them and store them in Secret Manager.
gcloud iam service-accounts create reader --display-name="Reader"
gcloud projects add-iam-policy-binding my-proj \
--member="serviceAccount:reader@my-proj.iam.gserviceaccount.com" \
--role="roles/storage.objectViewer"
Follow least privilege and prefer Workload Identity Federation over keys.