Google Identity and Access Management (IAM) API

Documentation of the access control API that will be implemented by all 1st party services provided by the Google Cloud Platform (like Cloud Storage, Compute Engine, App Engine).

Any implementation of an API that offers access control features will implement the google.iam.v1.IAMPolicy interface.

Data model

Access control is applied when a principal (user or service account), takes some action on a resource exposed by a service. Resources, identified by URI-like names, are the unit of access control specification. It is up to the service implementations to choose what granularity of access control to support and what set of actions (permissions) to support for the resources they provide. For example one database service may allow access control to be specified only at the Table level, whereas another might allow access control to also be specified at the Column level.

This is intentionally not a CRUD style API because access control policies are created and deleted implicitly with the resources to which they are attached.

Policy

A Policy consists of a list of bindings. A Binding binds a set of members to a role, where the members can include user accounts, user groups, user domains, and service accounts. A role is a named set of permissions, defined by the IAM system. The definition of a role is outside the policy.

A permission check involves determining the roles that include the specified permission, and then determining if the principal specified by the check is a member of a binding to at least one of these roles. The membership check is recursive when a group is bound to a role.