← Back to Dashboard
1. Model Access and Region Strategy2. Least-Privilege IAM for Bedrock

Least-Privilege IAM for Bedrock

📚 Access, Regions, and IAM11 min65 XP

Identity Boundaries First

Use dedicated IAM roles for Bedrock callers and grant only the actions and model resources required. A leaked credential with bedrock:* on * can silently run up enormous token bills or exfiltrate data through model calls - least privilege is your first cost control and your first security control.

A Production-Shaped Policy

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "InvokeApprovedModelsOnly",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": [
        "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-lite-v1:0",
        "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-pro-v1:0"
      ]
    }
  ]
}

Note what this policy does not include: no bedrock:CreateGuardrail, no customization jobs, no ListFoundationModels. The application role invokes exactly two pinned models and nothing else. Platform/admin roles get the control-plane actions separately.

Common IAM Mistakes with Bedrock

MistakeRiskFix
"Resource": "*" on invoke actionsAny newly enabled model becomes instantly callablePin foundation-model ARNs per environment
One shared role for app + adminApp compromise grants policy/config mutationSeparate runtime and management roles
Long-lived access keys in codeKey leakage = unlimited token spendUse role assumption (IRSA, instance profiles, Lambda execution roles)
No CloudTrail review for bedrock eventsSilent misuse goes unnoticedAlert on anomalous InvokeModel volume and denied calls

Defense in Depth

Combine IAM with application-side allowlists so business logic cannot invoke unapproved models even if policy broadens later. IAM answers "what is this principal allowed to call?"; your config answers "what has this product approved?". Both should agree, and either alone should be enough to block a mistake.

Pro tip: for organisation-wide enforcement, add a Service Control Policy (SCP) that denies bedrock:InvokeModel on any model ARN outside your approved catalogue. Individual account admins then cannot accidentally widen access.
🧪 Knowledge Check
Press 1-4 to select1 of 4
What is the best IAM baseline for Bedrock workloads?
AdministratorAccess everywhere
Least privilege scoped to needed Bedrock actions and resources
No IAM, app only
Root user keys