Articles on: Integrations

AWS IAM User and Permissions Setup

In order to facilitate a connection to your AWS environment, we require the use of an IAM user with read-only permissions. This guide has been designed to walk you through that process.

Go to the IAM user you plan to use for the connection

A screenshot of an example IAM user

Click add permissions, then ‘add permissions again’

A screenshot of the add permissions area

Click ‘Attach policies directly’

Change the ‘Filter by Type’ to ‘AWS managed – job function’

Search for ‘Read’ and tick ‘ReadOnlyAccess’

A screenshot of the add permissions area for ReadOnlyAccess

Search for ‘Security’ and tick ‘SecurityAudit’

A screenshot of the add permissions area for SecurityAudit

Click ‘Next’

A screenshot of the review screen

Confirm you have selected the correct permissions, then click ‘Add permissions’.

Back in the user screen, click ‘Add permissions’, then ‘Create inline policy’.

A screenshot of the menu area where an inline policy can be created

A policy editor will open, click the ‘JSON’ button

Delete the contents of the editor, and paste in the below (this must be exact, otherwise the permissions will not be applied correctly)

{

  "Version": "2012-10-17",

  "Statement": [

    {

      "Action": [

        "account:Get*",

        "appstream:Describe*",

        "appstream:List*",

        "backup:List*",

        "backup:Get*",

        "bedrock:List*",

        "bedrock:Get*",

        "cloudtrail:GetInsightSelectors",

        "codeartifact:List*",

        "codebuild:BatchGet*",

        "codebuild:ListReportGroups",

        "cognito-idp:GetUserPoolMfaConfig",

        "dlm:Get*",

        "drs:Describe*",

        "ds:Get*",

        "ds:Describe*",

        "ds:List*",

        "dynamodb:GetResourcePolicy",

        "ec2:GetEbsEncryptionByDefault",

        "ec2:GetSnapshotBlockPublicAccessState",

        "ec2:GetInstanceMetadataDefaults",

        "ecr:Describe*",

        "ecr:GetRegistryScanningConfiguration",

        "elasticfilesystem:DescribeBackupPolicy",

        "glue:GetConnections",

        "glue:GetSecurityConfiguration*",

        "glue:SearchTables",

        "glue:GetMLTransforms",

        "lambda:GetFunction*",

        "logs:FilterLogEvents",

        "lightsail:GetRelationalDatabases",

        "macie2:GetMacieSession",

        "macie2:GetAutomatedDiscoveryConfiguration",

        "s3:GetAccountPublicAccessBlock",

        "shield:DescribeProtection",

        "shield:GetSubscriptionState",

        "securityhub:BatchImportFindings",

        "securityhub:GetFindings",

        "servicecatalog:Describe*",

        "servicecatalog:List*",

        "ssm:GetDocument",

        "ssm-incidents:List*",

        "states:ListTagsForResource",

        "support:Describe*",

        "tag:GetTagKeys",

        "wellarchitected:List*"

      ],

      "Resource": "*",

      "Effect": "Allow",

      "Sid": "AllowMoreReadOnly"

    },

    {

      "Effect": "Allow",

      "Action": [

        "apigateway:GET"

      ],

      "Resource": [

        "arn:*:apigateway:*::/restapis/*",

        "arn:*:apigateway:*::/apis/*"

      ],

      "Sid": "AllowAPIGatewayReadOnly"

    }

  ]

}


Click ‘Next’

Assign a name to the policy – we recommend making it recognisable for administrators so it is not accidentally deleted

A screenshot of the review screen after adding the custom policy

Click ‘Create policy’

Your IAM user should now look like this:

A screenshot of the IAM user with the correct permissions assigned

Updated on: 10/03/2025

Was this article helpful?

Share your feedback

Cancel

Thank you!