Skip to main content

How to Find AWS EC2 IAM instance roles not used for AWS resource access from instances


AWS access from within AWS instances can be done by either encoding AWS keys into AWS API calls or by assigning the instance to a role which has an appropriate permissions policy for the required access. AWS IAM roles reduce the risks associated with sharing and rotating credentials that can be used outside of AWS itself. If credentials are compromised, they can be used from outside of the AWS account.


This security check is part of the CIS Amazon Web Services Benchmarks and is rated severity medium.


This guide assumes that you have already installed and configured Resoto to collect your AWS cloud resources.


  1. Execute the following search command in Resoto Shell or Resoto UI:

    > search is(aws_ec2_instance) and instance_iam_instance_profile=null
    ​kind=aws_ec2_instance, ..., region=resoto-poweruser
    ​kind=aws_ec2_instance, ..., account=poweruser-team
  2. Pipe the search command into the dump command:

    > search is(aws_ec2_instance) and instance_iam_instance_profile=null | dump
    ​ id: /aws/ec2/123
    ​ name: some-name
    ​ ctime: '2022-12-05T22:53:14Z'
    ​ kind: aws_ec2_instance
    ​ age: 2mo28d

    The command output will list the details of all non-compliant aws_ec2_instance resources.

  3. Fix detected issues by following the remediation steps:

    Create an IAM instance role and attach it to the corresponding EC2 instance.


    Please refer to the AWS EC2 documentation for details.

Further Reading