I Tried Automatically Detecting AI Assets with AWS Security Hub's New "AI Inventory" Feature
This page has been translated by machine translation. View original
Introduction
On July 14, 2026, an AI Inventory feature was added to AWS Security Hub.
As the use of AI workloads spreads across an organization, it becomes difficult to keep track of where and which AI services and models are being used.
AI Inventory is the feature responsible for visualizing these AI assets. It is included in Security Hub Essentials, and in environments where Security Hub v2 is enabled, it can be used with no additional setup and no additional cost. AI assets are automatically cataloged using the following three detection methods.
| Detection method | Source | Examples of target AI assets |
|---|---|---|
| Managed | AWS Config | Bedrock, Bedrock AgentCore, SageMaker |
| Self-hosted | Inspector SBOM | AI frameworks on EC2/containers |
| External AI dependencies | GuardDuty DNS | Communication to external AI APIs (OpenAI, etc.) |
In this article, I verify "what becomes visible with no additional setup" in a real environment. I focus mainly on the results of managed detection, and also summarize how to access them through the CLI/API.
Verification Details
Verification Environment
- Security Hub v2 enabled (enabled on: 2026-07-07. Note that Security Hub v1 has been enabled since 2023-01-12)
- AWS Config enabled (recording: true)
- Amazon Bedrock in use (via SageMaker Unified Studio)
- Amazon Inspector: only ECR scanning enabled (EC2 scanning disabled)
- Amazon GuardDuty enabled (DNS logs enabled, AI Protection disabled)
The region is ap-northeast-1. This article is built entirely on CLI/API output and does not include console screenshots. The commands below were all run against the same region.
Overview of AI Inventory
First, I used get-resources-statistics-v2 to check which categories Security Hub v2 classifies resources into.
aws securityhub get-resources-statistics-v2 \
--group-by-rules '[{"GroupByField": "ResourceCategory"}]' \
--region ap-northeast-1
The results were as follows.
| Category | Number of resources |
|---|---|
| Identity, Network, Compute, Storage, etc. | (omitted) |
| AI/ML | 11 |
11 resources were automatically classified into the AI/ML category. This category can also be checked by applying the ResourceCategory=AI/ML filter on the console's Resources screen.
Detection of Managed AI Services
I checked which resource types make up the 11 resources in the AI/ML category.
aws securityhub get-resources-statistics-v2 \
--group-by-rules '[{
"Filters": {
"CompositeFilters": [{
"StringFilters": [{
"FieldName": "ResourceCategory",
"Filter": {"Comparison": "EQUALS", "Value": "AI/ML"}
}]
}]
},
"GroupByField": "ResourceType"
}]' \
--region ap-northeast-1
They consisted of two resource types.
| Resource type | Count |
|---|---|
| AWS::Bedrock::ApplicationInferenceProfile | 10 |
| AWS::OpenSearchServerless::SecurityPolicy | 1 |
The 10 AWS::Bedrock::ApplicationInferenceProfile resources were inference profiles automatically created by SageMaker Unified Studio. The models used by each profile are as follows. Of the 10, 4 are cross-region profiles, so multi-region inference configurations are also visualized.
| # | Model used |
|---|---|
| 1 | anthropic.claude-sonnet-4-20250514-v1:0 (cross-region x8) |
| 2 | amazon.titan-text-express-v1 |
| 3 | amazon.titan-embed-text-v2:0 |
| 4 | amazon.titan-embed-text-v1 |
| 5 | amazon.rerank-v1:0 |
| 6 | amazon.nova-reel-v1:0 |
| 7 | amazon.nova-pro-v1:0 (cross-region x6) |
| 8 | amazon.nova-micro-v1:0 (cross-region x6) |
| 9 | amazon.nova-lite-v1:0 (cross-region x6) |
| 10 | amazon.nova-canvas-v1:0 |
The remaining one was AWS::OpenSearchServerless::SecurityPolicy. It is a security policy for OpenSearch Serverless used by Bedrock IDE. In this environment, not only direct inference and training resources but also security policies for infrastructure related to AI workloads were included in the AI/ML category.
These managed resources are detected automatically via AWS Config. In fact, tracking the change in the number of AI/ML resources showed that resources were backfilled the day after Security Hub v2 was enabled. I retrieved the trend with get-resources-trends-v2.
aws securityhub get-resources-trends-v2 \
--start-time "2026-07-07T00:00:00Z" \
--end-time "2026-07-14T23:59:59Z" \
--filters '{
"CompositeFilters": [{
"StringFilters": [{
"FieldName": "resource_category",
"Filter": {"Comparison": "EQUALS", "Value": "AI/ML"}
}]
}]
}' \
--region ap-northeast-1
| Date | Number of AI/ML resources |
|---|---|
| 2026-07-07 | 0 |
| 2026-07-08 | 11 |
| 2026-07-09 to 14 | 11 (stable) |
On the day of enablement (7/7) there were 0, but the next day (7/8) all 11 were registered at once, and the number remained stable afterward. In this environment, I was able to confirm that resources recorded in Config at the time Security Hub v2 was enabled are automatically cataloged the next day.
Each resource includes the following information through get-resources-v2.
| Field | Content |
|---|---|
| ResourceId | ARN |
| ResourceCategory | AI/ML |
| ResourceType | AWS::Bedrock::ApplicationInferenceProfile, etc. |
| ResourceName | Resource name |
| ResourceCreationTimeDt | Resource creation date and time |
| ResourceDetailCaptureTimeDt | Config capture date and time |
| FindingsSummary | Related Findings (currently an empty array) |
| ResourceTags | Tag information |
| ResourceConfig | AWS Config configuration information |
Detection of Self-hosted AI Workloads
Self-hosted detection is a mechanism that detects AI frameworks on EC2 instances and container images. Its source is the SBOM (Software Bill of Materials) generated by Amazon Inspector.
In this environment, nothing was detected by this method. The images targeted by ECR scanning did not contain any AI frameworks. Also, because EC2 scanning is disabled, workloads on EC2 were outside the scope of this verification.
Detection of External AI Dependencies
External AI dependency detection is a mechanism that uses Amazon GuardDuty DNS telemetry as its source to detect communication to external AI APIs such as OpenAI.
In this environment, nothing was detected by this method either. GuardDuty DNS logs are enabled, but no communication from EC2 to external AI APIs occurred in the first place. Note that GuardDuty AI Protection (a threat detection feature for AI workloads) is disabled in this environment and is planned to be verified in the next article.
AI Security Best Practices Standard
Along with AI Inventory, a new security standard called AI Security Best Practices has been added.
{
"StandardsArn": "arn:aws:securityhub:::standards/ai-security-best-practices/v/1.0.0",
"Name": "AI Security Best Practices v1.0.0",
"EnabledByDefault": false
}
This standard consists of 31 controls (8 for Bedrock, 23 for SageMaker). Because EnabledByDefault is false, it must be explicitly enabled to use it.
Among the HIGH severity controls, on the Bedrock side there is BedrockAgentCore.1 (configure the AgentCore runtime in VPC network mode). This control is also included in FSBP (AWS Foundational Security Best Practices), so it is evaluated via FSBP even if AI Security Best Practices is not enabled. On the SageMaker side, SageMaker.1 (disable direct internet access for notebooks) and others apply.
Bedrock-related controls (8)
| ID | Title | Severity |
|---|---|---|
| Bedrock.1 | KMS encryption for data sources | MEDIUM |
| BedrockAgentCore.1 | VPC network mode for runtimes | HIGH |
| BedrockAgentCore.2 | Inbound authentication for gateways | HIGH |
| BedrockAgentCore.3 | KMS encryption for memory | MEDIUM |
| BedrockAgentCore.4 | KMS encryption for gateways | MEDIUM |
| BedrockAgentCore.5 | Network mode for custom browsers | HIGH |
| BedrockAgentCore.6 | Session recording for custom browsers | MEDIUM |
| BedrockAgentCore.7 | VPC settings for code interpreters | HIGH |
SageMaker-related controls (23)
| ID | Title | Severity |
|---|---|---|
| SageMaker.1 | Internet access for notebooks | HIGH |
| SageMaker.2 | Custom VPC for notebooks | HIGH |
| SageMaker.3 | Root access for notebooks | HIGH |
| SageMaker.4 | Initial instance count for endpoints | MEDIUM |
| SageMaker.5 | Network isolation for models | MEDIUM |
| SageMaker.8 | Supported platforms for notebooks | MEDIUM |
| SageMaker.9 | Inter-container encryption for data quality jobs | MEDIUM |
| SageMaker.10 | Inter-container encryption for explainability jobs | MEDIUM |
| SageMaker.11 | Network isolation for data quality jobs | MEDIUM |
| SageMaker.12 | Network isolation for model bias jobs | MEDIUM |
| SageMaker.13 | Inter-container encryption for model quality jobs | MEDIUM |
| SageMaker.14 | Network isolation for monitoring schedules | MEDIUM |
| SageMaker.15 | Inter-container encryption for model bias jobs | MEDIUM |
| SageMaker.16 | VPC private registry for models | MEDIUM |
| SageMaker.17 | Encryption for Feature Group offline store | MEDIUM |
| SageMaker.18 | Encryption for Feature Group online store | MEDIUM |
| SageMaker.19 | VPC registry for multi-container pipelines | MEDIUM |
| SageMaker.20 | Network isolation for explainability jobs | HIGH |
| SageMaker.21 | KMS encryption for notebooks | MEDIUM |
| SageMaker.22 | Inter-container encryption for monitoring | MEDIUM |
| SageMaker.23 | Storage encryption for inference experiments | MEDIUM |
| SageMaker.24 | Data encryption for inference experiments | MEDIUM |
| SageMaker.25 | Network isolation for model quality jobs | HIGH |
Access via CLI/API
Through this verification, I found no operations in the Security Hub CLI/API dedicated to AI Inventory. You access it by combining get-resources-v2 with the ResourceCategory=AI/ML filter.
aws securityhub get-resources-v2 \
--filters '{
"CompositeFilters": [{
"StringFilters": [{
"FieldName": "ResourceCategory",
"Filter": {"Comparison": "EQUALS", "Value": "AI/ML"}
}]
}]
}' \
--region ap-northeast-1
Finding Association
The FindingsSummary field of each resource is linked to related Findings, so you can review the AI asset inventory and security assessment in the same Security Hub.
In this environment, the FindingsSummary of all AI/ML resources was an empty array. I could not confirm any situation where a Finding is linked to a resource registered in AI Inventory. Possible reasons are that the AI Security Best Practices standard has not been enabled, and that no control targeting ApplicationInferenceProfile can currently be identified.
Note that there was one Bedrock-related Finding. It was a Finding for BedrockAgentCore.1 (a control included in both FSBP and AI Security Best Practices), and the target resource was AWS::BedrockAgentCore::Runtime. However, this resource type is not registered in AI Inventory.
I summarized the prerequisites for the three detection methods and the results in this environment.
| Detection method | Source | Prerequisites | Result in this environment |
|---|---|---|---|
| Managed | AWS Config | Config enabled + AI/ML services in use | ✅ 11 detected |
| Self-hosted | Inspector SBOM | Inspector EC2/ECR scanning enabled + AI frameworks present | ⚠️ Not applicable (nothing detected in ECR targets, EC2 not verified) |
| External AI dependencies | GuardDuty DNS | GuardDuty enabled + communication from EC2 to external AI APIs exists | ⚠️ Not applicable (no such communication) |
Summary
I verified the AI Inventory of AWS Security Hub and confirmed that in environments where Security Hub v2 is enabled, AI assets are cataloged with no additional setup and no additional cost. In this environment, 11 resources, including Bedrock inference profiles, were registered via AWS Config the day after enablement. No AI frameworks were detected in the images targeted by ECR scanning, and EC2 was not verified. Also, because there was no relevant communication to external AI APIs, external AI dependencies were not detected either. Next time, I will verify threat detection for AI workloads with GuardDuty AI Protection.
