Security
The whole model, in plain language, with the actual policy JSON. Show this page to whoever guards your AWS account.
How access works
You create an IAM role called FramzCostAuditReadOnly in your account, using our CloudFormation template or your own Terraform. Its trust policy allows only our auditor account to assume it, and only when presenting your unique ExternalId, which is the standard defence against confused-deputy attacks. Sessions use temporary STS credentials capped at an hour. We never ask for access keys and there is no password to hand over.
What the role cannot do
- Read S3 object contents. It sees bucket names, sizes and lifecycle settings
- Read database contents. It sees instance metadata and utilisation metrics
- Read Secrets Manager values or KMS key material. It sees counts and metadata
- Read CloudWatch log contents. It sees log group names, sizes and retention
- Create, modify, stop or delete anything at all
- Reach your account once you have deleted the role
The exact permissions
The role carries the AWS managed policy ViewOnlyAccess. We chose that over ReadOnlyAccess on purpose, because ViewOnlyAccess cannot read S3 object contents. On top of it sits this inline policy, covering the cost and lifecycle APIs that ViewOnlyAccess misses:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CostAndBilling",
"Effect": "Allow",
"Action": [
"ce:Get*", "ce:Describe*", "ce:List*",
"cur:Describe*",
"budgets:View*", "budgets:Describe*",
"account:GetAccountInformation",
"billing:Get*",
"pricing:Get*", "pricing:Describe*"
],
"Resource": "*"
},
{
"Sid": "OptimizationServices",
"Effect": "Allow",
"Action": [
"compute-optimizer:Get*", "compute-optimizer:Describe*",
"trustedadvisor:Describe*", "trustedadvisor:List*",
"support:DescribeTrustedAdvisor*",
"servicequotas:Get*", "servicequotas:List*"
],
"Resource": "*"
},
{
"Sid": "MetricsAndLogsMetadata",
"Effect": "Allow",
"Action": [
"cloudwatch:GetMetricData",
"cloudwatch:GetMetricStatistics",
"cloudwatch:ListMetrics",
"logs:DescribeLogGroups",
"logs:DescribeSubscriptionFilters"
],
"Resource": "*"
},
{
"Sid": "LifecycleAndConfigDetails",
"Effect": "Allow",
"Action": [
"s3:GetLifecycleConfiguration",
"s3:GetBucketVersioning",
"s3:GetIntelligentTieringConfiguration",
"s3:GetBucketLocation",
"s3:ListAllMyBuckets",
"dlm:Get*",
"backup:List*", "backup:Describe*",
"organizations:Describe*", "organizations:List*"
],
"Resource": "*"
}
]
}And the trust policy:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::<our-auditor-account>:root" },
"Action": "sts:AssumeRole",
"Condition": { "StringEquals": { "sts:ExternalId": "<unique-per-customer>" } }
}]
}Revocation
Delete the FramzCostAudit CloudFormation stack, or the role itself, and access ends that second. You do not need to email us or raise a ticket.
Data handling
- •Findings and metadata are stored encrypted at rest; sensitive connection values (your ExternalId) carry an extra AES-256-GCM application layer.
- •Findings are deleted automatically 90 days after your audit closes, or 90 days after the scan if you never buy the audit.
- •Your scan results are shown to you and to the auditor. No third parties, no resale, no training datasets.
Who you are dealing with
We are aware that a website asking about your AWS account, with no name attached to it, looks exactly like the thing your security training told you to close. So here are the details you would need to check us out, and the two pages that let you judge the work before you talk to anyone.
The company
- Registered name
- Framz Limited
- Incorporated
- Registered in England and Wales, 2024
- Registered office
- 1 Glamorgan Close, Mitcham, CR4 1XG, United Kingdom
How to reach us
- hello@framz.io
- Phone
- +44 7774 856956
- linkedin.com/company/framz-io
- Parent site
- framz.io
Judge the work first
Neither of these asks you for anything.
- A complete scan of our own account
Every finding, including the total that fell short of our own guarantee.
- The exact IAM policy we ask for
Published in full, so your engineers can reject it on the merits.
We have no client testimonials on this site because we have not finished a paid audit yet. When that changes we will put the names here with permission. Until then the scan of our own account is the only evidence we have, so it is the evidence we show.