Understanding the Difference Between IAM Roles and Policies in AWS
- Role-based, attribute-based, & just-in-time access to infrastructure
- Connect any person or service to any infrastructure, anywhere
- Logging like you've never seen
Summary: In this article, we will discuss the similarities and differences between identity and access management (IAM) roles and policies in Amazon Web Services (AWS). You’ll learn the difference between AWS roles vs. policies and see examples of each. By the end of this article, you’ll have a clear understanding of what distinguishes an AWS role from a policy, in addition to understanding the difference between IAM roles, users, and groups.
What's the Difference Between Roles and Policies in AWS?
The difference between IAM roles and policies in AWS is that a role is a type of IAM identity that can be authenticated and authorized to utilize an AWS resource, whereas a policy defines the permissions of the IAM identity.
Keeping your cloud computing infrastructure secure is critical to preventing unauthorized users from gaining access to company data and protecting your AWS resources. IAM technology makes it easy to ensure that the right people have the right access to the right resources at the right time by allowing users to confirm their identities using a single set of login credentials.
With the right IAM solution, users are able to move seamlessly between applications to streamline their workflows—preventing disruptions from cumbersome authentication protocols while keeping security tight.
What is an AWS IAM Policy?
IAM is a framework of policies and technologies to ensure that the right users have the appropriate access to technology resources. An AWS IAM policy defines the permissions of an identity (users, groups, and roles) or resource within the AWS account. An AWS IAM policy regulates access to AWS resources to help ensure that only authorized users have access to specific digital assets. Permissions defined within a policy either allow or deny access for the user to perform an action on a specific resource.
IAM policies can either be identity-based or resource-based. Identity-based policies are attached to an identity (a user, group, or role) and dictate the permissions of that specific identity. In contrast, a resource-based policy defines the permissions around the specific resource—by specifying which identities have access to a specific resource and when. Identity-based policies and resource-based policies both uphold IAM security standards and give organizations flexibility with how to best set up their resource management strategy to meet their needs.
What makes up an actionable AWS IAM policy statement?
A series of elements attributed to a broader policy can take us from general policy permissions to specific resource actions. Taken together, these elements make up a policy statement (the main policy element) that provides granular information regarding a single permission.
- Services: The first “level” of the broader policy statement, AWS IAM either recognizes or does not recognize a specific service, like Amazon EC2 or Amazon S3. If it does not recognize the service, it will be classified as “uncategorized.” If it is recognized, IAM will either “Allow” or “Deny” the service based on the effect of the policy.
- Actions: Actions can be recognized or unrecognized by the IAM. If recognized, the action is included under “List”, “Read”, “Write”, or “Permissions Management” access levels. These access-level classifications define the level of access the action grants a user according to policy permissions.
- Resources: Provides a specific key, condition, or value that defines whether the action supports a resource-level permission. It is important to note that actions and resources must be compatible. If a specified resource is not valid for an action as defined by the IAM, then any request to use the action for the resource will fail.
- Conditions: Condition elements use condition operators (greater than, less than, equal to, etc.) to provide further constraints on actions within resources when a policy is in effect.
While condition elements are optional within the overall policy statement, they can help generate a permission structure that limits access to the bare minimum needed for a user to complete a specific task. This helps to drive optimal security for the AWS resources in use across the organization.
Example of an AWS IAM Policy
An organization initiates a short-term project. Current and new employees will need specific access to specialized resources during the lifecycle of this project. By creating an AWS IAM policy, IT admins can ensure that members of a project will only have access to the exact resources they’ll need to complete the project.
They can do this by creating a policy that enables access to a particular resource for a specific date range and applying the policy to each IAM identity (users, roles, or groups).
For example:
What is an AWS IAM Role?
IAM identities provide access to resources under specific conditions within an AWS account. The purpose of an identity is not only to provide access to resources, but to ensure that users are authenticated and authorized so that your digital resources can be properly managed and remain secure. Identities come in three varieties: users, groups, and roles.
Roles are designed so that a set of permissions can easily be delegated to users on an individual basis. For example, instead of assigning an individual all their necessary permissions one at a time, they can be assigned a specific role that contains all the necessary permissions in a single step.
Once a role is created, it can be assigned to as many individuals as needed. This makes roles particularly useful when assigning permissions to new users or changing permissions to users who have shifted jobs within their organization.
When it comes to AWS roles vs. policies, a good rule of thumb is to remember that policies are applied to roles, which can then be assigned to individual users via roles.
Example of an AWS IAM Role
An organization undergoes major expansion to undertake a new project: new employees are coming in, and current employees are shifting positions laterally within the organization. The current employees no longer need access to some of their old permissions but need access to new permissions. Additionally, the new employees need access to a wide variety of permissions to do their jobs. In order to accommodate this rapid new growth, IT administrators need a way to quickly and easily control access to their cloud resources while keeping their infrastructure secure.
Enter AWS IAM roles. Administrators create roles that are tied to specific policies that are appropriate for the new project. Employees—both current and new employees—can then be easily assigned to their new roles so that they only have access to what their new positions require.
The Difference Between AWS IAM Users, Groups, and Roles
As previously mentioned, users, groups, and roles are all specific types of AWS identities. Identities can be authenticated and authorized to perform actions using AWS resources under certain conditions.
IAM User vs. IAM Role
An IAM user is a single person or service entity/application that interacts with AWS resources through service requests and modifications. AWS users consist of a name, password, and a pair of unique API access keys that grant them permissions according to policy condition criteria established by an administrator.
The difference between an IAM role and a user is that a role can be temporarily or permanently applied to a user to give the user bulk permissions for a task. Unlike a user, a role does not have associated passwords or credentials and can be easily applied to multiple users to grant access to a set of permissions at once.
AWS Groups vs. Roles
An AWS group is simply a collection of multiple users. When changes are made to the permissions of the group, the changes affect each individual user within that group. Policies can be attached directly to groups, so there is no need to assign permissions on an individual basis if they are applicable to the entire group. Moving users between groups can attach appropriate permissions when necessary, instead of editing permissions for a single user.
Fortify Your AWS Security Posture with IAM Roles and Policies
Understanding AWS roles vs. policies is critical to developing an organized cloud computing infrastructure that keeps security, authentication, and authorization at the forefront of all AWS resources and activities.
By delineating the difference between roles and policies in AWS, system administrators and key stakeholders can better organize their system hierarchies that grant the right permissions to the right users. Policy permissions across multiple users automate the process of group configurations and enable scalable teams.
Want to learn more? Sign up for our free, no-BS demo of StrongDM.
About the Author
John Martinez, Technical Evangelist, has had a long 30+ year career in systems engineering and architecture, but has spent the last 13+ years working on the Cloud, and specifically, Cloud Security. He's currently the Technical Evangelist at StrongDM, taking the message of Zero Trust Privileged Access Management (PAM) to the world. As a practitioner, he architected and created cloud automation, DevOps, and security and compliance solutions at Netflix and Adobe. He worked closely with customers at Evident.io, where he was telling the world about how cloud security should be done at conferences, meetups and customer sessions. Before coming to StrongDM, he lead an innovations and solutions team at Palo Alto Networks, working across many of the company's security products.