# [[GCP Identity Access Management]] ![[GCP Identity Access Management.svg]] [docs](https://cloud.google.com/storage/docs/access-control) This page describes how to give someone access to resources on [[Google Cloud Platform|GCP]]. In GCP and other [[Cloud Provider|cloud providers]] [[Identity Access Management]] (IAM) policies control *who* can access *what* resources (authorization). IAM is the general term for configuring security and permissions. IAM is unified across all GCP services and allows you to centrally manage permissions. IAM requires that users first be [[Authentication|authenticated]] [[GCP Authentication|through GCP]]. ## Layers of IAM IAM involves setting permissions at multiple layers. Each layer takes precedence over the ones below it in case of contention. ### IAM Deny Policies Deny policies always take precendence over allow policies. If an actor's identity matches that of an identity on the list of IAM Deny Policies, then access is blocked regardless of any other allow rules. ### Organizational Policies Organizational policies control what IAM policies can or can't give access to. For example, if there is an organizational policy that disallows the creation of a service account, no IAM role will be able to allow a user to create a service account. ### IAM hierarchy IAM policies are inherited top-down in this order: - Org - Folder - Project - Resource IAM policies from higher levels take precedence over IAM policies from lower levels. For example, a policy set at the folder level takes precedence over oen set at the resource-level in case of contention. ### Role bindings (Allow) IAM role bindings grant permissions to an actor at a particular level (e.g., `roles/storage.objectUser)` on a project). Role bindings include a role, an actor, a resource, and permission(s). These role bindings can also be conditional (e.g. on the time of day or IP address of the actor). ## What about Access Control Lists (ACLs)? An Access Control List is a list of permissions per resource and per user. It is the legacy method of authorization. It's still in use in some GCP services, but IAM is now the recommended option. %% # Excalidraw Data ## Text Elements IAM Deny Policies ^GQNwZNzT Organizational Policies ^h5QLPU9l IAM hierarchy: Org > Folder > Project > Resource ^94d0f7QN Role bindings (Allow) ^a451NuIV GCP Identity Access Management Hierarchy ^sH7DLwny ## Embedded Files ee136c6d1f436ead96087b780566a05d72d39c02: [[icon-no-entry.svg]] a71212610bef068d62f1b02f40468170feb61ebd: [[icon-org-chart.svg]] df6daf6419d6c0a9f5f2ef73d1325fcb3409f1be: [[icon-open-folder-black.png]] bf560717e4e27fbf2987cfa930a6ae1ddfb158aa: [[icon-project.svg]] 561bbc0d0e306901e92843cde6936858c6db480e: [[icon-database.svg]] ec5758b9ed4333f9807dce6cf7395bbfb91234db: [[icon-allow-permission.svg]] c760ddd19417f29e2a93d0c1c24335c1d0f3fa59: [[icon-user.svg]] 1eef98ded3ef9bd097ccc2a8be38ea8571562951: [[icon-link.svg]] ## Drawing ```compressed-json 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 ``` %%