CanReadData
Effective data-plane read (control-plane perm + network reach + decrypt if encrypted). Includes reading messages from a queue/topic/stream.
Identity, Compute
── CanReadData ──▸
Storage, Data, Messaging, ApplicationPlatform
Source types
IdentityComputeTarget types
States
ACTIVE
CONDITIONAL
POTENTIAL
BLOCKED
UNKNOWN
Derivation
| nature | derived |
|---|---|
| conditions | iam_permission resource_policy network_reachability key_permission |
Rules that emit CanReadData 110
athena:StartQueryExecution on an enabled workgroup, combined with s3:GetObject on the data prefix, s3:PutObject on the results output location, and Glue read permissions, enables the principal to read underlying data-lake content.
awsderived
backup:StartRestoreJob provisions a new resource from a backup recovery point; the restored resource can be accessed if the principal also has target-service read permissions (RDS login, EC2 key pair, EFS mount, etc.).
awsderived
GitPull or GetFile lets a principal read the full repository content, potentially harvesting secrets committed to source code.
awsderived
rds:ModifyDBCluster with MasterUserPassword resets the cluster's master password to an attacker-known value, granting superuser MongoDB access without knowing the current password - a single control-plane escalation primitive.
awsderived
A principal that can read the DocumentDB master-password secret from Secrets Manager can authenticate to the cluster as the master MongoDB user, gaining full data-plane access (read/write/drop) across all databases on the cluster.
awsderived
A principal in the snapshot's restore-authorized account with rds:RestoreDBClusterFromSnapshot can restore a shared DocumentDB cluster snapshot to a new cluster, obtaining full read access to all original data without network access to the source cluster.
awsderived
dynamodb:GetItem / Query / Scan grants item-level read access to the table, including any secrets or sensitive data stored as item attributes.
awsderived
dynamodb:GetShardIterator + dynamodb:GetRecords on a DynamoDB Stream yields real-time access to all item-level changes, including full item images depending on StreamViewType.
awsderived
dynamodb:RestoreTableToPointInTime creates a new table from PITR; reading it requires separate GetItem/Scan/Query permission on the restored table ARN (CONDITIONAL path).
awsderived
dynamodb:RestoreTableFromBackup restores a table from an on-demand backup; reading it requires separate GetItem/Scan/Query permission on the restored table ARN (CONDITIONAL path).
awsderived
A principal with access to a DAX cluster (dax:GetItem / dax:Query / dax:Scan / dax:BatchGetItem) reads DynamoDB data through the cache, inheriting the DAX cluster's attached IAM role's DynamoDB permissions.
awsderived
ebs:ListSnapshotBlocks + ebs:GetSnapshotBlock give block-level read of snapshot data without mounting - no EC2 footprint required. This rule matches on direct IAM capability evaluation, not on materialized HasPermission edges (which may not exist for wildcard-scoped ebs: permissions).
awsderived
CreateVolume from an existing snapshot + AttachVolume to an attacker- controlled instance yields full filesystem read of the snapshot's data. This rule matches on direct IAM capability evaluation for both volume creation and attachment.
awsderived
Snapshot a peer instance's volume, create a volume from it, attach to an attacker instance and mount -> read on-disk secrets/keys without running code on the victim.
awsderived
A principal with effective ecr:BatchGetImage + ecr:GetDownloadUrlForLayer can pull image layers, reading embedded secrets or proprietary code contained in the repository's images. For KMS-encrypted repositories, the principal must also hold kms:Decrypt on the repository's CMK.
awsderived
A principal with elasticfilesystem:ClientMount in the EFS file system policy can mount the file system and read all file data via NFS.
awsderived
A principal with elasticfilesystem:PutFileSystemPolicy can self-grant ClientMount and read all file data on the EFS file system.
awsderived
A principal with elasticfilesystem:ClientRootAccess can bypass POSIX root-squash and read all file data including root-owned files.
awsderived
A Redis/Valkey cluster with AuthTokenEnabled=false (or absent) or a Memcached cluster is accessible to any VPC-reachable compute resource with an inbound security group rule on the cache port (6379 Redis, 11211 Memcached) - no credential is required. Both read and write operations are permitted without authentication, enabling cache poisoning and lateral movement attacks.
awsderived
An EMR cluster whose instance profile has s3:GetObject on a data lake bucket can read all objects in that bucket.
awsderived
An identity with fsx:CreateFileSystemFromBackup on a same-account backup can restore the data to a new file system in a different VPC or AD domain, achieving lateral movement and data access within the same account.
awsderived
An identity with fsx:CreateVolumeFromBackup on an ONTAP volume backup (same account) can restore the volume to an ONTAP file system they control, achieving lateral movement and data access to the restored volume.
awsderived
IAM-effective cassandra:Select on a Keyspaces table allows full data-plane read (CQL SELECT), yielding all row data including any secret material.
awsderived
cassandra:Restore on a source table + cassandra:Create + cassandra:Select on the target keyspace permits PITR-based table copy exfiltration: attacker restores source table data to a new table they control and can read via cassandra:Select.
awsderived
cassandra:Alter on a source table to enable PITR, then cassandra:Restore + cassandra:Create + cassandra:Select on the target keyspace permits PITR exfiltration even when PITR is initially disabled. This is a two-step escalation path (POTENTIAL state).
awsderived
kinesis:GetRecords + kinesis:GetShardIterator lets a principal read raw records from the stream, enabling data exfiltration or credential harvest if records carry sensitive content.
awsderived
kinesis:RegisterStreamConsumer + kinesis:SubscribeToShard enables reading from a stream via the enhanced fan-out path (push-based), equivalent to GetRecords-based polling.
awsderived
Decrypt on the CMK protecting a store completes the key_permission gate for data reads.
awsderived
An effective Lake Formation SELECT grant on a governed table, combined with IAM permission to call an analytics service (Athena, Glue, EMR, Redshift Spectrum, SageMaker), enables reading the underlying S3 data via LF-vended credentials (lakeformation:GetDataAccess called internally by the service).
awsderived
memorydb:UpdateUser overwrites an ACL user password (CanModify on Credential); attacker with VPC reach can then authenticate and read cluster data.
awsderived
memorydb:CreateUser + memorydb:UpdateAcl creates a privileged ACL user and adds them to a cluster's ACL; with VPC reach, principal can then read all cluster data.
awsderived
Compute with confirmed VPC network reach to the cluster plus access to an ACL credential can read Redis data.
awsderived
memorydb:UpdateCluster can swap cluster's ACL to open-access; principal with VPC reach gains full data-plane access to the cluster.
awsderived
kafka-cluster:ReadData grants IAM-level consume permission from the target MSK topic, enabling data-plane read of message contents.
awsderived
An MSK Replicator reading from a source cluster with kafka-cluster:ReadData permission enables cross-cluster/cross-account data exfiltration of message contents.
awsderived
Principal with neptune-db:connect and neptune-db:ReadDataViaQuery on the cluster resource ARN can read all graph data via IAM-authenticated queries.
awsderived
Principal with neptune-db:connect and neptune-db:GetStreamRecords on the cluster resource ARN can read all graph mutations via Neptune Streams.
awsderived
Principal with CanModifyConfiguration on a Neptune cluster can disable IAM authentication to escalate to CanReadData if the cluster is publicly accessible or network-reachable.
awsderived
Principal with es:ESHttpGet / es:ESHttpHead on the domain reads indexed data via the OpenSearch REST API.
awsderived
A foreign-account principal allowed by the domain access policy reads OpenSearch data cross-account.
awsderived
qldb:SendCommand on an ALLOW_ALL-mode ledger allows the caller to run arbitrary PartiQL SELECT statements against all tables, yielding full data-plane read of all committed document revisions.
awsderived
qldb:PartiQLSelect (plus qldb:SendCommand as session gate) on a STANDARD-mode ledger's table allows the caller to read all documents from that table, yielding data-plane read scoped to the individual table.
awsderived
qldb:PartiQLHistoryFunction (plus qldb:SendCommand as session gate) on a STANDARD-mode ledger's table allows the caller to read all document revisions (full version history) from that table, yielding data-plane read scoped to the individual table with higher impact than current-state-only reads.
awsderived
rds:ModifyDBInstance or rds:ModifyDBCluster with MasterUserPassword resets the master DB password to an attacker-known value, granting superuser DB access without knowing the current password.
awsderived
Reading the RDS-managed master password secret (secretsmanager:GetSecretValue on MasterUserSecretArn) yields superuser DB access - the master credential authenticates as the DB admin user.
awsderived
rds-db:connect on a DB user ARN grants IAM database authentication - the principal can generate a 15-minute token to connect as the mapped DB user without a static password.
awsderived
rds-data:ExecuteStatement on an Aurora cluster (Serverless v1/v2 or provisioned with HttpEndpointEnabled) allows IAM-authenticated SQL execution via the RDS Data API - no DB client, VPC foothold, or static password required.
awsderived
rds:RestoreDBInstanceFromDBSnapshot or rds:RestoreDBClusterFromSnapshot with a shared or public snapshot allows a principal to restore a full database copy as the master user - gaining superuser access to all data.
awsderived
redshift-data:ExecuteStatement lets a principal run SELECT queries against the cluster via the Data API, reading tables accessible to the IAM-mapped DB user.
awsderived
A principal with secretsmanager:GetSecretValue on the Redshift ManagedAdminPassword secret can retrieve the plaintext admin DB password and connect as superuser, reading all warehouse data.
awsderived
s3:GetObject on a bucket grants full data-plane read of stored objects (SSE-S3/no-encryption path - AWS-managed decryption, no caller kms:Decrypt needed).
awsderived
s3:GetObject on a SSE-KMS bucket: read is CONDITIONAL on kms:Decrypt for the wrapping CMK. Cite credential-chains:decrypt-gates-secret-read to upgrade to ACTIVE.
awsderived
sns:Subscribe lets an attacker add their own endpoint as a subscriber and receive all messages published to the topic, including embedded secrets.
awsderived
sqs:ReceiveMessage on a queue is a data-plane read; if the queue carries credentials (ContainsSecret), credential-chains derives CanImpersonate.
awsderived
states:GetExecutionHistory returns the full event history of a Standard workflow execution including state input/output, which may contain sensitive data from the execution's data context.
awsderived
states:GetActivityTask returns the next queued task input from a Step Functions activity, exposing the execution data context to the poller - any IAM principal with this permission can dequeue tasks from the activity.
awsderived
IAM-effective timestream:Select on a Timestream table allows full data-plane read (SQL-like query), yielding all time-series records including any secret or credential material stored as measures or dimensions.
awsderived
Storage Blob Data Reader/Contributor/Owner grants effective data-plane read of ADLS Gen2 content.
azurederived
A principal that can obtain an admin or query key (via ExposesCredential) can issue search, suggest, and autocomplete queries against all indexes in the service, reading the full content of matching indexed documents.
azurederived
A principal with Search Index Data Reader or Search Index Data Contributor RBAC (Entra role) can query the search service indexes via Entra-authenticated access, without requiring API keys. This path bypasses the disableLocalAuth gate and credential extraction entirely.
azurederived
Cosmos DB Built-in Data Reader (or custom role with items/read + executeQuery) grants effective data-plane read of items and query execution.
azurederived
Data read on CMK-encrypted Cosmos DB account - BLOCKED state when the Key Vault key is revoked or disabled.
azurederived
SELECT privilege on a Unity Catalog table/schema/catalog grants data-plane read access to the underlying data.
azurederived
An attacker who can SAS-export a CMK-encrypted managed disk downloads encrypted VHD blobs; plaintext read requires decrypt on the wrapping DES key (CONDITIONAL). When the same principal also holds CanDecrypt on the DES Key Vault key the decrypt-gates-secret-read rule in credential-chains.yaml upgrades to ACTIVE.
azurederived
An attacker who can SAS-export a CMK-encrypted snapshot downloads encrypted blobs; plaintext read requires decrypt on the wrapping DES key (CONDITIONAL). When the same principal also holds CanDecrypt on the DES Key Vault key the decrypt-gates-secret-read rule in credential-chains.yaml upgrades to ACTIVE.
azurederived
An attacker who can SAS-export a PMK-encrypted or unencrypted managed disk can read the plaintext data immediately upon download (no key gate).
azurederived
An attacker who can SAS-export a PMK-encrypted or unencrypted snapshot can read the plaintext data immediately upon download (no key gate).
azurederived
A principal with CanModifyConfiguration(DES) can upgrade a CONDITIONAL(key_permission) CanReadData edge to ACTIVE by pointing the DES at an attacker-controlled Key Vault key and triggering VM lifecycle (re-encrypt under attacker key on next attach/detach).
azurederived
Redirecting an event subscription's endpoint to an attacker-controlled webhook enables reading all event payloads from that topic (event exfiltration).
azurederived
A principal with read access to an Event Grid subscription's dead-letter destination (Storage blob container) can read all failed/expired event payloads, including any credential material they contain.
azurederived
Azure Event Hubs Data Receiver role (or equivalent) grants receive (listen) access to an event hub or consumer group; event payloads may contain sensitive data → potential CanExfiltrate.
azurederived
CanDecrypt on the wrapping KV key completes CanReadData on an externally-stored, CMK-wrapped store.
azurederived
In-VNet network access to ANF volume enables NFS/SMB data-plane read (ARM volumes/read is metadata-only prerequisite).
azurederived
Admin password reset capability (CanModifyConfiguration to server config) plus network reachability to the DB endpoint yields full data-plane read of all databases.
azurederived
Entra admin assignment (CanModifyConfiguration) plus network reachability to the DB endpoint yields full data-plane read of all databases via Entra token authentication.
azurederived
Retrieving the cache access key via listKeys/action yields full data-plane read of all cached data, subject to network reachability of the Redis endpoint.
azurederived
Holding a SAS connection string with Listen rights grants data-plane receive from the scoped queue/subscription - messages may carry secrets.
azurederived
Azure Service Bus Data Receiver role (or Data Owner) grants data-plane receive from a queue or subscription; messages may carry secrets.
azurederived
servers/administrators/write lets a caller set any Entra identity (including themselves) as full DBA on all databases in the SQL server, yielding complete data-plane read and write if the SQL endpoint is network-reachable.
azurederived
managedInstances/administrators/write lets a caller set any Entra identity (including themselves) as full DBA on all MI databases, yielding complete data-plane read and write if the MI endpoint is network-reachable.
azurederived
Storage Blob Data Reader/Contributor/Owner at account scope grants data-plane read of all blob containers.
azurederived
Storage Blob Data Reader/Contributor/Owner at container scope grants data-plane read of a specific blob container.
azurederived
Storage Queue Data Reader/Message Processor grants queue message read - messages may carry SAS tokens, connection strings, or other credentials.
azurederived
Storage Table Data Reader grants table entity read - table data may contain application credentials or sensitive configuration.
azurederived
Storage File Data SMB Share Reader/Contributor grants SMB file share read access - enabling lateral movement and credential capture via shared files.
azurederived
Synapse Administrator (or db_owner in the dedicated SQL pool) can query all data in the dedicated SQL pool.
azurederived
Synapse SQL Administrator (distinct from Synapse Administrator) grants SQL-admin (db_owner) on ALL dedicated SQL pools - a legitimate, narrowly-scoped role for SQL DBAs.
azurederived
Serverless SQL pool allows querying ADLS Gen2 files directly via OPENROWSET; Synapse Administrator has db_owner (dbo) on the built-in serverless pool and can read any data the workspace MI can reach.
azurederived
bigtable.tables.readRows constitutes effective data-plane read access: the caller can stream any row from any column family in the table via the ReadRows API. For CMEK-encrypted clusters the capability is CONDITIONAL(key_permission) on the Bigtable service agent's Cloud KMS grant, not on the caller's own KMS permissions.
gcpderived
bigtable.tables.readRows on a CMEK-encrypted cluster; the Bigtable service agent (not the caller) decrypts via Cloud KMS envelope encryption - CanReadData is CONDITIONAL(key_permission) on the service agent's KMS grant and the key's ENABLED state.
gcpderived
bigtable.authorizedViews.readRows grants read access to a scoped subset of a table (row key prefix / column qualifier filtering). The caller can only read the rows/columns defined by the authorized view; access to the parent table is NOT granted. CanReadData is scoped to the AuthorizedView node.
gcpderived
A principal that can reset the root/admin DB user password on a Cloud SQL instance gains full SQL read access to all databases in that instance.
gcpderived
When a Cloud SQL instance has IAM database authentication enabled (cloudsql.iam_authentication=on), a principal with cloudsql.instances.login can authenticate to the DB using its IAM token via Cloud SQL Auth Proxy - no DB password needed.
gcpderived
A VM whose source IP falls within a Filestore NFS export range can mount the share and read (and write, if READ_WRITE) all files without any IAM check - access is purely IP-address gated. CanWriteData is emitted when accessMode is READ_WRITE; CanReadData for both READ_WRITE and READ_ONLY.
gcpderived
When a principal holds CanModifyConfiguration (file.instances.update) on a Filestore instance and uses it to add an attacker-controlled IP to the NFS export rules, the principal's VM/container gains CanReadData and (if accessMode is READ_WRITE) CanWriteData to all files on the mounted share. This rule derives the data-plane access edges from the control-plane config mutation. State is POTENTIAL because the patch must be executed and network reachability must be confirmed.
gcpderived
datastore.entities.get constitutes effective data-plane read access to Firestore/Datastore documents.
gcpderived
datastore.entities.get on a CMEK Firestore database; the Firestore Service Agent (not the caller) decrypts using its KMS grant. CanReadData state is ACTIVE if the service agent's KMS grant is confirmed, CONDITIONAL(key_permission) if the grant state is unknown, and BLOCKED if the grant is denied or the key is disabled.
gcpderived
storage.objects.get constitutes effective data-plane read access to GCS objects in the bucket (permission applies at object level but IAM bindings are bucket-scoped).
gcpderived
storage.objects.get on a CMEK bucket; the Storage service agent (not the caller) decrypts - CanReadData is CONDITIONAL(key_permission) on the service agent's KMS grant.
gcpderived
useToDecrypt on a CMEK key resolves the key_permission condition on a CanReadData edge the consuming-service rule already emitted.
gcpderived
Possession of the Redis AUTH string (retrieved via redis.instances.getAuthString) combined with in-VPC network reach to the Redis port grants full data-plane read access to all keys on the Memorystore instance.
gcpderived
When AUTH is disabled (the GCP default), any in-VPC client (Identity, Compute, Container, KubernetesWorkload) with network reachability to port 6379/6380 gains full unauthenticated Redis data-plane read access. No credential retrieval is needed.
gcpderived
A principal with compute.snapshots.useReadOnly on a shared snapshot and compute.disks.create can restore it as a disk and read all on-disk data across project boundaries.
gcpderived
A principal within the same project with compute.snapshots.useReadOnly and compute.disks.create can restore any project snapshot as a disk and read all on-disk data, escalating access to disks they don't directly have read permissions on.
gcpderived
pubsub.subscriptions.consume on a subscription is the data-plane pull action; if the subscription carries credential material, credential-chains derives CanImpersonate. Also an exfiltration path when cross-project.
gcpderived
spanner.databases.read (or spanner.databases.select) + spanner.sessions.create together constitute effective data-plane read access: the caller can open a session and execute SQL to read arbitrary rows from any table in the database.
gcpderived
cloudtasks.tasks.list + cloudtasks.tasks.fullView allow a principal to read full task bodies in a Cloud Tasks queue - the data-plane read primitive that feeds credential-chains when tasks carry credentials.
gcpderived
awsexplicit
GetRecord / BatchGetRecord reads ML feature data from a SageMaker Feature Store online store.
awsexplicit
Effective data-plane query access from bigquery.tables.getData + bigquery.jobs.create combined.
gcpexplicit
Exposure sites that emit CanReadData 117
GetFindingV2.findingDetails / resource / resourceOwnerAccount
awshigh
Configured AppFlow destination records
awscritical
GetQueryResults.ResultSet.Rows[].Data[].VarCharValue
awscritical
StartRestoreJob recovery point -> restored resource data
awscritical
bedrock-runtime InvokeModel/Converse request body and response body
awscritical
cloudfront-keyvaluestore:GetKey.Value
awscritical
LookupEvents.Events[].CloudTrailEvent (requestParameters / responseElements / additionalEventData)
awscritical
GetQueryResults.QueryResultRows[].<field>
awscritical
logs:FilterLogEvents.events[].message
awscritical
logs:GetQueryResults.results[][].{field,value}
awscritical
GetPackageVersionAsset.asset
awscritical
GetFile.fileContent
awscritical
cognito-sync:ListRecords.Records[].Value
awshigh
BatchGetResourceConfig.baseConfigurationItems[].configuration / supplementaryConfiguration
awscritical
SelectResourceConfig.Results[]
awscritical
SelectAggregateResourceConfig.Results[]
awscritical
ListIndicators.Indicators[].IndicatorDetail
awshigh
MongoDB find/aggregate response documents
awscritical
Scan.Items[].<attribute-name>
awscritical
dynamodbstreams:GetRecords.Records[].dynamodb.NewImage / Records[].dynamodb.OldImage
awscritical
GetSnapshotBlock.BlockData
awscritical
GetDownloadUrlForLayer.downloadUrl -> layer tar contents
awscritical
Mounted EFS file bytes
awscritical
Redis GET/MGET/SCAN or Memcached get response value
awscritical
Mounted FSx file or object bytes (SMB/NFS/Lustre/ONTAP/OpenZFS)
awscritical
GetFindings.Findings[]
awshigh
GetIPSet.Location -> S3 object body
awshigh
GetThreatIntelSet.Location -> S3 object body
awshigh
ListFindings.findings[]
awshigh
GetCisScanReport.url -> PDF/CSV report
awshigh
CQL SELECT result rows
awscritical
GetRecords.Records[].Data
awscritical
GetWorkUnitResults.ResultStream
awscritical
GetFindings.findings[].classificationDetails.result.sensitiveData / resourcesAffected
awshigh
Redis OSS GET/MGET/SCAN response value
awscritical
AMQP/JMS/STOMP/MQTT message body and headers
awscritical
Kafka consumer record key/value/headers
awscritical
Neptune HTTPS Gremlin/SPARQL/openCypher query result body
awscritical
Neptune Streams records
awscritical
OpenSearch _search/_mget response _source fields
awscritical