What Counts as a Data Plane Action on AWS - IsDataPlane in the Service Reference, CloudTrail Data Events, and What an SCP or RCP Can Scope
First Published:
Last Updated:
ServiceName field, and the IsDataPlane property, which indicates whether an action is a data plane operation. This article outlines what AWS considers a "data plane" across various documentation sources, and where they do not line up.This article examines five categories of documentation: the
IsDataPlane property in Service Reference, AWS CloudTrail (referred to as CloudTrail) data and management events, the AWS Fault Isolation Boundaries and AWS Well-Architected Framework (specifically the control plane and data plane sections), the scope of AWS Organizations service control policies (SCPs) and resource control policies (RCPs), and IAM Access Analyzer policy generation and IAM last accessed information. For each example service, it presents the corresponding JSON values (with retrieval date) alongside relevant excerpts from the documentation, demonstrating what might be missed if relying on a single definition when automating audit target selection, policy generation, and guardrail design.This article does not cover CloudTrail configuration procedures, the overall design of guardrails, a comprehensive list of all services, or pricing information. It also does not attempt to determine which definition is correct or which definition should be used. It does not say that AWS's classification is inaccurate. The documentation was verified as of October 27, 2026, and the Service Reference JSON was retrieved at 10:29 AM UTC on the same day. The records presented in Section 10 of this article are based on requests sent from the US East (N. Virginia) Region specifically for the purpose of this article.
Related articles on this site:
- Where the Logs Come From on AWS - Identity and the Control Plane, What Is On by Default, and What Is Not Recorded at All
- Threat Detection for AI Workloads on AWS - What GuardDuty AI Protection Detects, What It Does Not, and How to Read a Finding
- AWS Organization Guardrails - Service Control Policies, Resource Control Policies, and Data Perimeter Design
- IAM Policy Evaluation Logic Step-by-Step - Explicit Deny, RCP, SCP, Resource Policy, Identity Policy, Permission Boundary, and Session Policy
- Amazon Bedrock Inference Endpoints and API Keys - What bedrock-runtime and bedrock-mantle Each Accept, Which IAM Action Each Call Checks, and What CloudTrail Records
- Cell-Based Architecture and Shuffle Sharding on AWS - Blast Radius Reduction Patterns for Large-Scale Workloads
- AWS History and Timeline regarding AWS CloudTrail - Overview, Functions, Features, Summary of Updates, and Introduction
- Moving a Claude Integration to API Version 2026-10-21 on AWS - Requests That Now Return 400, the Authorization Header, and Amazon Bedrock
- Changing the Identity Source in IAM Identity Center Is Not Symmetric - What Survives in Each Direction, and What the Revision Field Guards
Table of Contents
- 1. Scope and Assumptions
- 2. How to Read the Tables
- 3. IsDataPlane in the Service Reference
- 4. CloudTrail Data Events and Management Events
- 5. Control Planes and Data Planes in the Whitepaper and Well-Architected
- 6. What an SCP or RCP Can Scope
- 7. IAM Access Analyzer Policy Generation and Last Accessed Information
- 8. Service-by-Service Comparison
- 9. Which Definition Automation Uses and What It Misses
- 10. What This Configuration Recorded
- 11. Failure Modes
- 12. Frequently Asked Questions about Data Plane Actions on AWS
- 13. Summary
- 14. References
1. Scope and Assumptions
This section will first define the intended audience, the scope of this article, the source materials consulted, and how to distinguish between different entities that may share the same name. To begin, the following seven points will be outlined.- The term "data plane" varies by source. The
IsDataPlanevalue in the Service Reference is derived from the CloudTrail event category associated with the operation that authorizes the action. The resource type and any advanced event selectors added by the user determine CloudTrail data events. The whitepaper and the Well-Architected Framework differentiate between management APIs (CRUDL) and the primary function of a service. The term "data plane" was not found on the RCP page; theResource typecolumn in the Service Authorization Reference defines the scope of RCP. IsDataPlanecan take three values:true,false, and a state where the property is absent. The Service Reference page describes actions without the property asisn't classified yet. As of October 27, 2026, the JSON data examined showed that all 20 actions for Amazon SQS (SQS) were not classified, while 57 out of 58 actions for AWS KMS (KMS) were classified asfalse. Not classified andfalserepresent distinct values.- CloudTrail data events are also known as
data plane operations. By default, they are not recorded. SQS has a row forAWS::SQS::Queuein the CloudTrail data events table, but its actions are not classified in the Service Reference. No statement on the reason was found in the scope of this article. - For Amazon Bedrock (Bedrock), the
InvokeModelaction has anIsDataPlanevalue oftrue. However, the Amazon Bedrock User Guide's CloudTrail page states thatInvokeModeloperations are recorded as management events. The same page also states that a trail that also records Bedrock data events receives a data event copy of each streaming call. In the configuration used in Section 10, the trail that selected Bedrock data events also included data event records for non-streamingInvokeModelandConversecalls. It cannot be determined from the documentation or from this record which category led to thetruevalue. - For KMS, the
Encrypt,Decrypt, andGenerateDataKeyactions have anIsDataPlanevalue offalseand are recorded as management events (Read) in CloudTrail. For Amazon S3 (S3), theListBucketaction has anIsDataPlanevalue oftrueand anIsListvalue oftrue. Both are examples where the classification depends on the definition (on the whitepaper side, this is this article's reading; Section 8.5). - RCP applies to actions for 62 services (as of October 27, 2026), listed on the RCP page, for the resources specified in the
Resource typecolumn. AWS Lambda, Amazon SNS, Amazon Kinesis Data Streams, and Bedrock are not included in this list. - IAM Access Analyzer policy generation does not include the action-level activity of data events in the generated policies. In the
SupportedByfield of the JSON data, out of 483 actions whereIsDataPlaneistrue, 479 werefalsefor both policy generation and last accessed information.
1.1 Intended Audience
The intended audience for this article is security and platform professionals who are automating the generation of security guardrails, audit logs, and least privilege policies within their organizations. Specifically, it targets readers who hold one or more of the following six assumptions:- Data plane actions refer to CloudTrail data events.
- If
IsDataPlaneisfalse, it indicates a management operation. - SQS has zero classified actions, so it has no data plane operations.
- RCP is a mechanism for scoping data plane actions.
- Policies generated by IAM Access Analyzer include operations that access data.
- KMS
Decryptis a data plane action.
These six assumptions either conflict with the statements in the sources, lack supporting statements in the sources, or hold under one definition and not under another (
differs by definition). Sections 3 through 9 will, for each source, present the relevant passages.1.2 Scope
This article covers the following: theIsDataPlane property of the Service Reference, the global condition keys JSON, ServiceName, definitions for CloudTrail data and management events, definitions in the whitepaper and the Well-Architected Framework, the scope of applicability for SCP and RCP, and IAM Access Analyzer policy generation and IAM last accessed information. The service tables will be limited to nine example services: S3, Amazon DynamoDB, AWS Lambda, Amazon SNS, SQS, KMS, AWS Secrets Manager, Amazon Kinesis Data Streams, and Bedrock. It does not cover all 457 services.The following topics are explicitly excluded:
- A comprehensive list of what is logged by default (the previously published Where the Logs Come From on AWS covers it).
- The overall design of guardrails and the data perimeter (the previously published AWS Organization Guardrails covers it).
- The order in which policies are evaluated (the previously published IAM Policy Evaluation Logic Step-by-Step covers it).
- What Amazon GuardDuty detects (the previously published Threat Detection for AI Workloads on AWS covers it).
- A complete listing of the APIs and IAM actions received by the two Bedrock endpoints (the previously published Amazon Bedrock Inference Endpoints and API Keys covers it).
- How decisions change based on condition keys.
- The configuration of CloudTrail organizational trails, pricing, and comparison of services.
1.3 Materials Reviewed and Verification Date
The documents reviewed for this article fall into five categories. All were retrieved on October 27, 2026, except where an item gives another date.- The "Simplified AWS service information for programmatic access" page of the Service Authorization Reference, and the Service Reference JSON files (the service list, the JSON files of all 457 services, and a JSON file for global condition keys). The JSON files were retrieved between 10:29:06 and 10:29:33 (UTC) on October 27, 2026.
- The AWS CloudTrail User Guide (Logging data events, Logging management events, CloudTrail concepts, CloudTrail record contents, Working with AWS CloudTrail Lake), and the AWS CloudTrail API Reference (AdvancedFieldSelector), along with the CloudTrail pages for each service (SQS, Amazon SNS, AWS Lambda, Amazon S3, Amazon DynamoDB, AWS KMS, AWS Secrets Manager, Amazon Kinesis Data Streams, and two pages for Bedrock).
- The AWS Organizations User Guide (SCPs, SCP evaluation, RCPs, RCP evaluation), and documentation on data perimeters (the IAM User Guide page and the whitepaper "Building A Data Perimeter on AWS").
- The "Control planes and data planes" page of the whitepaper AWS Fault Isolation Boundaries, and REL11-BP04 of the Well-Architected Framework.
- The IAM User Guide (IAM Access Analyzer policy generation, Refine permissions in AWS using last accessed information, and IAM Access Analyzer policy generation services and IAM action last accessed information services and actions, the last two obtained on October 28, 2026), and What's New.
The list of services includes a
modified timestamp for each service. The list retrieved on October 27, 2026, showed the earliest timestamp as October 21, 2026, 17:44 (UTC), and the most recent timestamp as October 27, 2026, 04:02 (UTC). The What's New post was made on October 21, 2026, at 18:00 (UTC). The classifications and counts change on a daily basis. All the counts presented in this article are values extracted from the JSON data retrieved on October 27, 2026.1.4 Words That Look Alike, But Mean Different Things
This article contains many names that are spelled similarly but have different meanings. Refer to the following table for clarification.| Name | Where it is used | What it is |
|---|---|---|
IsDataPlane | Service Reference JSON, Actions[].Annotations.Properties | A boolean on an IAM action; absent when the action is not classified |
| Data events | CloudTrail | One of four event types; also known as data plane operations; not logged by default |
| Management events | CloudTrail | Also known as control plane operations; logged by default |
| Network activity events | CloudTrail | Calls made through VPC endpoints; a separate eventCategory value |
| Data plane, control plane | AWS Fault Isolation Boundaries, Well-Architected | The primary function of a service versus the CRUDL administrative APIs |
| Data plane events, control plane events | Headings on the DynamoDB CloudTrail page; the text of the IAM last accessed page | Other names for CloudTrail data events and management events |
| Data perimeter | IAM User Guide, Organizations, whitepaper | Guardrails built from SCPs, RCPs, and VPC endpoint policies |
rds-data, cloudtrail-data | Service prefixes in the Service Reference | Service names that contain "data"; not related to the property |
IsList, IsWrite, IsPermissionManagement, IsTaggingOnly | Service Reference JSON | The other four action properties; not mutually exclusive with IsDataPlane |
| Operation, action | Service Reference glossary | An API that can be called, and the permission that the call authorizes |
The glossary on the Service Reference page distinguishes between
Operation - An API that can be called, usually through an SDK and Action - Permission that is authorized when performing an operation. The eventName in a CloudTrail record is the name of the operation. The IsDataPlane property is associated with actions. In JSON, a single operation may require multiple actions for authorization, and conversely, the same action may be used to authorize multiple operations.2. How to Read the Tables
This section defines the columns in the tables in Sections 3 through 9, as well as how the source of each value is written. The columns are the same as those used in Moving a Claude Integration to API Version 2026-10-21 on AWS, in the same series.2.1 Columns
The contract tables in Sections 3 through 6, in addition to theSetting column, utilize the following seven column names. The Setting column will contain the property, event type, selector field, or policy type name.| Column | What the cell holds |
|---|---|
You Set | What the user can write, and where (a selector on a trail, a policy, or a filter that reads the JSON) |
Allowed Values | The values the source lists, as of 2026-10-27 |
If You Set Nothing | What happens when the user writes nothing |
Source of the Default | Which source states the value in If You Set Nothing |
At the Boundary | What happens at an edge: a property that is absent, an operation logged in another category, a service outside a list, or an AWS managed key |
Where It Shows | Where the result becomes visible: a JSON property, the eventCategory of a record, a policy decision, or a generated policy |
No Statement Found | What the sources in Section 1.3 do not state |
Each contract table is divided into two tables. The first table (What You Write) includes the columns
Setting, You Set, Allowed Values, If You Set Nothing, and Source of the Default. The second table (What Happens) includes the columns Setting, At the Boundary, Where It Shows, and No Statement Found. The order of the rows is consistent across both tables.Table 8-1 in Section 8 has
Defined By in the first column, with the corresponding column repeated for each definition. Tables 8-2 and 8-3 in Section 8 have the service in the first column, with the values for each definition listed horizontally across the row.2.2 How the Source of a Default Is Written
TheSource of the Default column holds one of the following terms:| Label | What it means |
|---|---|
Service reference page | Simplified AWS service information for programmatic access, Service Authorization Reference |
Service reference JSON (retrieved 2026-10-27) | The JSON files retrieved on 2026-10-27 at 10:29 UTC |
CloudTrail data events page | Logging data events, AWS CloudTrail User Guide |
CloudTrail management events page | Logging management events, AWS CloudTrail User Guide |
Bedrock CloudTrail page | Monitor Amazon Bedrock API calls using CloudTrail, Amazon Bedrock User Guide |
Organizations RCP page | Resource control policies (RCPs), AWS Organizations User Guide |
Organizations SCP page | Service control policies (SCPs), AWS Organizations User Guide |
IAM Access Analyzer policy generation page | IAM Access Analyzer policy generation, IAM User Guide |
AdvancedFieldSelector (API Reference) | AdvancedFieldSelector, AWS CloudTrail API Reference |
Fault Isolation Boundaries whitepaper | Control planes and data planes, AWS Fault Isolation Boundaries |
No statement found | No source in Section 1.3 states the default |
2.3 No Statement Found, Not Listed, the Sources Disagree, and Differs by Definition
This article expresses four states using different terminology:- No Statement Found: Despite searching the sources in Section 1.3, no text describing the matter was found. This corresponds to the
No Statement Foundcolumn and the phraseno statement was foundin the body text. This state does not mean that the matter does not exist or cannot be done. - The documentation does not list: The item is not included in the list or table. This is expressed as
the documentation does not listin the body text. - The sources disagree: Two sources provide information that contradicts each other regarding the same matter. In the body text, this is
the sources disagree. This article does not assume that either source is incorrect; instead, it lists the source and date of each. - Differs by definition: The definition of "data plane" varies between sources, resulting in the same action being categorized differently. In the body text, this is
differs by definition. This is not a discrepancy between the sources themselves.
2.4 Values the Documentation States, Values Counted in the JSON, and Values Recorded in This Configuration
This article categorizes the origin of values into three types:- Values from Documentation: Values found in the text, tables, and examples in the AWS documentation. In the body text, this will be presented as
the documentation states. - Values Counted from JSON: Values found by counting the Service Reference JSON retrieved on October 27, 2026, at 10:29 (UTC). In the body text, this will be presented as
the JSON retrieved on October 27, 2026 (10:29 UTC) contains. The values in the JSON may change on later dates. - Values Recorded in This Configuration: Values recorded by CloudTrail as a result of requests sent specifically for this article, in the configuration described in Section 10. In the body text, this will be presented as
recorded in this configuration.
Sections 3 through 9 contain values from the documentation and values counted from the JSON. Where they mention a record from Section 10, they point to Section 10 and say that it is a record. The values presented in Section 10 are based on the specific configuration and the logs recorded on that day, and are not values that the documentation guarantees.
2.5 true, false, and Not Classified
IsDataPlane can take three possible values: two boolean values (true and false), and a third representing the absence of a property. The tables in this article use the terms true, false, and not classified to represent these three states. The term not classified is consistent with the wording isn't classified yet found on the Service Reference page. In the body text, the absence of the property is written as the property is absent.This article does not use the terms
0, none, or false to represent the "not classified" state. The phrases "0 true values," "all not classified," and "all false" describe distinct states. As of October 27, 2026, the JSON data showed that all 20 SQS actions were not classified, 57 KMS actions were false with 1 action not classified, and all 23 AWS Secrets Manager actions were false. All three had zero actions with a value of true.3. IsDataPlane in the Service Reference
This section details the location ofIsDataPlane, describes what the documentation says it derives from, and lists the possible values it can take.3.1 Where the Property Sits
The Service Reference page describes the purpose of providing service reference information in JSON format as:AWS provides service reference information in JSON format to streamline the automation of policy management workflows. There are three entry points:- Service List:
https://servicereference.us-east-1.amazonaws.com/ - Global Condition Key JSON:
https://servicereference.us-east-1.amazonaws.com/v1/global-condition-keys.json - Service-Specific JSON: The value of the
urlfor each element in the list.
In the service-specific JSON,
IsDataPlane is located in the Annotations.Properties of each element in the Actions array. The same location also contains four additional properties: IsList, IsPermissionManagement, IsTaggingOnly, and IsWrite. The Service Reference page provides the following jq example to illustrate how to extract actions where IsDataPlane is true.> curl https://servicereference.us-east-1.amazonaws.com/v1/s3/s3.json | \
jq '.Actions[] | select(.Annotations.Properties.IsDataPlane == true) | .Name'
In this example, the
select(... == true) command will also discard actions with a value of false, as well as actions that do not have the specified property. Section 9.4 explains the implications of this behavior in automation workflows.3.2 What the Definition Says It Is Derived From
The Service Reference page definesIsDataPlane as follows:IsDataPlane – Indicates that the action operates on the data or content held within a resource, rather than creating, configuring, or managing the resource itself. This property is derived from the AWS CloudTrail event categories of the operations that authorize the action.For example, the same page states,
This property is true for the Amazon S3 GetObject action, which reads object content, and false for CreateBucket, which creates and configures the resource (a control-plane operation).The source for deriving this property is not the action itself, but rather the CloudTrail event categories of the operations that authorize it. Regarding the condition under which an action carries the property, the same page states:
Some actions omit this property. An action carries IsDataPlane only when at least one operation that authorizes it has a CloudTrail event category. If the property doesn't exist, then the action isn't classified yet.The documentation states only this condition: an action carries the property only when at least one operation has a CloudTrail event category. No statement was found (across the Service Reference page, the Bedrock CloudTrail page, and What's New) that addresses what happens when an action is authorized by operations that include both data event logging and management event logging—specifically, whether the property is
true or false.3.3 Three Values
The Service Reference page describes five properties, stating,These properties are not mutually exclusive. An action may have multiple properties set to true. It continues, It's also possible for all properties to be false, as seen with Amazon S3's GetBucketPolicy action. Being false for IsDataPlane does not mean that the action involves write operations or permission management. S3's GetBucketPolicy action has all five properties set to false.Five actions from a JSON file retrieved on October 27, 2026, represent the three distinct values.
| Action | IsDataPlane | IsList | IsWrite | Source |
|---|---|---|---|---|
s3:GetObject | true | false | false | Service reference page (example), Service reference JSON (retrieved 2026-10-27) |
s3:ListBucket | true | true | false | Service reference JSON (retrieved 2026-10-27) |
s3:GetBucketPolicy | false | false | false | Service reference page (example), Service reference JSON (retrieved 2026-10-27) |
kms:Decrypt | false | false | true | Service reference JSON (retrieved 2026-10-27) |
sqs:SendMessage | not classified | false | true | Service reference JSON (retrieved 2026-10-27) |
The
sqs:SendMessage action has IsWrite set to true but lacks the IsDataPlane property. While the other four properties are defined, IsDataPlane is the only property missing.3.4 Operations and Actions
The JSON for each service includes, within each element ofOperations, a list of authorized actions under the AuthorizedActions field. The Service Reference page states, This operation to action mapping is not supported for all services. Services that don't yet support this mapping will omit the AuthorizedAction property.As of October 27, 2026, the Bedrock JSON identified five operations that authorize the
bedrock:InvokeModel action: InvokeModel, Converse, InvokeModelWithResponseStream, InvokeModelWithBidirectionalStream, and StartAsyncInvoke. In contrast, only two operations authorized the bedrock:InvokeModelWithResponseStream action: InvokeModelWithResponseStream and ConverseStream. Section 8.4 lists this mapping alongside the text on the Bedrock CloudTrail page.Analyzing the same JSON across all 457 services, 118 services had all their actions not classified. Of those, 103 services did not include any elements in the
Operations field. SQS had 23 elements in the Operations field, and all 20 of its actions were not classified. No statements were found that directly linked the presence or absence of Operations elements with the classification of actions.3.5 Counts as of October 27, 2026
The following Table 3-1 presents the counts in the JSON retrieved at 10:29 (UTC) on October 27, 2026.| Scope | Actions | true | false | not classified |
|---|---|---|---|---|
| All 457 services | 22,321 | 483 | 17,433 | 4,405 |
Services with at least one true action | 61 services | — | — | — |
Services whose actions are all not classified | 118 services | — | — | — |
The What's New post (October 21, 2026) mentions
an IsDataPlane property identifying which actions are data plane operations, but does not provide a count. The numbers in Table 3-1 are the results of a count that this article performed on the JSON. The code used for counting is not included in this article.3.6 ServiceName and the Global Condition Keys File
The What's New post states:The service reference now includes all aws:-prefixed global condition keys in a single machine-readable file, a ServiceName field mapping service identifiers to human-readable names, and an IsDataPlane property identifying which actions are data plane operations.Regarding
ServiceName, the Service Reference page states: The ServiceName field provides a human-readable name for the AWS service, such as S3 for the s3 service. According to the JSON data retrieved on October 27, 2026, the ServiceName for secretsmanager was Secrets Manager, and the ServiceName for bedrock-mantle was Bedrock Mantle.Concerning the JSON for global condition keys, the same page states:
AWS also provides a consolidated list of global condition keys that apply across AWS services. The JSON data retrieved on October 27, 2026, contained 52 entries. The What's New post does not mention this number.3.7 The 24-Hour Note Covers All Metadata
The note on the Service Reference page states:Changes to the service reference information may take up to 24 hours to be reflected in the list of metadata for the service. This note applies to the service reference information as a whole, and does not specifically refer to the time it takes for the IsDataPlane classification to be updated. No statement was found on when the classification might be added.3.8 Contract Tables
The following two tables outline five items in the Service Reference, detailing what the user writes and what happens.What You Write
| Setting | You Set | Allowed Values | If You Set Nothing | Source of the Default |
|---|---|---|---|---|
IsDataPlane | A filter that reads Actions[].Annotations.Properties in each service JSON | true, false, or the property is absent | Not applicable; the JSON is read-only | Service reference page |
Operations[].AuthorizedActions | A join from an operation name to its actions | The actions listed for the operation | Some services have no Operations entries | Service reference page, Service reference JSON (retrieved 2026-10-27) |
ServiceName | A lookup from a service prefix to a name | A human-readable name, such as S3 | Not applicable | Service reference page |
| Global condition keys file | A download of global-condition-keys.json | 52 entries in the JSON retrieved on 2026-10-27 | Not applicable | Service reference JSON (retrieved 2026-10-27) |
| Retrieval time | When the JSON is fetched | Each service has a modified time in the list | The values of the day the JSON is fetched | Service reference page |
The following table lists, in the same row order, what happens at the boundary.
What Happens
| Setting | At the Boundary | Where It Shows | No Statement Found |
|---|---|---|---|
IsDataPlane | An action whose authorizing operations have no CloudTrail event category has no property (isn't classified yet) | The property is absent from Annotations.Properties | Why SQS actions are not classified |
Operations[].AuthorizedActions | One action can be authorized by operations that CloudTrail logs in different categories | The list of operations that authorize the action | How IsDataPlane is decided when those categories differ |
ServiceName | A prefix and its name can differ, such as secretsmanager and Secrets Manager | The top-level ServiceName field | — |
| Global condition keys file | The What's New post does not give a count | The number of entries in the file | A count stated by AWS |
| Retrieval time | Changes may take up to 24 hours to reach the metadata | The modified time in the list | When a not classified action will be classified |
4. CloudTrail Data Events and Management Events
This section outlines how CloudTrail uses the term "data plane" and explains what constitutes data events and management events.4.1 Data Events Are Also Called Data Plane Operations
The "Logging data events" page of the CloudTrail User Guide states:Data events provide information about the resource operations performed on or in a resource. These are also known as data plane operations. Data events are often high-volume activities. The "Logging management events" page states: Management events provide visibility into management operations that are performed on resources in your AWS account. These are also known as control plane operations.The "CloudTrail concepts" page states
CloudTrail logs four types of events: and lists management events, data events, network activity events, and Insights events. Within CloudTrail terminology, the term "data plane" is an alternative name for data events, and also serves as a name for a type of event.4.2 Not Logged by Default, and Selected by Resource Type
By default, trails and event data stores do not log data events. Data events are only recorded when a user adds them to a trail or event data store. A comprehensive overview of what is logged by default can be found in the previously published Where the Logs Come From on AWS.The Logging data events page details which operations constitute data events, listing them in a table organized by resource type (the value of
resources.type). For example, the SQS row lists Amazon SQS API activity on messages. associated with AWS::SQS::Queue, while the Amazon SNS row lists Amazon SNS Publish and PublishBatch API operations on topics. associated with AWS::SNS::Topic, and the AWS Lambda row lists AWS Lambda function execution activity (the Invoke API). associated with AWS::Lambda::Function. There are no rows for KMS or AWS Secrets Manager in the same table.Each service's CloudTrail page lists the operations that are logged for each resource type. The SQS page, under
AWS::SQS::Queue, lists 12 operations: ChangeMessageVisibility, ChangeMessageVisibilityBatch, DeleteMessage, DeleteMessageBatch, GetQueueAttributes, GetQueueUrl, ListDeadLetterSourceQueues, ListQueues, ListQueueTags, ReceiveMessage, SendMessage, and SendMessageBatch. The SQS page notes, The ListQueues operation is a unique case because it doesn’t act on a specific resource. The S3 page, under AWS::S3::Object, lists GetObject and PutObject, in addition to ListObjects and HeadBucket for buckets.4.3 eventCategory in Advanced Event Selectors
The SQS page states,To log Amazon SQS data events with CloudTrail, you must use advanced event selectors. The "AdvancedFieldSelector" page of the AWS CloudTrail API Reference describes the eventCategory field as follows: For CloudTrail management events, the value must be Management. For CloudTrail data events, the value must be Data. For CloudTrail network activity events, the value must be NetworkActivity.Regarding data event selectors, the same page states,
For CloudTrail data events, supported fields include eventCategory (required), eventName, eventSource, eventType, resources.type (required), readOnly, resources.ARN, sessionCredentialFromConsole, and userIdentity.arn. To select data events, you must specify both eventCategory and resources.type.On the CloudTrail logging side, the CloudTrail record contents page explains that
eventCategory Shows the event category. The event category is used in LookupEvents calls to filter on management events. For management events, the value is Management. For data events, the value is Data. For network activity events, the value is NetworkActivity. The record's managementEvent field is A Boolean value that identifies whether the event is a management event.4.4 AWS KMS Encrypt, Decrypt, and GenerateDataKey Are Read Management Events
KMS has no CloudTrail data events resource type. The "Logging management events" page statesAWS KMS actions such as Encrypt, Decrypt, and GenerateDataKey typically generate a large volume (more than 99%) of events. These actions are now logged as Read events. These AWS KMS cryptographic operations are logged as Read events among management events.The same page provides an example of configuring
ExcludeManagementEventSources to include kms.amazonaws.com to exclude KMS events from a trail, and notes, You cannot exclude AWS KMS or Amazon RDS Data API events from Event history;JSON data retrieved on October 27, 2026, showed that
IsDataPlane was false for kms:Encrypt, kms:Decrypt, and kms:GenerateDataKey.4.5 Event History and Event Data Stores
The note on the "Logging management events" page states,The CloudTrail Event history feature supports only management events. Event history only displays management events; data events are not visible. To view data events, you must record them in either a trail or an event data store.Event data stores are a feature of AWS CloudTrail Lake. The note on the "Working with AWS CloudTrail Lake" page states,
AWS CloudTrail Lake will no longer be open to new customers starting May 31, 2026. It continues, Existing customers can continue to use the service as normal. The configuration used in Section 10 of this article utilizes trails and Event history, but does not use an event data store.4.6 Contract Tables
The following two tables list the types of CloudTrail events, specifying what the user writes and what occurs as a result.What You Write
| Setting | You Set | Allowed Values | If You Set Nothing | Source of the Default |
|---|---|---|---|---|
| Data events | Advanced event selectors on a trail or an event data store; on trails, basic event selectors also work for S3 objects, Lambda functions, and DynamoDB tables | eventCategory Data with a resources.type value from the table | Not logged | CloudTrail data events page |
| Management events | Event selectors on a trail | Read events, Write events, or both | Logged by trails and event data stores | CloudTrail management events page |
| AWS KMS events in management events | ExcludeManagementEventSources | kms.amazonaws.com | Included | CloudTrail management events page |
eventCategory in a selector | Advanced event selectors | Management, Data, NetworkActivity on trails; event data stores accept more values | Required in each selector | AdvancedFieldSelector (API Reference) |
| Event history | Nothing to set | Management events only | Available | CloudTrail management events page |
The following table lists, in the same row order, what happens at the boundary.
What Happens
| Setting | At the Boundary | Where It Shows | No Statement Found |
|---|---|---|---|
| Data events | Selectors choose data events by the resource types in the table; a trail uses advanced or basic event selectors, not both, and applying advanced selectors overwrites existing basic ones | eventCategory Data and managementEvent false in the record | — |
| Management events | AWS KMS Encrypt, Decrypt, and GenerateDataKey are Read events | eventCategory Management and readOnly true | — |
| AWS KMS events in management events | Excluding them from a trail does not remove them from Event history | Missing KMS records in the trail's log files | — |
eventCategory in a selector | ListQueues records a wildcard in the ARN field | The resources field of the record | — |
| Event history | Data events never appear there | LookupEvents results | — |
5. Control Planes and Data Planes in the Whitepaper and Well-Architected
This section outlines how the availability design documentation defines the control plane and data plane. These definitions differ from those used in CloudTrail and Service Reference.5.1 CRUDL Versus the Primary Function
The "Control planes and data planes" page of AWS Fault Isolation Boundaries defines a control plane as follows:Control planes provide the administrative APIs used to create, read/describe, update, delete, and list (CRUDL) resources. For example, the following are all control plane actions: launching a new Amazon Elastic Compute Cloud (Amazon EC2) instance, creating an Amazon Simple Storage Service (Amazon S3) bucket, and describing an Amazon Simple Queue Service (Amazon SQS) queue.Regarding the data plane, it states,
The data plane is what provides the primary function of the service. Examples provided include the running EC2 instance itself, reading and writing to an EBS volume, getting and putting objects in an S3 bucket, and Route 53 answering DNS queries and performing health checks.The Well-Architected Framework's REL11-BP04 states,
Control planes provide the administrative APIs used to create, read and describe, update, delete, and list (CRUDL) resources, while data planes handle day-to-day service traffic.This definition differentiates based on what an operation does: whether it manages resources or provides the primary function of the service. It does not include CloudTrail event categories or IAM actions in its scope. The way to differentiate between the control plane and the data plane, and how to apply that to availability design (static stability), is discussed in the previously published Cell-Based Architecture and Shuffle Sharding on AWS.
5.2 Describing a Queue Is a Control Plane Example
The whitepaper citesdescribing an Amazon Simple Queue Service (Amazon SQS) queue as an example of the control plane. In contrast, the CloudTrail documentation for SQS lists GetQueueAttributes as an operation related to data events for AWS::SQS::Queue. If the whitepaper's example is read as this operation (this article's reading), reading information about an SQS queue is presented as a control plane example in the whitepaper, but as a data event in CloudTrail. This is not a discrepancy in the documents, but rather a difference in their definitions. This article writes it as differs by definition.The whitepaper's discussion of CRUDL also illustrates this. The
ListBucket action for S3 is categorized in the Service Reference as a data plane operation (IsDataPlane is true and IsList is true), while the CloudTrail documentation for S3 lists ListObjects as a data event related to AWS::S3::Object. The whitepaper does not name ListBucket. That a listing operation falls on the control plane side when read with the "L" of CRUDL is this article's reading.5.3 How the IAM Pages Use the Words
The "Refine permissions in AWS using last accessed information" page in the IAM User Guide states,Action last accessed information is not available for any data plane event. It continues, Sometimes, CloudTrail management events are also called control plane operations or control plane events. On this page, the term "data plane" reads as referring to CloudTrail data events.The CloudTrail page for Amazon DynamoDB also uses the headings
DynamoDB data plane events in CloudTrail and Control plane events in CloudTrail. On these two pages, the term "plane" refers to the two different types of events within CloudTrail.6. What an SCP or RCP Can Scope
This section lists what AWS Organizations service control policies (SCPs) and resource control policies (RCPs) apply to. The overall design of the guardrails and the data perimeter are covered in the previously published AWS Organization Guardrails.6.1 No Statement on Data Plane Was Found in the SCP and RCP Pages
The term "data plane" was not found on the SCP page, the SCP evaluation page, the RCP page, or the RCP evaluation page in the AWS Organizations User Guide. Similarly, the term was not found in the documentation related to data perimeters (specifically, the "Establish permissions guardrails using data perimeters" page in the IAM User Guide, and the "Perimeter overview" page in the whitepaper "Building A Data Perimeter on AWS"). No statements were found indicating that RCP scopes actions related to the data plane. The Perimeter implementation page of the same whitepaper states, about services that expose their data plane inside a customer VPC (such as Amazon RDS),The data plane is the part of the service that provides the day-to-day functionality of that thing. This usage is in a network context and is not tied to the scope of RCPs.6.2 RCPs Follow the Resource Type Column
The RCP page specifies the resources to which RCPs apply as follows:RCPs apply to the resources that are authorized as part of an operation request. These resources can be found in the “Resource type” column of the Action table in the Service Authorization Reference. If a resource is specified in the "Resource type" column, then the RCPs of the resource owner's account are applied.For example, the same page states,
For example, s3:GetObject authorizes the object resource. Whenever a GetObject request is made, an applicable RCP will apply to determine whether the requesting principal can invoke the GetObject operation. The Resource type column in the Action table determines whether an RCP applies. The RCP page does not mention IsDataPlane.6.3 Services in the RCP List as of October 27, 2026
The RCP page states,RCPs apply to actions for the following AWS services: and then lists the services with their prefixes. As of October 27, 2026, the list included 62 services. Of the services illustrated in this article, the following are included in the list: S3 (with prefix s3), Amazon DynamoDB (with prefix dynamodb), SQS (with prefix sqs), KMS (with prefix kms), and AWS Secrets Manager (with prefix secretsmanager). AWS Lambda, Amazon SNS, Amazon Kinesis Data Streams, and Bedrock are not included in the list. The prefix kinesisvideo for Amazon Kinesis Video Streams is present in the list.6.4 The Management Account and AWS Managed Keys
The RCP page states,RCPs don't affect resources in the management account. The same page also states, RCPs do not apply to AWS managed keys for AWS Key Management Service. Furthermore, it notes that RCPs do not impact the kms:RetireGrant permission. It also states, RCPs do not apply to calls made by service-linked roles. Even if KMS appears in the list of RCPs, RCPs do not apply to AWS managed keys.6.5 SCPs Apply to Principals
The SCP page states thatSCPs affect only IAM users and roles that are managed by accounts that are part of the organization. SCPs don't affect resource-based policies directly. The same page also states, SCPs don't affect users or roles in the management account. and SCPs do not affect any service-linked role. SCPs apply based on whether a principal belongs to an account in the organization. The SCP page does not mention data plane. The same page further states, The effective permissions are the logical intersection between what is allowed by the SCP and resource control policies (RCPs) and what is allowed by the identity-based and resource-based policies. The order of evaluation is detailed in the previously published IAM Policy Evaluation Logic Step-by-Step.6.6 Contract Tables
The following two tables list what users write and what occurs as a result, separately for SCP and RCP.What You Write
| Setting | You Set | Allowed Values | If You Set Nothing | Source of the Default |
|---|---|---|---|---|
| RCP | A policy attached in AWS Organizations | Actions of the 62 services in the RCP list (as of 2026-10-27) | No RCP restricts the resources | Organizations RCP page |
| SCP | A policy attached in AWS Organizations | Actions of IAM users and roles in member accounts | No SCP restricts the principals | Organizations SCP page |
The following table lists, in the same row order, what happens at the boundary.
What Happens
| Setting | At the Boundary | Where It Shows | No Statement Found |
|---|---|---|---|
| RCP | Applies to the resources in the Resource type column; not to the management account; not to AWS managed keys; not to kms:RetireGrant; not to calls made by service-linked roles | The authorization decision for the request | A statement that RCPs scope data plane actions |
| SCP | Applies to principals in member accounts; not to the management account; not to service-linked roles; does not affect resource-based policies directly | The authorization decision for the request | A statement that uses the words data plane |
7. IAM Access Analyzer Policy Generation and Last Accessed Information
This section outlines which types of CloudTrail events two IAM features use.7.1 Data Events Are Not Used in Generated Policies
The IAM Access Analyzer policy generation page in the IAM User Guide states:Data events not available – IAM Access Analyzer does not identify action-level activity for data events, such as Amazon S3 data events, in generated policies.The policies generated by IAM Access Analyzer based on CloudTrail logs do not include action-level activity related to data events. Furthermore, as described in Section 5.3, the IAM User Guide states,
Action last accessed information is not available for any data plane event.7.2 SupportedBy in the JSON
The Service Reference JSON includes aSupportedBy field for each action, with two values: IAM Access Analyzer Policy Generation and IAM Action Last Accessed. In the JSON data retrieved on October 27, 2026, out of 483 actions where IsDataPlane was true, 479 had both IAM Access Analyzer Policy Generation and IAM Action Last Accessed set to false. The remaining four actions are as follows:| Action | IAM Access Analyzer Policy Generation | IAM Action Last Accessed |
|---|---|---|
cloudwatch:GetMetricStatistics | false | true |
ssm:GetExecutionPreview | true | true |
dynamodb:ReadDataForReplication | true | false |
dynamodb:WriteDataForReplication | true | false |
No statement was found explaining why these four actions have
true values.Compared with the two lists in the IAM User Guide (IAM Access Analyzer policy generation services, and IAM action last accessed information services and actions), the sources disagree on three of the four actions. The policy generation list includes
cloudwatch:GetMetricStatistics, but the JSON gives false for IAM Access Analyzer Policy Generation. The same list does not include dynamodb:ReadDataForReplication or dynamodb:WriteDataForReplication, but the JSON gives true. The last accessed list agrees with the JSON on all four actions.8. Service-by-Service Comparison
This section lists what determines each definition and presents the definition values for example services side-by-side. All values come from the sources and the JSON retrieved on October 27, 2026.8.1 Where Each Definition Comes From
The following table (Table 8-1) lists five definitions, arranged in the columns of Section 2.| Defined By | You Set | Allowed Values | If You Set Nothing | Source of the Default |
|---|---|---|---|---|
Service Reference IsDataPlane | Nothing; the property is derived from the CloudTrail event categories of the authorizing operations | true, false, or the property is absent | The property is absent (isn't classified yet) | Service reference page |
| CloudTrail data events | Advanced event selectors with eventCategory and resources.type | Resource types in the data events table | Not logged | CloudTrail data events page |
| Whitepaper and Well-Architected | Nothing; a design definition | CRUDL administrative APIs versus the primary function | Not applicable | Fault Isolation Boundaries whitepaper |
| RCP | An RCP in Organizations | Resources in the Resource type column, for the 62 services in the list | No RCP applies | Organizations RCP page |
| IAM Access Analyzer and last accessed | Policy generation or a last accessed report | Action-level activity in CloudTrail, without data events | Not applicable | IAM Access Analyzer policy generation page |
The following table lists, in the same row order, what happens at the boundary.
| Defined By | At the Boundary | Where It Shows | No Statement Found |
|---|---|---|---|
Service Reference IsDataPlane | All 20 SQS actions are not classified although SQS has a data events resource type | Annotations.Properties in the JSON | Why SQS is not classified; how mixed categories are decided |
| CloudTrail data events | The Bedrock page states that InvokeModel is logged as a management event; in Section 10, it was also recorded as a data event | eventCategory in the record | A statement on data event records for non-streaming Bedrock calls |
| Whitepaper and Well-Architected | Describing an SQS queue is a control plane example; GetQueueAttributes is a CloudTrail data event | Design documents only | Whether AWS KMS cryptographic operations are its primary function |
| RCP | Lambda, SNS, Kinesis Data Streams, and Bedrock are not in the list | The authorization decision | A statement that uses the words data plane |
| IAM Access Analyzer and last accessed | 479 of 483 true actions have both SupportedBy values false | Generated policies and last accessed reports | Why the other four actions are supported |

8.2 Storage and Messaging
The following Table 8-2 lists values for five services (S3, Amazon DynamoDB, Amazon SNS, SQS, and Amazon Kinesis Data Streams), organized by definition. TheIsDataPlane column indicates the number of actions with a value of true and the total number of actions, in the JSON retrieved on October 27, 2026.| Service | IsDataPlane (true / all) | Example actions | CloudTrail data events resource types | In the RCP list | Whitepaper or Well-Architected example |
|---|---|---|---|---|---|
| S3 | 25 / 180 (false 119, not classified 36) | GetObject true; ListBucket true; CreateBucket false; GetBucketPolicy false | AWS::S3::Object and others | Yes (s3) | Creating a bucket is control plane; getting and putting objects is data plane |
| DynamoDB | 17 / 80 (false 50, not classified 13) | GetItem, PutItem, Query true | AWS::DynamoDB::Table, AWS::DynamoDB::Stream | Yes (dynamodb) | Well-Architected: using DynamoDB is data plane; creating tables is control plane |
| SNS | 1 / 41 (false 40) | Publish true | AWS::SNS::Topic, AWS::SNS::PlatformEndpoint | No | No statement found |
| SQS | 0 / 20 (not classified 20) | SendMessage, ReceiveMessage, GetQueueAttributes not classified | AWS::SQS::Queue | Yes (sqs) | Describing a queue is control plane |
| Kinesis Data Streams | 5 / 47 (false 41, not classified 1) | GetRecords, PutRecord true | AWS::Kinesis::Stream, AWS::Kinesis::StreamConsumer | No (kinesisvideo is listed) | No statement found |
Amazon SNS's
PublishBatch operation is authorized by the sns:Publish action in the JSON. The CloudTrail data events table lists both the Publish and PublishBatch operations in the AWS::SNS::Topic row.8.3 Compute, Keys, Secrets, and Models
The following Table 8-3 lists the values of each definition for four services: AWS Lambda, KMS, AWS Secrets Manager, and Bedrock.| Service | IsDataPlane (true / all) | Example actions | CloudTrail category of the example operations | In the RCP list | Whitepaper or Well-Architected example |
|---|---|---|---|---|---|
| Lambda | 14 / 135 (false 114, not classified 7) | InvokeFunction true; GetFunction false; InvokeFunctionUrl not classified | Invoke is a data event (AWS::Lambda::Function) | No | Well-Architected: using Lambda is data plane; creating functions is control plane |
| KMS | 0 / 58 (false 57, not classified 1) | Encrypt, Decrypt, GenerateDataKey false | Management events, logged as Read events | Yes (kms); not AWS managed keys | No statement found |
| Secrets Manager | 0 / 23 (false 23) | GetSecretValue false | No row in the data events table; the Secrets Manager pages do not name the category | Yes (secretsmanager) | No statement found |
Bedrock (bedrock) | 37 / 269 (false 215, not classified 17) | InvokeModel true; InvokeModelWithResponseStream not classified; ListAsyncInvokes false | InvokeModel, Converse are management events; InvokeModelWithBidirectionalStream, GetAsyncInvoke are data events | No | No statement found |
Bedrock (bedrock-mantle) | 0 / 38 (not classified 38) | CreateInference not classified | CreateInference is a data event (AWS::BedrockMantle::Project) | No | No statement found |
bedrock-mantle is a service prefix distinct from Bedrock in the Service Reference, and ServiceName is Bedrock Mantle. The "Monitor bedrock-mantle API calls using CloudTrail" page of the Amazon Bedrock User Guide states, Inference is a data event on bedrock-mantle, a management event on bedrock-runtime. Both endpoints are covered in the previously published Amazon Bedrock Inference Endpoints and API Keys.8.4 Rows That Do Not Line Up
The following two rows do not align when comparing the definitions on the Service Reference page (derived from CloudTrail event categories) with the text in CloudTrail documentation. This article does not state that either source contains errors; in its terms, these are rows wherethe sources disagree.The first concerns SQS. The SQS CloudTrail page states that CloudTrail records 12 operations as data events for the
AWS::SQS::Queue resource type. However, in the JSON data retrieved on October 27, 2026, all 20 SQS actions were not classified. The SQS JSON contains 23 Operations elements. No statement was found explaining the reason for this status in the Service Reference page, the SQS CloudTrail page, or What's New. The term yet on the Service Reference page indicates that these may be classified in the future, but no timeframe is provided.The same applies to
bedrock-mantle. Its CloudTrail page lists CreateInference as a data event, but all 38 actions in the corresponding JSON data were not classified. The bedrock-mantle JSON does not contain any Operations elements.The second row is Bedrock's
InvokeModel. The Bedrock CloudTrail page lists the following three statements:Amazon Bedrock logs some Amazon Bedrock Runtime API operations (such as InvokeModel, InvokeModelWithResponseStream, Converse, ConverseStream, and ListAsyncInvokes) as management events.Amazon Bedrock logs other Amazon Bedrock Runtime API operations (such as InvokeModelWithBidirectionalStream, GetAsyncInvoke, and StartAsyncInvokes) as data events.A trail that records only management events receives two events: one AwsApiCall and one AwsServiceEvent. A trail that also records Amazon Bedrock data events receives a data event copy of each.
The third statement is about
InvokeModelWithResponseStream and ConverseStream calls. According to JSON data retrieved on October 27, 2026, the bedrock:InvokeModel action was marked as true, and the operations that authorize it included both the management events (InvokeModel and Converse, as described in the first sentence) and the data events (InvokeModelWithBidirectionalStream and StartAsyncInvoke, as described in the second sentence) (Section 3.4). The bedrock:InvokeModelWithResponseStream action was not classified. The documentation does not specify which category determined this true value. Using the configuration described in Section 10, a trail configured to record Amazon Bedrock data events also received data event records for non-streaming InvokeModel and Converse calls (Section 10.3). This record also does not indicate the source of the derivation.The previously published Threat Detection for AI Workloads on AWS states that Bedrock inference API calls are recorded as management events, which aligns with the first sentence on the Bedrock CloudTrail page as of October 27, 2026.

8.5 Rows That Differ by Definition
The difference in these two rows is not due to conflicting sources; rather, it stems from differing definitions, resulting in different classifications. This article uses the termdiffers by definition.The first row is KMS cryptographic operations.
kms:Decrypt is classified in the Service Reference with a value of false, while in CloudTrail, it is a Read management event. These two classifications align. The whitepaper defines the data plane as what provides the primary function of the service, but it does not specifically mention KMS. No statements were found indicating that KMS cryptographic operations represent the primary function according to this definition. If they are read as the primary function, only the whitepaper's definition puts KMS into a different category. This is this article's interpretation, and not a statement found directly in the documentation.The second row is S3's
ListBucket action. According to the Service Reference, both IsDataPlane and IsList are true. On the S3 CloudTrail page, ListObjects is a data event for AWS::S3::Object. These two classifications are consistent. Read with the whitepaper's CRUDL definition, "list" falls on the control plane side. The whitepaper does not name ListBucket, so this is this article's reading.For SQS's
GetQueueAttributes, CloudTrail classifies it as a data event, the whitepaper lists describing a queue, which this article reads as this operation, as an example of a control plane operation, and the Service Reference leaves it not classified. These three definitions provide three different classifications.9. Which Definition Automation Uses and What It Misses
This section lists what might be overlooked in four different automation scenarios if only one definition is used. It does not specify which definition should be used.9.1 Deciding What to Audit
When selecting services whose data events are logged based on whether they have actions withIsDataPlane set to true, SQS and bedrock-mantle are excluded among the example services in this article. Both of these, as of the JSON data from October 27, 2026, are not classified and have a resource type associated with CloudTrail data events.If you select based on the descriptions in the CloudTrail documentation, Bedrock's
InvokeModel and Converse fall under the category of management events. This is because the Bedrock CloudTrail page lists these two as management events. In the configuration used in Section 10, the trail that selected the data event for AWS::Bedrock::Model also captured the data event records for these two calls. However, the Event history still retained the corresponding management events for the same calls. A system that collects both management and data events can receive two separate records for a single Bedrock call. KMS's Decrypt is a Read management event. If you configure your trail to exclude Read management events or specifically exclude KMS using ExcludeManagementEventSources, that trail no longer captures the records of KMS cryptographic operations.9.2 Generating Policies
IAM Access Analyzer's policy generation does not include activity at the action level for data events in the generated policies (see Section 7.1). As of October 27, 2026, in the JSON data, out of 483 actions withIsDataPlane set to true, 480 were marked as false in the IAM Access Analyzer Policy Generation field. Applying the documented statement, the generated policies do not include data event actions such as GetObject for S3 or InvokeFunction for Lambda.9.3 Designing Guardrails
Even when collecting actions withIsDataPlane set to true and writing them into an RCP, an RCP only applies to the 62 services listed (Section 6.3). Actions for Lambda's InvokeFunction, Amazon SNS's Publish, and Bedrock's InvokeModel are not covered by RCP according to the list as of October 27, 2026. Furthermore, RCP does not apply to AWS managed keys in KMS, to resources in the management account, or to calls made by service-linked roles (Section 6.4). SCP, on the other hand, takes effect based on whether the principal is in the organization's accounts, and the SCP page does not mention data plane (Section 6.5).9.4 Treating Not Classified as Its Own Value
As demonstrated in thejq example in Section 3.1, when selecting with == true, not classified actions are dropped together with actions that evaluate to false. Conversely, when selecting the side that is not data plane with != true, not classified actions are grouped with those that evaluate to false. Regardless of the selection method, the 20 SQS actions are treated the same as those that evaluate to false.This article presents not classified actions as a third value, distinct from both
true and false. Given the yet on the Service Reference page and the modified timestamps that keep changing in the list, not classified actions may be classified at a later date. If a value is kept with its retrieval date, a later classification appears as a difference on the date it is applied.
| Task | Definition used alone | What it misses (as of 2026-10-27) | Section |
|---|---|---|---|
| Choosing data events to log | IsDataPlane true | Among the example services, SQS and bedrock-mantle, which are not classified but have data events resource types | 8.4 |
| Choosing data events to log | CloudTrail data events resource types | AWS KMS cryptographic operations, which are management events; in Section 10, Bedrock InvokeModel and Converse were recorded as both kinds | 4.4, 8.4, 10.3 |
| Generating policies | IAM Access Analyzer policy generation | Action-level activity of data events | 7.1 |
| Writing guardrails | IsDataPlane true in an RCP | Actions of services outside the RCP list, AWS managed keys, the management account, and calls by service-linked roles | 6.3, 6.4 |
| Filtering the JSON | == true or != true | The difference between false and not classified | 9.4 |
10. What This Configuration Recorded
This section describes what CloudTrail recorded in response to requests sent in the US East (N. Virginia) Region, specifically for this article. The values presented here reflect the data recorded during that particular configuration and on that specific day, and are not values that the documentation guarantees.10.1 Configuration
The requests were sent in the US East (N. Virginia) Region between 11:49:50 and 11:49:56 (UTC) on October 27, 2026. Within a single AWS CloudFormation stack, the following resources were created:- One CloudTrail trail, configured to select only data events, excluding management events. This trail had four selectors: an
AWS::SQS::Queuewith a specified ARN for a test SQS queue, anAWS::SQS::Queuewith theeventNameset toListQueues, anAWS::Bedrock::Modelwith a prefix match for the ARN of the Amazon Nova Micro model, and anAWS::S3::Objectwith a prefix match for the ARN of a test S3 bucket. - One S3 bucket as the destination for the trail, and one S3 bucket for test data.
- One standard SQS queue, using the AWS managed key
alias/aws/sqs; no customer managed key was created.
There were a total of 15 API calls made. SQS received two
SendMessage calls, and one each of ReceiveMessage, DeleteMessage, GetQueueAttributes, GetQueueUrl, and ListQueues. S3 received one each of PutObject, GetObject, ListObjectsV2, and GetBucketVersioning. Bedrock's bedrock-runtime received one each of InvokeModel, Converse, ConverseStream, and InvokeModelWithResponseStream to the model amazon.nova-micro-v1:0. All 15 calls were successful.The records were retrieved from two locations: log files the trail delivered to S3, and the Event history (specifically,
LookupEvents from 11:47:50 to 11:59:56). This retrieval was completed by 11:55:09 (UTC). Using the eventName in the records, the corresponding Operations in the Service Reference JSON, retrieved again by the same time, were traced, and the IsDataPlane values for the actions that authorize those operations were listed. This configuration did not use a customer managed KMS key, an event data store, SCPs, or RCPs. It also did not call InvokeModelWithBidirectionalStream, StartAsyncInvoke, or bedrock-mantle.10.2 What CloudTrail Recorded
Table 10-1 below shows what was recorded in this configuration. The trail only includes data events, so the trail column lists only data events. The Event history column contains only management events.Operation (eventName) | Trail (data events only) | Event history (management events) | Actions that authorize the operation in the JSON (IsDataPlane) |
|---|---|---|---|
SQS SendMessage (2 calls) | 2 records, Data | None | sqs:SendMessage not classified |
SQS ReceiveMessage, DeleteMessage, GetQueueAttributes, GetQueueUrl | 1 record each, Data | None | Each not classified |
SQS ListQueues | 1 record, Data; resource ARN ends in * | None | sqs:ListQueues not classified |
AWS KMS GenerateDataKey, Decrypt (invokedBy sqs.amazonaws.com) | None | 1 record each, Management, readOnly true | kms:GenerateDataKey false, kms:Decrypt false |
S3 PutObject, GetObject | 1 record each, Data | None | s3:PutObject true, s3:GetObject true |
S3 ListObjectsV2 (recorded as ListObjects) | 1 record, Data; ARNPrefix on AWS::S3::Object | None | s3:ListBucket true |
S3 GetBucketVersioning | None | 1 record, Management | s3:GetBucketVersioning false |
Bedrock InvokeModel | 1 record, Data | 1 record, Management | bedrock:InvokeModel true |
Bedrock Converse | 1 record, Data | 1 record, Management | bedrock:InvokeModel true |
Bedrock InvokeModelWithResponseStream | 2 records, Data (AwsApiCall and AwsServiceEvent) | 2 records, Management (AwsApiCall and AwsServiceEvent) | bedrock:InvokeModel true, bedrock:InvokeModelWithResponseStream not classified |
Bedrock ConverseStream | 2 records, Data (AwsApiCall and AwsServiceEvent) | 2 records, Management (AwsApiCall and AwsServiceEvent) | bedrock:InvokeModelWithResponseStream not classified |
Table 10-1's final column lists only the authorizing actions that the body text discusses. For the four Bedrock operations, the JSON also lists
bedrock:ApplyGuardrail, bedrock:CallWithBearerToken, and bedrock:InvokeTool (all listed as true). For the three S3 operations, it also lists actions with the s3-object-lambda prefix (all listed as not classified).The resource type for Bedrock records in the trail logs was consistently
AWS::Bedrock::Model. In the trail records, the managementEvent field was false, while in the Event history records, it was true.10.3 Joining the Records to IsDataPlane
In this configuration, all four Bedrock calls were recorded in two locations. They were recorded as management events in the Event history, and as data events in the trail that selected data events. For the two streaming calls, the information aligns with the statement on the Bedrock CloudTrail page:A trail that also records Amazon Bedrock data events receives a data event copy of each. However, no statement indicating that data events are also recorded for the non-streaming InvokeModel and Converse operations was found on either the Bedrock CloudTrail page or the CloudTrail data events page.The fact that the
bedrock:InvokeModel action is marked as true, and that both InvokeModel and Converse were recorded as data events in this configuration, does not present a contradiction. However, this record does not determine from which operation or category the IsDataPlane value was derived. The operations that authorize the bedrock:InvokeModelWithResponseStream action (InvokeModelWithResponseStream and ConverseStream) were recorded as data events, but the action remains not classified.All seven SQS calls were recorded as data events, and none were found in the Event history. The authorized actions were all not classified. The KMS
GenerateDataKey and Decrypt calls sent by SQS were recorded as management events (Read) in the Event history, and IsDataPlane was false. The three S3 operations were recorded as data events, and the s3: actions that the body text discusses (s3:PutObject, s3:GetObject, s3:ListBucket) were true.10.4 Things That Cannot Be Determined Based on This Configuration
The following points cannot be determined based on this configuration and the records of that day.- Whether non-streaming Bedrock calls are recorded as data events, even when using different models, inference profiles, regions, or on subsequent dates. This article writes the statement on the Bedrock CloudTrail page (that
InvokeModelandConverseare management events) as the statement of the source and does not extend the record in Section 10. - From which operations and categories the
IsDataPlanevalue was derived. - When SQS actions will be classified.
- Records related to
InvokeModelWithBidirectionalStream,StartAsyncInvoke, andbedrock-mantle. This configuration did not call them. - Decisions by SCPs and RCPs. This configuration did not test organization policies.
11. Failure Modes
This section outlines the types of failures that occur when data plane definitions are mixed up, along with where these failures manifest.| Symptom | Cause | Where it shows | Section |
|---|---|---|---|
| SQS is left out of the data events to log | IsDataPlane was read as the list of data plane services, and SQS actions are not classified | No SQS data events in the trail | 8.4, 9.1 |
| SQS actions are treated as management actions | A filter put not classified together with false | The output of the filter | 9.4 |
| One Bedrock call is counted twice | A pipeline reads both the management events and the Bedrock data events; in Section 10, InvokeModel and Converse were recorded as both kinds | Event counts | 8.4, 10.3 |
KMS Decrypt records are missing from a trail | Management events, Read management events, or KMS events were excluded from the trail | The trail's log files | 4.4 |
| A generated policy has no S3 object actions | IAM Access Analyzer does not use data events in generated policies | The generated policy | 7.1 |
An RCP that denies lambda:InvokeFunction has no effect | Lambda is not in the RCP list as of 2026-10-27 | The authorization decision | 6.3 |
| A count of data plane actions changes between two runs | The JSON was fetched on different days | The modified time in the list | 1.3, 3.7 |
12. Frequently Asked Questions about Data Plane Actions on AWS
This section answers common questions related to AWS data plane actions.Q1. Is a data plane action the same as a CloudTrail data event?
The answer varies depending on the documentation. CloudTrail states thatdata plane operations is another name for data events. The Service Reference indicates that the IsDataPlane attribute is derived from CloudTrail event categories. However, SQS has a resource type associated with CloudTrail data events but its actions are not classified. Conversely, the InvokeModel operation is described as a management event on the Bedrock CloudTrail page, while the bedrock:InvokeModel action, which also authorizes operations that page lists as data events, is marked as true. The whitepaper differentiates based on CRUDL (Create, Read, Update, Delete, List) versus the primary function rather than on CloudTrail's event categories (see Sections 4.1, 8.4, and 5.1).Q2. If IsDataPlane is false, is the action a management action?
It depends on the definition. The Service Reference page states that there can be actions with all five properties set to false, citing the S3 GetBucketPolicy as an example. The KMS Decrypt action is set to false, and in CloudTrail, it is a Read management event. If KMS cryptographic operations are read as the primary function of KMS, only the whitepaper's definition puts them on the other side. This is this article's interpretation (see Sections 3.3, 4.4, and 8.5).Q3. Does SQS have no data plane operations?
Under CloudTrail's definition it does not lack them; in the Service Reference, its actions are not classified. According to the JSON data from October 27, 2026, none of the 20 SQS actions has theIsDataPlane property, and the Service Reference page describes this state as isn't classified yet. CloudTrail can log 12 SQS operations as data events. No statement was found explaining why these actions remain not classified (see Sections 2.5 and 8.4).Q4. Are RCPs a way to scope data plane actions?
The term "data plane" was not found on the RCP page. RCP applies to the resources in theResource type column for the 62 services in the list (as of October 27, 2026). It does not apply to resources in the management account, to AWS managed keys within KMS, or to calls made by service-linked roles (see Sections 6.1 through 6.4).Q5. Do the policies that IAM Access Analyzer generates include data actions?
Data event actions are not included. The IAM User Guide states,IAM Access Analyzer does not identify action-level activity for data events, such as Amazon S3 data events, in generated policies. (Section 7.1).Q6. Is Bedrock inference a data event or a management event?
It depends on the endpoint and the operation. The Bedrock CloudTrail page listsInvokeModel, InvokeModelWithResponseStream, Converse, and ConverseStream as management events, while InvokeModelWithBidirectionalStream, GetAsyncInvoke, and StartAsyncInvoke are categorized as data events. For streaming calls, a trail that also records Bedrock data events receives a data event copy. In the configuration used in Section 10, data event records for non-streaming InvokeModel and Converse calls were also recorded in the trail that selected them. The inference performed by bedrock-mantle is a data event (see Sections 8.3, 8.4, and 10.3).Q7. Is the IsDataPlane classification reflected within 24 hours?
No such statement was found. The 24-hour note on the Service Reference page applies to the metadata for service reference information as a whole (Section 3.7).13. Summary
The term "data plane" does not have a single, consistent definition across AWS documentation.- In the Service Reference,
IsDataPlaneis derived from the CloudTrail event categories of the operations that authorize the action, and can take the valuestrue,false, or not classified. Not classified does not meanfalse. - CloudTrail data events, also known as
data plane operations, are not recorded by default, and resource type tables and advanced event selectors determine them. The KMS actionsEncrypt,Decrypt, andGenerateDataKeyare Read management events. - The whitepaper and the Well-Architected Framework differentiate between management APIs (CRUDL) and the primary function of a service. Describing a queue is a control plane example in the whitepaper; reading list operations as the control plane side is this article's reading.
- The term "data plane" was not found on the RCP page; RCPs apply through the
Resource typecolumn for the 62 services in the list. SCP applies to principals in member accounts. - IAM Access Analyzer policy generation does not use data events, and action last accessed information is not available for any data plane event.
- In the JSON retrieved on October 27, 2026, both SQS and
bedrock-mantlehave resource types for CloudTrail data events but are not classified, while the BedrockInvokeModeloperation is described as a management event on the CloudTrail page, and thebedrock:InvokeModelaction, which also authorizes operations that page lists as data events, is classified astrue. No statement was found on the reason or the source of the derivation. Using the configuration described in Section 10, four Bedrock calls were recorded as both management events and data events. - Counts and classifications can change from day to day. These values are kept with the date of retrieval.
14. References
- Service Authorization Reference: Simplified AWS service information for programmatic access
- Service Reference: List of AWS services (JSON)
- Service Reference: Global condition keys (JSON)
- What's New: AWS Service Reference Information now supports global condition keys, service names, and data plane classification
- AWS CloudTrail User Guide: Logging data events
- AWS CloudTrail User Guide: Logging management events
- AWS CloudTrail User Guide: CloudTrail concepts
- AWS CloudTrail User Guide: CloudTrail record contents for management, data, and network activity events
- AWS CloudTrail User Guide: Working with AWS CloudTrail Lake
- AWS CloudTrail API Reference: AdvancedFieldSelector
- Amazon SQS Developer Guide: Logging Amazon Simple Queue Service API calls using AWS CloudTrail
- Amazon SNS Developer Guide: Logging AWS SNS API calls using AWS CloudTrail
- AWS Lambda Developer Guide: Logging AWS Lambda API calls using AWS CloudTrail
- Amazon S3 User Guide: Amazon S3 CloudTrail events
- Amazon DynamoDB Developer Guide: Logging DynamoDB operations by using AWS CloudTrail
- AWS KMS Developer Guide: Logging AWS KMS API calls with AWS CloudTrail
- AWS Secrets Manager User Guide: Log AWS Secrets Manager events with AWS CloudTrail
- AWS Secrets Manager User Guide: AWS CloudTrail entries for Secrets Manager
- Amazon Bedrock User Guide: Monitor Amazon Bedrock API calls using CloudTrail
- Amazon Bedrock User Guide: Monitor bedrock-mantle API calls using CloudTrail
- AWS Organizations User Guide: Service control policies (SCPs)
- AWS Organizations User Guide: Resource control policies (RCPs)
- IAM User Guide: Establish permissions guardrails using data perimeters
- Building A Data Perimeter on AWS: Perimeter overview
- Building A Data Perimeter on AWS: Perimeter implementation
- AWS Fault Isolation Boundaries: Control planes and data planes
- AWS Well-Architected Framework: REL11-BP04 Rely on the data plane and not the control plane during recovery
- IAM User Guide: IAM Access Analyzer policy generation
- IAM User Guide: Refine permissions in AWS using last accessed information
- IAM User Guide: IAM Access Analyzer policy generation services
- IAM User Guide: IAM action last accessed information services and actions
References:
Tech Blog with curated related content
Written by Hidekazu Konishi