AI Security Maturity Model·AWS v1.0.0

Drag to explore · pinch to zoom

Foundational Identity and Access ManagementDefense-in-depth layer: Identity & Data Capability 4 · ToolsUse case: AI that acts 👤 CustomerAWS Shared Responsibility Model: who implements and operates this control. Customer = you own it; AWS = AWS operates it and you inherit it; Shared = both have obligations.

c4.1 Scope tool roles with least privilege and permission boundaries

Grant each tool integration only the permissions it needs, and use permission boundaries so combining tools cannot escalate privilege.

Foundational
Enhanced
Advanced
Effort: Medium Impact: High GenAI scopesFrom the AWS Generative AI Security Scoping Matrix.: 3 · Pre-trained models; 4 · Fine-tuned models Agentic security dimensionsFrom the AWS Agentic AI Security Scoping Matrix.: Identity, Operational boundaries

Implementation guidance

How to implement on AWS

Create custom service roles per tool integration granting only the specific tools and AWS services required. Apply IAM permission boundaries to cap the maximum privilege any tool chain can reach. Require scoped identity per task rather than default broad roles.

Each tool is a new privilege the agent gains

When an agent can call tools, each tool integration is a role with permissions. The risk is twofold: an individual tool role that is too broad, and — more subtly — privilege combination, where an agent chaining several tools achieves something no single tool was meant to allow. Least-privilege per tool handles the first; permission boundaries handle the second by capping what any tool role can ever do, regardless of the policies attached to it.

Scope each tool role tightly

Give every tool its own role with only the actions and resources that tool needs — a "read customer record" tool should read one DynamoDB table, not hold dynamodb:*. This is the same least-privilege discipline as the model-invocation role, applied per tool.

Cap the ceiling with a permission boundary

A permission boundary is a managed policy attached to a role that sets its maximum permissions. The role's effective permissions become the intersection of its identity policy AND the boundary — so even if a tool's policy is later widened (or an attacker tries to attach a broader one), it can never exceed the boundary:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ToolMaxPermissions",
      "Effect": "Allow",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:Query",
        "s3:GetObject"
      ],
      "Resource": "*"
    },
    {
      "Sid": "NeverTouchIdentityOrSecurity",
      "Effect": "Deny",
      "Action": [
        "iam:*",
        "kms:ScheduleKeyDeletion",
        "organizations:*"
      ],
      "Resource": "*"
    }
  ]
}

Attach it when you create the tool role:

aws iam create-role \
  --role-name agent-tool-read-customer \
  --assume-role-policy-document file://trust.json \
  --permissions-boundary arn:aws:iam::111122223333:policy/AgentToolBoundary

Make the boundary mandatory for tool roles

The boundary is only effective if it is always attached. Enforce it with an SCP or IAM condition (iam:PermissionsBoundary) so any role created for a tool must carry the boundary — otherwise a developer can create an unbounded tool role by omitting it. This is how you stop privilege combination across a growing set of tools.

Naming note: the boundary grants nothing on its own — you still need each tool's identity policy. The Deny block is the real value: actions no tool should ever perform (touch IAM, delete keys, manage the org).

Acceptance criteria

Each tool has a dedicated least-privilege role; permission boundaries cap tool-chain privilege; no shared broad role is reused across tools.

Practical implementation

How this control is implemented in each reference architecture:

Each tool integration in the Generative AI account gets its own scoped role, and an OU/account permission boundary caps what any tool chain can ever reach.

  1. Create a dedicated service role per tool integration granting only the specific tools and AWS services that tool needs, in the Generative AI account.
    Generative AI account IAM Bedrock AgentCore
  2. Attach an IAM permission boundary to cap the maximum privilege any tool chain can reach, so combining tools cannot escalate.
    Generative AI account IAM
  3. Require scoped, per-task identity for tool execution rather than a default broad role, and keep tool-admin permissions with operators.
    Generative AI account IAM Bedrock AgentCore

How to validate: Each tool has a dedicated least-privilege role; permission boundaries cap tool-chain privilege; combining two tools cannot reach a resource neither is allowed individually.

Avoid: One shared 'agent role' that every tool assumes. Excessive agency means a single prompt-injection can drive any tool; scope per tool and bound the chain.

Generative AI OU (multi-account) →

Per-tool least-privilege roles plus permission boundaries in the account keep any single tool — or a chain of them — from acting beyond its purpose.

  1. Create a dedicated role per tool integration scoped to only the tools and services that tool requires.
    Generative AI tier (IAM role) IAM Bedrock AgentCore
  2. Apply IAM permission boundaries so a tool chain cannot escalate beyond the intended maximum.
    Generative AI tier (IAM role) IAM
  3. Use scoped per-task identity for tool execution instead of a broad default role.
    Application tier (IAM role) IAM

How to validate: Each tool has its own least-privilege role; permission boundaries cap the chain; no shared broad role is reused across tools.

Avoid: Giving the tool layer the app's full role. Scope each tool so excessive agency and privilege escalation are structurally prevented.

Single account (entry point) →

Threats addressed

  • Excessive agency: a tool able to act beyond its intended scope.
  • Privilege escalation through unintended tool combinations.

AWS services

AWS IAM Amazon Bedrock AgentCore

Pricing

No additional charge

IAM roles, policies, and permission boundaries are free. There is no cost to this control; it is purely a design and governance discipline. See Permissions boundaries for IAM entities.

Framework mappings

OWASP GenAI/LLM Top 10 (2026)

  • LLM03 Excessive Agency
  • LLM06 Unbounded Consumption

NIST AI Risk Management Framework (AI 100-1)

  • GOVERN.1 Policies, processes, procedures and accountability structures
  • MANAGE.1 AI risks are prioritized, responded to and managed

AWS Well-Architected Generative AI Lens (Security)

  • GENSEC05-BP01 Implement least privilege and permission boundaries for agentic workflows

OWASP GenAI Top 10 for Agentic Applications (2025)

  • ASI03 Identity and Privilege Abuse
  • ASI02 Tool Misuse and Exploitation

Learning resources

References

  • AWS SRA for AI — Capability 4, Identity and access management