Integration · AWS

AWS compliance integration:
15 read-only checks, 16 read actions.

Connect an AWS account with keys that can only read. TryTrustable checks IAM, S3 Block Public Access, CloudTrail, RDS, GuardDuty and Security Hub, and files each passing result as evidence.

SigV4-signedRead-onlyAll enabled regionsSOC 2 CC6 / CC7
01

What does the TryTrustable AWS integration check?

The AWS integration runs 15 read-only checks against one AWS account: root-user MFA and access keys, MFA for every IAM user with console access, the password policy, access-key age, account-level S3 Block Public Access, a logging multi-region CloudTrail trail with log file validation, RDS encryption, backups, deletion protection, Multi-AZ and public access, and GuardDuty and Security Hub in every enabled region. It calls 16 read actions and nothing else.

These are the account-level questions an auditor asks first: who can act as root, whether people sign in with MFA, whether activity is recorded, whether databases are encrypted, backed up and private, and whether threat detection is switched on everywhere. Every request is SigV4-signed and calls a Get, List or Describe action; the connector has no AWS SDK and no write path.

CheckWhat it readsHow it decidesEvidence filed against
Root account has MFA enablediam:GetAccountSummary, AccountMFAEnabledPass if 1, fail otherwise.SOC 2 CC6.1
ISO/IEC 27001 A.8.5
DPDP Act §8(5)
No root-account access keysiam:GetAccountSummary, AccountAccessKeysPresentPass if 0, fail otherwise.SOC 2 CC6.3
ISO/IEC 27001 A.8.2
IAM password policy is strongiam:GetAccountPasswordPolicyPass if MinimumPasswordLength is 14 or more. Fail if it is shorter or no account password policy exists.SOC 2 CC6.1
ISO/IEC 27001 A.5.17
Every IAM user with console access has MFAiam:ListUsers, then per user iam:GetLoginProfile and iam:ListMFADevicesA user with no console password is not applicable. Pass if every user with one has at least one MFA device; each user without one is named.SOC 2 CC6.1
ISO/IEC 27001 A.8.5
DPDP Act §8(5)
IAM access keys are rotated within policyiam:ListAccessKeys per user, the creation date of each active keyFail if any active key is older than 90 days (the default). Users with no active key are not applicable.SOC 2 CC6.1
S3 Block Public Access is on for the whole accounts3:GetAccountPublicAccessBlock (S3 Control, account level)Pass if all four settings are true: BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy, RestrictPublicBuckets. Fail if any is off or no configuration exists.SOC 2 CC6.7
ISO/IEC 27001 A.8.12
A multi-region CloudTrail trail is loggingcloudtrail:DescribeTrails, then cloudtrail:GetTrailStatus in each multi-region trail's home regionPass if at least one multi-region trail has IsLogging true. Fail if there is no multi-region trail or none is logging.SOC 2 CC7.2
ISO/IEC 27001 A.8.15
DPDP Act §8(5)
CloudTrail log file validation is enabledcloudtrail:DescribeTrails, LogFileValidationEnabledPass if every multi-region trail writes digest files. Fail if one does not, or if there is no multi-region trail.SOC 2 CC7.2
ISO/IEC 27001 A.8.15
RDS storage is encryptedrds:DescribeDBInstances and rds:DescribeDBClusters in every evaluated regionPass if StorageEncrypted is true on every cluster and every instance outside a cluster.SOC 2 CC6.6
ISO/IEC 27001 A.8.24
DPDP Act §8(5)
RDS automated backups are retainedThe same RDS calls, BackupRetentionPeriodPass if backups are kept for at least 7 days on every cluster and primary instance. Read replicas are skipped; they take backups from their source.SOC 2 A1.2
ISO/IEC 27001 A.8.13
RDS deletion protection is enabledThe same RDS calls, DeletionProtectionPass if it is on for every cluster and primary instance.SOC 2 A1.2
ISO/IEC 27001 A.5.33
RDS databases are Multi-AZThe same RDS calls, MultiAZPass if every cluster and primary instance is Multi-AZ. Marked informational, because single-AZ can be an accepted cost decision.SOC 2 A1.2
ISO/IEC 27001 A.8.14
RDS instances are not publicly accessiblerds:DescribeDBInstances, PubliclyAccessiblePass if no instance, including cluster members, has a public endpoint.SOC 2 CC6.6
ISO/IEC 27001 A.8.20
ISO/IEC 27001 A.8.22
GuardDuty is enabled in every regionguardduty:ListDetectors and guardduty:GetDetector in every evaluated regionFail for a region with no detector or one whose status is not ENABLED.SOC 2 CC7.2
ISO/IEC 27001 A.8.16
Security Hub is enabled in every regionsecurityhub:DescribeHub in every evaluated regionFail for a region where AWS answers that the account is not subscribed. An access-denied answer is could not verify, not a fail.SOC 2 CC7.1
ISO/IEC 27001 A.8.8

A check over several resources passes only if every resource passes. One that could not be read makes the whole check could not verify, not a pass on the rest.

Each check returns one of four results: pass, fail, not applicable (nothing of that kind exists, or a plan limit makes the setting unavailable) or could not verify (the call was refused or failed). A check over several resources shows a value such as 6/8 passing and names every resource it looked at. Nothing is simulated, and a check that could not look is never shown as a pass.

Only passing checks become evidence: one evidence item for each reference in the last column, so a single pass can evidence SOC 2, ISO/IEC 27001 and the DPDP Act at once. Each item expires after 90 days and every sync renews it, so evidence from a connection that has stopped syncing stops counting. A failing result is shown on the connected account with the resources that caused it, and is not filed as evidence.

02

Which compliance controls does AWS evidence?

Each check belongs to a shared control in the TryTrustable control library, and is filed only under requirements the library maps to that control. The same control answers the requirements below in other frameworks; the references are read from the library. The cross-framework mapping page explains how one result reaches several frameworks.

Shared controlChecks that speak to itSOC 2ISO/IEC 27001:2022DPDP ActISO/IEC 42001
Multi-factor authentication enforcedCTL-MFARoot account has MFA enabled; IAM password policy is strong; Every IAM user with console access has MFACC6.1A.5.17, A.6.7, A.8.2, A.8.5§8(5)None
Periodic logical access reviewCTL-ACCESS-REVIEWNo root-account access keysCC1.3, CC3.3, CC4.1, CC6.2, CC6.3A.5.3, A.5.15, A.5.18, A.6.5, A.8.2, A.8.3, A.8.4, A.8.18, A.8.34§8(5)None
Cryptographic key managementCTL-KEY-MGMTIAM access keys are rotated within policyCC6.1NoneNoneNone
Data loss preventionCTL-DLPS3 Block Public Access is on for the whole accountCC6.7A.8.12NoneNone
Centralised, tamper-evident loggingCTL-LOGGINGA multi-region CloudTrail trail is logging; CloudTrail log file validation is enabled; GuardDuty is enabled in every regionCC2.1, CC4.1, CC7.2, CC7.3, P6.2, P6.3, PI1.1, PI1.3, PI1.4A.5.25, A.5.28, A.7.4, A.8.15, A.8.16, A.8.17§8(5)A.6.2.6, A.6.2.8
Encryption of data at restCTL-ENCRYPT-RESTRDS storage is encryptedCC6.6A.5.34, A.7.10, A.8.11, A.8.24§8(5)None
Backup and restore testingCTL-BACKUPRDS automated backups are retained; RDS deletion protection is enabledA1.1, A1.2, CC7.5, PI1.5A.5.30, A.5.33, A.8.13NoneNone
Business continuity and disaster recoveryCTL-BCDRRDS databases are Multi-AZA1.2, A1.3, CC9.1A.5.29, A.5.30, A.7.11, A.8.6, A.8.14NoneNone
Network segmentationCTL-NET-SEGRDS instances are not publicly accessibleCC6.6A.8.20, A.8.21, A.8.22, A.8.31NoneNone
Vulnerability scanning and remediationCTL-VULN-SCANSecurity Hub is enabled in every regionCC3.2, CC7.1A.5.7, A.8.8NoneNone

Requirement references are read from the TryTrustable control library. A dash means the library maps no requirement in that framework to this control.

03

What IAM permissions does the AWS integration need?

Exactly the 16 read actions the checks call: sts:GetCallerIdentity, ec2:DescribeRegions, iam:GetAccountSummary, iam:GetAccountPasswordPolicy, iam:ListUsers, iam:ListAccessKeys, iam:ListMFADevices, iam:GetLoginProfile, s3:GetAccountPublicAccessBlock, cloudtrail:DescribeTrails, cloudtrail:GetTrailStatus, rds:DescribeDBInstances, rds:DescribeDBClusters, guardduty:ListDetectors, guardduty:GetDetector, securityhub:DescribeHub. sts:GetCallerIdentity needs no permission and is listed so the policy documents every request. None of the actions can change anything in the account.

The policy for a dedicated IAM user, exactly as the product shows it:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "TryTrustableReadOnlyAudit",
      "Effect": "Allow",
      "Action": [
        "sts:GetCallerIdentity",
        "ec2:DescribeRegions",
        "iam:GetAccountSummary",
        "iam:GetAccountPasswordPolicy",
        "iam:ListUsers",
        "iam:ListAccessKeys",
        "iam:ListMFADevices",
        "iam:GetLoginProfile",
        "s3:GetAccountPublicAccessBlock",
        "cloudtrail:DescribeTrails",
        "cloudtrail:GetTrailStatus",
        "rds:DescribeDBInstances",
        "rds:DescribeDBClusters",
        "guardduty:ListDetectors",
        "guardduty:GetDetector",
        "securityhub:DescribeHub"
      ],
      "Resource": "*"
    }
  ]
}
04

How to connect AWS

  1. In the AWS account, create an IAM user for TryTrustable and attach the policy above
  2. Create an access key for that user
  3. In TryTrustable, open Integrations, choose Amazon Web Services and paste the Access Key ID and Secret Access Key. A session token is optional and only useful for a one-off check
  4. The first sync runs immediately. Passing checks land in the evidence ledger; the platform re-syncs every six hours by default

If the keys are wrong, the connection reports itself unverified and produces no checks. If a single permission is missing, only the checks that need it report could not verify, naming the action to grant. It never shows a passing result it did not read.

05

What the AWS integration does not do

It does not inventory resources, read bucket policies, inspect security groups or check KMS key rotation. It makes no changes in the account. Code-level evidence comes from the scanners that run in your pipeline through the SDK and CI gate. Our own security posture and certification status are on the security page.

Questions

The things people ask us

What IAM permissions does the AWS integration need?

Exactly the 16 read actions the checks call: sts:GetCallerIdentity, ec2:DescribeRegions, iam:GetAccountSummary, iam:GetAccountPasswordPolicy, iam:ListUsers, iam:ListAccessKeys, iam:ListMFADevices, iam:GetLoginProfile, s3:GetAccountPublicAccessBlock, cloudtrail:DescribeTrails, cloudtrail:GetTrailStatus, rds:DescribeDBInstances, rds:DescribeDBClusters, guardduty:ListDetectors, guardduty:GetDetector, securityhub:DescribeHub. sts:GetCallerIdentity needs no permission and is listed so the policy documents every request. None of the actions can change anything in the account.

Which regions does it check?

IAM, S3 Block Public Access and CloudTrail are read once for the account. RDS, GuardDuty and Security Hub are read in every region enabled in the account, found with ec2:DescribeRegions. If that call is refused, the regional checks report could not verify rather than checking a guessed list. Requests go to the standard AWS partition; AWS GovCloud (US) and the China regions use separate endpoints and are not supported.

Does TryTrustable check bucket policies, security groups or KMS?

No. The S3 check reads the account-level Block Public Access setting, not individual bucket policies or ACLs. Security groups, EC2, KMS key rotation and IAM role policies are not checked. Those controls are evidenced other ways today.

Can I use temporary credentials or an assumed role?

You can paste a session token with temporary credentials, and the first sync will run. Scheduled re-syncs stop producing results once those credentials expire, because the connector does not assume a role or refresh them. For continuous checks, use a dedicated IAM user limited to the read actions above.

Can I connect more than one AWS account?

Yes. Each connection is one account, identified by the account the keys belong to, and you can add as many connections as you have accounts. There is no AWS Organizations-wide connection that discovers member accounts on its own.

How are the AWS keys stored?

The access key and secret are encrypted at rest with AES-256-GCM before they are saved, are never written to logs, and are decrypted only to sign the next sync. Deleting the connection deletes the stored credential. Keys limited to these read actions cannot change anything in the account if they leak.

Book a walkthrough

See an AWS account checked live.

Thirty minutes. We connect read-only keys to a test account and show the results landing as evidence against SOC 2, ISO 27001 and the DPDP Act.