| Internet-Draft | CRIT | March 2026 |
| Langton | Expires 22 September 2026 | [Page] |
This document specifies the Cloud Resource Identifier Templates (CRIT) format. A CRIT record provides a machine-readable, parameterised template for locating cloud-native resources affected by a known vulnerability. CRITs do not define cloud resource identifier schemas; those are defined normatively by each cloud provider. CRITs define a variable system for expressing partially-known or consumer-resolved values within those provider-defined schemas, together with temporal, remediation, and detection metadata sufficient to determine exposure status and drive remediation workflows.¶
Each CRIT record is bound to exactly one vulnerability identifier. Cross-provider and multi-resource-type coverage of a single vulnerability is expressed as a set of CRIT records sharing the same vulnerability identifier, each independently specifying the provider-specific fix details, propagation mechanism, and detection strategy applicable to that resource type.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 22 September 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.¶
This document specifies the Cloud Resource Identifier Templates (CRIT) format, a machine-readable schema for describing cloud infrastructure resources affected by known vulnerabilities. CRIT provides parameterised templates over provider-native identifier schemas, together with fix propagation semantics, exposure window computation rules, and detection metadata sufficient to drive automated remediation workflows.¶
CPE [CPE23] and PURL [PURL] model the vulnerable entity as a build-from-source artifact — something with a static name, a version string, and a build-time identity that persists across deployment. Cloud infrastructure resources do not have these properties. An RDS instance, an EKS cluster, and a Cloudflare Worker are each identified by provider-native runtime identifiers whose components include consumer-specific variables (account identifiers, region codes, resource IDs) that do not exist until the resource is deployed. No package name, version string, or source repository URL applies.¶
CRIT defines a parameterised template system over these provider-native identifier schemas, together with fix propagation semantics, exposure window computation rules, and detection metadata. It integrates with CVEListv5 ([CVEListv5]) ADP containers and OSV schema ([OSV-Schema]) using their existing extension mechanisms. Risk-based prioritisation signals such as EPSS ([EPSS]) remain complementary inputs to consumer tooling.¶
CPE and PURL both assume the vulnerable entity is produced by a build process — compiled from source, packaged into a distributable artifact, and deployed by installing that artifact. This assumption holds for operating systems, libraries, and application binaries. It does not hold for cloud infrastructure resources.¶
A cloud resource is instantiated by a provider API call, not by installing a package. It is identified by a provider-native runtime identifier — an ARN, an Azure Resource ID, a GCP Resource Name, an OCID, or a Cloudflare Locator — that is assigned at creation time and contains components specific to the consumer's account, region, and deployment. These identifiers have no analogue in any package registry. There is no source repository, no version string, and no build manifest.¶
Representing a cloud resource as a pkg:generic/ PURL, a
synthesised CPE string, or a custom PURL type does not resolve this
gap. The PURL specification [PURL] defines no
registered type for cloud infrastructure resources. The
pkg:cloud/ convention observed in the OSV ecosystem (see
Section 9.3.1) is not a registered PURL type.
Regardless of identifier scheme, the resulting string carries none
of the information required to determine whether a specific deployed
resource is affected: the deployment date relative to the fix, the
propagation mechanism, whether the consumer has taken the required
action, or whether a configuration change has since been reverted.¶
For package vulnerabilities, affected status is determined by a version comparison: if the installed version falls within the affected range, the package is vulnerable. Cloud resources have no equivalent comparison. Affected status is a function of four factors that must be evaluated simultaneously:¶
No static identifier carries these factors. A CPE or PURL string identifies what the resource is; it does not encode how the fix reaches the resource or whether a specific instance has been remediated. Each consumer tool that evaluates cloud resource exposure must independently model these semantics.¶
Discovery additionally requires interpolation. The identifier for a specific resource instance contains consumer-specific variables — account, region, resource ID — that must be substituted at resolution time. A single CRIT template represents all instances of a resource type; resolution produces the concrete identifier for a specific instance.¶
CRIT addresses the identifier gap by defining a parameterisation layer over provider-native identifier schemas. A CRIT record does not invent a new identifier format. It parameterises the identifier format the provider already defines, expressing consumer-specific and context-dependent values as variable slots within the provider's own schema.¶
Each CRIT record carries the fix propagation type, shared responsibility model, temporal metadata, remediation actions, and detection queries required for a consumer to evaluate exposure and drive remediation for a specific vulnerability on a specific cloud resource type. The record is bound to exactly one vulnerability identifier. Cross-provider and multi-resource-type coverage of a single vulnerability is expressed as a set of records sharing the same vulnerability identifier, each independently specifying the provider-specific semantics.¶
CRIT does not replace CVE, CPE, or PURL. It complements them by providing the cloud resource scope, fix propagation semantics, and exposure window computation that those schemes do not address.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The following terms are used throughout this document.¶
ec2,
kubernetes_engine, waf).¶
instance,
cluster, waf_ruleset).¶
aws_arn, azure_resource_id,
gcp_resource_name, cloudflare_locator, or
oracle_ocid.¶
{field-name}.¶
{field-name=*}.¶
{field-name=value}.¶
{field-name=}.¶
CRITs operate as a parameterisation layer over externally-defined resource identifier schemas. The authoritative definition of each identifier format is owned by its respective provider:¶
| Provider | Identifier Type | Normative Reference |
|---|---|---|
| AWS | Amazon Resource Name (ARN) | [AWS-ARN] |
| Azure | Azure Resource ID | [Azure-ResourceID] |
| GCP | GCP Resource Name | [GCP-ResourceName] |
| Cloudflare | Cloudflare API Locator | [CF-API] |
| Oracle | Oracle Cloud ID (OCID) | [OCI-OCID] |
This specification does not alter, extend, or redefine any provider identifier schema. A conformant CRIT template MUST produce a string that, after variable resolution, is a valid identifier according to the applicable provider schema.¶
A CRIT template MUST NOT use pkg:generic/ or any PURL
type that implies a build-from-source artifact to represent a cloud
infrastructure resource. Such usage introduces ambiguous semantics in tooling
designed around the build-artifact assumption and is explicitly out of scope for
this specification.¶
This specification does not cover:¶
A CRIT record is a template engine for cloud-native resources: discovery requires interpolation of consumer-specific variables at resolution time, which no static identifier can express.¶
A CRIT template string is a provider identifier format with zero or more variable slots. Each slot expresses one of four states. The choice of state is normative: it is determined by the semantics of the field for the given resource type, not by what the consumer happens to know.¶
Variable slots are delimited with { and }. The content
within the delimiters is a slot descriptor with the following ABNF ([RFC5234]) grammar:¶
slot = "{" slot-descriptor "}"
slot-descriptor = named-var / wildcard / empty-marker / hardcoded
named-var = field-name
wildcard = field-name "=" "*"
empty-marker = field-name "="
hardcoded = field-name "=" literal-value
field-name = 1*( ALPHA / DIGIT / "-" / "_" )
literal-value = 1*( ALPHA / DIGIT / "-" / "_" / "." / ":" )
The characters { and } are reserved as slot delimiters and
MUST NOT appear in literal-value or as literal
characters within a template string outside of slot expressions.¶
Syntax: {field-name}¶
The slot represents a value the consumer MUST supply at resolution time. A consumer MUST NOT treat a named variable as implying any default value. A consumer MUST substitute a concrete value before using the template as a live identifier.¶
Examples: {region}, {account}, {resource-id}.¶
Syntax: {field-name=*}¶
The slot represents "any value" and is used for inventory matching across a population of resources. A wildcard MUST NOT be used as a live identifier against a provider API; it is a query pattern only. A consumer MAY expand a wildcard by enumerating known values from their inventory. A consumer MUST record when a wildcard remains unexpanded, as an unexpanded wildcard indicates incomplete inventory coverage.¶
Examples: {region=*} matches all regions; {account=*}
matches all accounts.¶
Syntax: {field-name=}¶
The slot represents a field that is structurally present in the provider schema but not applicable for this resource type. The resolved value is the empty string. This MUST NOT be confused with an unknown value (use named variable) or a match-all (use wildcard). It is a precise semantic statement that the field does not apply to this resource type.¶
Example: GCP global resources carry no zone; the zone slot is expressed as
{zone=}.¶
Syntax: {field-name=literal-value}¶
The slot represents a fixed value determined by the provider schema for this resource type. A CRIT producer MUST use hardcoded state only for values normatively fixed by the provider schema. A consumer MUST use the hardcoded value as-is and MUST NOT substitute an alternative value.¶
Example: {region=us-east-1} for AWS IAM resources, which the AWS
ARN schema requires to always be us-east-1.¶
A CRIT producer MUST select the slot state according to the following precedence:¶
A CRIT producer MUST NOT use wildcard as a fallback when the correct state is unknown. An unknown consumer-specific value is always a named variable; wildcard is a deliberate semantic choice meaning "enumerate all".¶
All field names are lowercase snake_case. The schema is expressed in JSON.
Unless stated otherwise, absent optional fields are interpreted as null. All
date values MUST be expressed in ISO 8601 [ISO8601] full-date format
(YYYY-MM-DD) in UTC. Time-of-day components SHOULD be
omitted unless a provider advisory specifies intraday precision is meaningful.¶
{
"vectorString": "<crit-vector>",
"vuln_id": "<string>",
"provider": "<enum>",
"service": "<string>",
"resource_type": "<string>",
"resource_lifecycle": "<enum>",
"shared_responsibility": "<enum>",
"vex_status": "<enum>"
}
| Field | Required | Type | Description |
|---|---|---|---|
| vectorString | REQUIRED | string | Canonical CRIT vector string computed from record fields. See Section 4.1.2. |
| vuln_id | REQUIRED | string | The vulnerability this record relates to. MUST match exactly one vulnerability per record. |
| provider | REQUIRED | enum | One of: aws, azure, gcp, cloudflare, oracle. |
| service | REQUIRED | string | Provider service key (e.g., lambda, aks, cloud_sql). |
| resource_type | REQUIRED | string | Specific resource type within the service (e.g., function, cluster, instance). |
| resource_lifecycle | REQUIRED | enum | See Section 4.4.1. |
| shared_responsibility | REQUIRED | enum | See Section 4.4.2. |
| vex_status | REQUIRED | enum | See Section 4.8. |
The tuple (vuln_id, provider, service, resource_type) constitutes
the natural key of a CRIT record. Within a conformant corpus, no two records
MAY share the same natural key. A producer MUST
enforce this uniqueness constraint before emitting records.¶
When a single vulnerability affects multiple resource types within the same service,
or the same resource type across multiple providers, the correct
representation is multiple CRIT records each with a distinct natural key and
independently specified fix version, propagation mechanism, and detection
entries. The vuln_id field is the join key allowing a consumer to
retrieve the complete set of records for a given vulnerability.¶
Example: a Kubernetes vulnerability affecting EKS, AKS, and GKE yields three records:¶
(CVE-2024-XXXX, aws, eks, cluster)¶
(CVE-2024-XXXX, azure, aks, cluster)¶
(CVE-2024-XXXX, gcp, gke, cluster)¶
The natural key components are embedded in the CRIT vector string:
provider as the CP metric and vuln_id,
service, resource_type as the three positional
qualifiers. The vectorString is therefore a canonical
single-string encoding of the record's natural key combined with
its classification state.¶
The CRIT vector string is a compact, deterministic, human-readable encoding of a record's classification and identity fields. Its format is modelled on CVSS vector strings: a versioned prefix followed by slash-delimited metric-value pairs and a qualifier section.¶
The ABNF ([RFC5234]) grammar is:¶
crit-vector = prefix "/" metrics "#" qualifiers
prefix = "CRITv" semver
semver = 1*DIGIT "." 1*DIGIT "." 1*DIGIT
[ "-" 1*(ALPHA / DIGIT / ".") ]
metrics = metric *("/" metric)
metric = metric-key ":" metric-value
metric-key = 2ALPHA
metric-value = 1*(ALPHA / DIGIT)
qualifiers = qual-value ":" qual-value ":" qual-value
qual-value = 1*(ALPHA / DIGIT / "-" / "_" / ".")
¶
Example:¶
CRITv0.2.0/CP:AW/VS:FX/FP:RR/SR:CA/RL:SC/EV:T/PP:1719792000/SA:1514764800#CVE-2024-6387:ec2:instance¶
A conformant CRIT vector string MUST include all
registered metrics listed below. Registered metrics
MUST appear in the canonical order defined by this
section. A producer MAY append additional
metrics after the registered set and before the #
delimiter; a consumer MUST ignore unknown metric
keys without error.¶
Table 1: Cloud Provider (CP)¶
| Value | Code | Description |
|---|---|---|
| aws | AW | Amazon Web Services |
| azure | MA | Microsoft Azure |
| gcp | GC | Google Cloud Platform |
| cloudflare | CF | Cloudflare |
| oracle | OC | Oracle Cloud Infrastructure |
Table 2: VEX Status (VS)¶
| Value | Code | Description |
|---|---|---|
| affected | AF | Resource type is affected; no fix available or not applied. |
| fixed | FX | Provider fix is available; provider_fix_date is set. |
| not_affected | NA | Resource type is not affected or vulnerability is not reachable. |
| under_investigation | UI | Provider has acknowledged but not confirmed status. |
Table 3: Fix Propagation (FP)¶
| Value | Code | Description |
|---|---|---|
| automatic | AU | Provider applies fix transparently. |
| config_change | CC | Configuration change on existing resource. |
| opt_in | OI | Fix available but applies to non-default option. |
| version_update | VU | Consumer must update pinned version or runtime. |
| redeploy | RD | Consumer must redeploy using existing configuration. |
| rebuild_and_redeploy | RR | Consumer must rebuild artifact with updated base. |
| destroy_recreate | DC | Resource must be destroyed and recreated. |
| rolling_replace | RL | Fleet replacement with coexistence during transition. |
| no_fix_available | NF | No vendor fix has been released. |
Table 4: Shared Responsibility (SR)¶
| Value | Code | Description |
|---|---|---|
| provider_only | PO | Provider is solely responsible for remediation. |
| customer_action_required | CA | Provider fix exists but customer action is needed. |
| customer_only | CO | Customer is solely responsible. |
| shared | SH | Remediation requires coordinated provider and customer action. |
Table 5: Resource Lifecycle (RL)¶
| Value | Code | Description |
|---|---|---|
| ephemeral | EP | Short-lived; replaced rather than patched. |
| stateful_managed | SM | Long-lived; provider manages OS and runtime. |
| stateful_customer | SC | Long-lived; customer manages OS and runtime. |
| config_only | CF | No runtime; configuration-only resource. |
| global_control_plane | GC | Shared control-plane infrastructure. |
Table 6: Existing Deployments Remain Vulnerable (EV)¶
| Value | Code | Description |
|---|---|---|
| true | T | Resources deployed before the fix remain vulnerable. |
| false | F | Provider fix applies retroactively to existing resources. |
Table 7: Vulnerability Published Date (PP)¶
Unix epoch timestamp (integer seconds). REQUIRED.
The date the vulnerability was publicly disclosed. Corresponds to
temporal.vuln_published_date converted to epoch seconds.¶
Table 8: Service Available Date (SA)¶
Unix epoch timestamp (integer seconds). REQUIRED.
The date the cloud service became generally available. Corresponds
to temporal.service_available_date converted to epoch
seconds.¶
Qualifiers appear after the # delimiter as positional
colon-separated values with no metric keys. All three qualifiers
are REQUIRED and MUST appear in the
following fixed order:¶
| Position | Field | Description |
|---|---|---|
| 1 | vuln_id | Vulnerability identifier (e.g., CVE-2024-6387). |
| 2 | service | Provider service key. |
| 3 | resource_type | Provider resource type key. |
A conformant CRIT producer:¶
vectorString from the record's own fields.¶
# delimiter.¶
A conformant CRIT consumer:¶
vectorString missing any registered metric.¶
vectorString where registered metrics appear out of canonical order.¶
The CRIT vector string is a lossy encoding. It carries 12 fields from the full CRIT record; the remaining fields are not representable in the vector and are discarded during conversion.¶
Fields carried in the vector string:¶
Fields not carried in the vector string:¶
template and template_format — recoverable
via dictionary lookup from the (provider, service,
resource_type) tuple embedded in the vector qualifiers and CP
metric.¶
vulnerability_introduced_date,
provider_acknowledged_date,
provider_fix_date,
customer_deadline_date, and related fields. A producer
MAY include these as additional metrics appended
after the registered set.¶
version_type,
comparison, version, build_date,
auto_upgrade, note.¶
remediation_actions array including step-by-step
instructions, downtime estimates, and compensating control
flags.¶
detections array
including detection queries, query languages, detection phases,
and pending reasons.¶
advisory_id,
advisory_url.¶
A consumer MUST NOT treat a vectorString
as a complete record representation. A consumer
MUST use the full JSON record for operational
decisions that require fields not carried in the vector, including
but not limited to: deploying detection queries, executing
remediation actions, evaluating fix version comparisons, and
computing exposure windows.¶
| Field | Required | Type | Description |
|---|---|---|---|
| template | REQUIRED | string | Parameterised identifier string. After all named variables are substituted, the result MUST be a valid provider identifier for the declared template_format. |
| template_format | REQUIRED | enum | One of: aws_arn, azure_resource_id, gcp_resource_name, cloudflare_locator, oracle_ocid. |
These fields collectively define the bounds of exposure. No single field closes the exposure window for a given consumer resource; see Section 7 for the formal computation.¶
{
"temporal": {
"service_available_date": "<date>",
"vulnerability_introduced_date": "<date>",
"vulnerability_introduced_date_estimated": "<boolean>",
"vuln_published_date": "<date>",
"provider_acknowledged_date": "<date>",
"provider_fix_date": "<date>",
"customer_deadline_date": "<date>",
"customer_deadline_source": "<enum>"
}
}
service_available_date (OPTIONAL):vulnerability_introduced_date (OPTIONAL):vuln_published_date by months or years. When present,
MUST be used as W_start of the exposure window.¶
vulnerability_introduced_date_estimated (OPTIONAL):true, vulnerability_introduced_date is an
estimate. Consumers SHOULD surface this flag in
exposure window reporting.¶
vuln_published_date (REQUIRED):datePublished field.¶
provider_acknowledged_date (OPTIONAL):provider_fix_date (OPTIONAL):customer_deadline_date (OPTIONAL):customer_deadline_source (OPTIONAL):cisa_kev, pci_dss, hipaa,
sox, internal_policy, other.
REQUIRED when customer_deadline_date
is present.¶
The resource_lifecycle field characterises the operational behaviour
of the resource type with respect to data durability and replacement. This is
a property of the resource type, not of any specific consumer deployment.¶
| Value | Meaning |
|---|---|
| ephemeral | No durable state; can be replaced without data concern. Examples: Lambda functions, containers, serverless workers. |
| stateful_managed | Provider manages data durability but replacement is disruptive. Examples: RDS, ElastiCache, Cosmos DB, Cloud SQL. |
| stateful_customer | Customer owns data migration entirely. Examples: EBS-backed EC2, self-managed databases on compute. |
| config_only | Pure configuration with no application data. Examples: IAM roles, security groups, WAF rules, DNS records. |
| global_control_plane | Globally scoped; changes propagate with eventual consistency. Examples: CloudFront, Route53, GCP global forwarding rules. |
For package vulnerabilities, remediation status is largely derivable from a version comparison: if the installed version is at or above the fixed version, the package is remediated. Cloud resources have no equivalent. There is no installed version to query. A fix becoming available at the provider level does not mean any running resource is remediated. Whether a specific resource is exposed depends on when it was deployed, what action the consumer has taken since, and how the fix propagates to existing resources.¶
Some fixes apply automatically to all existing resources regardless of
deployment date. Most do not. A resource deployed before the fix date under
a rebuild_and_redeploy propagation type is still fully exposed the
day after provider_fix_date. A resource of the same type deployed
the day after is clean. The two resources are indistinguishable by version
string -- because neither has one.¶
existing_deployments_remain_vulnerable makes this distinction
normative and machine-readable. It cannot be derived from a version
comparison.¶
fix_propagation (REQUIRED):existing_deployments_remain_vulnerable (REQUIRED):true, resources deployed before
provider_fix_date remain in the exposure window unless
an explicit consumer action has been taken. MUST
be false only when fix_propagation is
automatic AND shared_responsibility is
provider_only.¶
Fix propagation enum values:¶
| Value | Meaning | Typical Consumer Action |
|---|---|---|
| automatic | Provider applies the fix transparently to all existing resources. | Verify fix is active; no operational change required. |
| config_change | A configuration change on the existing resource is sufficient. | Apply the change via API, console, or IaC. |
| opt_in | A fix exists but applies to a non-default option. | Enable the option; update IaC defaults. |
| version_update | Update a pinned version, runtime, or dependency reference. | Update version reference; trigger redeployment if required. |
| redeploy | Redeploy using the existing configuration. | Trigger redeployment. |
| rebuild_and_redeploy | Rebuild the artifact with updated base or patched dependencies, then redeploy. | Update base image, rebuild, push, redeploy. |
| destroy_recreate | The resource MUST be destroyed and recreated. In-place upgrade not supported. | Back up state if applicable, destroy, recreate at fixed version. |
| rolling_replace | Fleet or cluster replacement; old and new instances coexist during transition. | Trigger rolling update; monitor fleet until 100% replacement. |
| no_fix_available | Provider has not released a fix. provider_fix_date MUST be absent. |
Apply compensating controls; monitor advisory. |
remediation_actions is an ordered array. The first entry is the
primary recommended path. A consumer tool SHOULD present
actions in declared sequence order.¶
| Field | Required | Description |
|---|---|---|
| sequence | REQUIRED | 1-based ordering index. MUST be unique and contiguous within the array starting at 1. |
| type | REQUIRED | One of the fix_propagation enum values. |
| title | REQUIRED | Short imperative description suitable for a task or ticket title. |
| description | REQUIRED | Step-by-step instructions sufficient for an engineer to execute without additional research. SHOULD include CLI invocations or IaC equivalents where applicable. |
| provider_guidance_url | OPTIONAL | Direct link to the provider's advisory or remediation documentation. |
| auto_remediable | REQUIRED | Whether a conformant consumer tool MAY automate this action without human approval. |
| requires_downtime | REQUIRED | Whether this action causes a service interruption. |
| stateful_impact | REQUIRED | One of: none, backup_recommended, backup_restore_required, data_migration_required. |
| estimated_downtime_range_seconds | OPTIONAL | Object with min and max integer bounds. REQUIRED when requires_downtime is true. Informative only. |
| compensating_control | REQUIRED | When true, this action reduces exploitability but does not fully remediate. A record with only compensating actions MUST have vex_status of affected, not fixed. |
Cloud resources do not use package-style versioning. There is no semver string to compare against a fixed bound, no registry entry to look up, and no universal version format that applies across providers or even across services within a single provider. "Version" for a cloud resource might mean an engine release string, a runtime build date, a Kubernetes minor version within a release channel, a container image digest, or a platform image creation date -- depending on the service. In some cases, such as Cloudflare Workers, there is no consumer-visible version at all; only a platform build date.¶
The provider_fix_version field is a discriminated object whose
structure is determined by the version_type discriminator. Each
version_type value defines a specific set of fields and a
comparison operator that together give a consumer everything needed
to evaluate whether a deployed resource meets the fix threshold.¶
| Field | Required | Description |
|---|---|---|
| version_type | REQUIRED | Discriminator. Determines which additional fields are present. See Sections Section 4.5.3 through Section 4.5.7. |
| comparison | REQUIRED | How a consumer evaluates whether a deployed resource meets the fix threshold. See Section 4.5.2. |
| auto_upgrade | OPTIONAL | When false, the provider does not automatically apply this version update. When false, existing_deployments_remain_vulnerable MUST be true. |
| note | OPTIONAL | Human-readable clarification. REQUIRED when a fix arrives at different dates across release channels. |
| Value | Meaning |
|---|---|
| gte | Deployed version MUST be greater than or equal to the specified value per the service's versioning scheme. |
| exact | Deployed version MUST exactly match. Used for content-addressed identifiers (image digests, AMI IDs, OCIDs). |
| date_gte | Resource's runtime build date or deployment date MUST be on or after the specified build_date. |
| channel_and_gte | Resource MUST be subscribed to a qualifying release channel AND be at or above the specified version within that channel. |
Defined version_type values for AWS services: runtime
(Lambda and runtime-based services), engine_version (RDS,
ElastiCache, Redshift), ami (EC2 and AMI-backed services),
agent_version (SSM Agent, CodeDeploy Agent, ECS Agent),
kubernetes_version (EKS), container_image (ECS tasks),
managed_policy_version (AWS-managed IAM policies).¶
For engine_version, the auto_upgrade field indicates
whether RDS auto minor version upgrade is sufficient. When
auto_upgrade is false, consumers must explicitly trigger
the upgrade and existing_deployments_remain_vulnerable
MUST be true.¶
For container_image, image_digest (SHA256) is
RECOMMENDED over image_tag. When
image_digest is present with comparison: exact, consumers
MUST verify digest, not tag. Tags are mutable and
MUST NOT be used as the sole verification method.¶
Defined version_type values for Azure services: api_version
(ARM API operations), kubernetes_version (AKS clusters and node
pools, with optional node_image_version), extension_version
(VM Extensions), os_image_version (VM Scale Sets),
runtime_version (App Service and Azure Functions).¶
Defined version_type values for GCP services:
kubernetes_version (GKE, with release_channel field and
channel_and_gte comparison for channel-gated fixes),
database_version (Cloud SQL), runtime_version (Cloud
Functions and Cloud Run, using date_gte comparison),
image_family (Compute Engine public image families).¶
For GKE, fix availability differs by release channel (RAPID, REGULAR,
STABLE). The note field MUST enumerate
channel-specific availability dates.¶
Cloudflare Workers does not expose a semantic version. Defined
version_type values: runtime_build_date (Workers runtime,
using date_gte comparison against build_date),
deployment_id (Pages or Workers deployments where the fix requires
consumer-controlled redeployment).¶
Defined version_type values for Oracle Cloud services:
database_version (Autonomous Database, Base Database Service),
kubernetes_version (OKE, with optional node_pool_image),
image_ocid (Compute platform images, using date_gte
comparison against build_date; OCID is region-specific so
build_date is the normative threshold).¶
Detection fields enable consumers to deploy log queries, metric filters, and
alerting rules that identify vulnerable configurations, active exploitation, or
configuration drift. A record with vex_status of affected or
fixed SHOULD include at least one detection entry.¶
| Field | Required | Description |
|---|---|---|
| provider | REQUIRED | Cloud provider for this detection. |
| service | REQUIRED | Log, event, or security service for which the query is written. See Section 4.6.1. |
| query_language | REQUIRED | Query language of the query string. See Section 4.6.2. |
| query | REQUIRED | Detection query string. MUST be syntactically valid for the declared query_language. Variable slots MAY appear where consumer-specific values must be substituted before deployment. |
| detection_phase | REQUIRED | See Section 4.6.3. |
| description | REQUIRED | Explanation of what the query detects, why it is relevant, and any false positive caveats. |
| pending_reason | OPTIONAL | When present, indicates this detection entry is a placeholder without a functional query. The query field MUST be an empty string when pending_reason is set. See Section 4.6.4. |
| Provider | Service values |
|---|---|
| aws | cloudwatch_logs_insights, cloudwatch_metric_filter, cloudtrail, security_hub, guardduty, config_rule |
| azure | monitor_kql, sentinel_analytics, defender_alert |
| gcp | cloud_logging, security_command_center, chronicle |
| cloudflare | logpush, firewall_events |
| oracle | oci_logging, cloud_guard |
| Value | Language |
|---|---|
| cwli | CloudWatch Logs Insights |
| cloudwatch_filter | CloudWatch Metric Filter pattern syntax |
| kql | Kusto Query Language (Azure Monitor and Sentinel) |
| gcp_logging_filter | GCP Cloud Logging filter syntax |
| oci_logging_query | OCI Logging query syntax |
| lucene | Lucene query syntax (Cloudflare and SIEM integrations) |
The detection_phase field is normative. A consumer tool
MUST use this field to determine whether a detection is
currently applicable and whether it should remain active after remediation.¶
| Value | Meaning | Retention Policy |
|---|---|---|
| pre_fix | Detects the vulnerable condition. MAY become misleading after remediation. | Deactivate or suppress after per-resource remediation is confirmed. |
| exploitation | Detects active exploitation attempts regardless of fix status. | MUST remain active permanently. |
| post_fix | Detects exploitation attempts that remain possible after apparent remediation. | Activate at provider_fix_date; retain permanently. |
| misconfiguration | Detects drift back to a vulnerable configuration after remediation. A confirmed match MUST be treated as a window-reopening event. |
MUST remain active indefinitely after any opt_in or config_change remediation. |
A record with fix_propagation of opt_in or
config_change MUST include at least one
misconfiguration detection entry.¶
If a functional detection query cannot be authored at publication
time, the producer MUST include a placeholder entry
with detection_phase of misconfiguration and a
pending_reason value from
Section 4.6.4.¶
When a producer cannot author a functional detection query at
publication time, the producer MUST still include a
detection entry with detection_phase set to the required
phase and pending_reason set to one of the following values.
The query field MUST be an empty string. The
description field SHOULD provide additional
human-readable context explaining the gap.¶
A producer SHOULD publish an updated record with a functional query replacing the placeholder once the constraint is resolved.¶
| Value | Meaning |
|---|---|
| query_in_development | The detection query is being authored or tested and will be published in a future record update. |
| awaiting_provider_telemetry | The cloud provider does not yet expose the log, event, or API data needed to detect this condition. Pending provider capability. |
| no_detection_surface | No provider service currently offers telemetry sufficient to detect this misconfiguration programmatically. This value indicates a permanent or long-term gap. |
| access_constraint | The record author lacks the provider environment access needed to develop and validate the query. |
| pending_review | A candidate query exists but is under review (security, accuracy, or false-positive assessment) before publication. |
A consumer MUST NOT deploy a detection entry that has
pending_reason set. A consumer SHOULD surface
placeholder entries in operator-facing dashboards to indicate
detection coverage gaps.¶
| Field | Required | Description |
|---|---|---|
| advisory_id | OPTIONAL | Provider's own advisory identifier (e.g., ALAS2-2024-2456, MSRC-2024-0034, GCP-SA-2024-001). |
| advisory_url | OPTIONAL | Direct URL to the provider's security advisory. |
The vex_status field aligns CRIT records with the OpenVEX ([OpenVEX]) / CSAF VEX ([CSAF-VEX])
vocabulary for composability with VEX-aware tooling.¶
| Value | Meaning |
|---|---|
| affected | The resource type is affected. No fix is available, or fix has not been applied. |
| not_affected | The resource type is not affected, or the vulnerability is not reachable in this deployment context. |
| fixed | A provider fix is available and provider_fix_date is set. |
| under_investigation | Provider has acknowledged the vulnerability but has not yet confirmed affected status. |
A consumer MUST treat vex_status as a record-level
statement about provider fix availability, not as a per-resource remediation
status. A record with vex_status = fixed and
existing_deployments_remain_vulnerable = true represents the common
real-world condition: a fix exists at the provider level, but existing
deployed resources are not automatically remediated. Both facts are
simultaneously true and MUST both be surfaced to operators.¶
Canonical formats:¶
arn:aws:{service-prefix}:{region}:{account}:{resource-type}/{id}
arn:aws:{service-prefix}:{region}:{account}:{resource-type}:{id}
The {service-prefix} slot is always hardcoded (e.g., iam,
s3, ec2, lambda, eks, rds).¶
The {region} slot MUST be hardcoded to
us-east-1 for globally-scoped services: iam,
cloudfront, route53, waf, wafv2,
shield, organizations, sts,
globalaccelerator. For all other AWS services the region slot
MUST be a named variable or wildcard and MUST NOT be empty.¶
The {account} slot is always a named variable. The
{resource-type} slot is hardcoded or empty per the service schema.
The {resource-id} slot is a named variable or wildcard.¶
arn:aws:iam:{region=us-east-1}:{account}:role/{resource-id}
arn:aws:s3:{region=*}:{account}:bucket/{resource-id}
arn:aws:ec2:{region}:{account}:instance/{resource-id}
arn:aws:lambda:{region}:{account}:function:{resource-id}
arn:aws:eks:{region}:{account}:cluster/{resource-id}
Canonical format:¶
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}
/providers/{namespace}/{type}/{name}
{subscriptionId} and {name} are always named variables.
{resourceGroup} is a named variable or wildcard.
{namespace} and {type} are always hardcoded (e.g.,
Microsoft.Compute/virtualMachines,
Microsoft.ContainerService/managedClusters).¶
Canonical format:¶
//{api}.googleapis.com/{collection-path}
{api} is always hardcoded (e.g., compute,
container, sqladmin). {project} is always a named
variable. {zone} is a named variable for zonal resources and empty
({zone=}) for global or regional resources.¶
Canonical format:¶
com.cloudflare.api.account.{account_id}.{resource-type}.{id}
Cloudflare resources are globally scoped. There is no region component.
A CRIT producer MUST NOT add a region slot to a Cloudflare
template. {resource-type} is always hardcoded (e.g., worker,
r2_bucket, zone, d1_database).¶
Canonical formats:¶
ocid1.{type}.{realm}.{region}..{unique-id} (regional)
ocid1.{type}.{realm}...{unique-id} (global)
{type} is always hardcoded. {realm} is hardcoded to
oc1 for commercial regions. Separate CRIT records
SHOULD be produced for government realms (oc2,
oc3) when fix timelines differ. {region} is a named
variable for regional resources and empty ({region=}) for global
resources.¶
A consumer resolving a CRIT template to a live identifier MUST apply substitutions in the following order:¶
{field=literal}) with their literal value.¶
{field=}) with the empty string.¶
{field}) with consumer-supplied concrete values.¶
{field=*}) MUST NOT be resolved to a live identifier. For inventory enumeration, a consumer MAY enumerate known values to produce a set of resolved templates.¶
After step 3, the resulting string MUST be a valid provider
identifier conforming to the declared template_format. A consumer
MUST validate this and MUST reject a template
that fails validation after full substitution.¶
The following field names carry defined semantics across all providers. A CRIT producer MUST use these names where applicable and MUST NOT reuse them for different semantics.¶
| Field Name | Semantics |
|---|---|
| account | AWS account ID or equivalent top-level ownership identifier. |
| subscriptionId | Azure subscription ID. |
| project | GCP project ID. |
| account_id | Cloudflare account ID. |
| region | Provider geographic region identifier. |
| zone | Provider availability zone or GCP zone identifier. |
| location | GCP region or multi-region identifier as used in resource paths. |
| resource-id | Unique identifier of the specific resource instance. |
| name | Azure resource name. |
| id | Cloudflare or Oracle resource identifier. |
| unique-id | Oracle OCID unique identifier component. |
| realm | Oracle OCID realm component. |
| service-prefix | AWS service prefix as used in ARN construction. |
| resource-type | Resource type component within an ARN. |
| namespace | Azure resource provider namespace. |
| type | Azure resource type or Oracle OCID type component. |
| api | GCP API host prefix. |
For package vulnerabilities, an exposure window can be approximated from version data alone: a package was exposed from the time the vulnerable version was released until the time the fixed version was installed. Cloud resources have no equivalent computation. There is no "installed version" to timestamp, no registry entry recording when a resource was last updated, and no version comparison that determines whether a specific running resource is currently in the affected range.¶
The CRIT exposure window is therefore defined over time and consumer action,
not over version ranges. A resource enters the window when it is deployed into
a vulnerable configuration. It exits the window when a qualifying remediation
event is recorded -- which may be long after provider_fix_date for
resources where existing_deployments_remain_vulnerable is
true, or never, for resources under no_fix_available
propagation.¶
Formally, the exposure window is the interval [W_start, W_end] where:¶
vulnerability_introduced_date when present; otherwise
vuln_published_date. When vulnerability_introduced_date_estimated
is true, consumers SHOULD indicate this in user-facing
reporting.¶
| Condition | W_end |
|---|---|
shared_responsibility = provider_only AND provider_fix_date is present |
W_end = provider_fix_date. Window closed for all resources automatically. existing_deployments_remain_vulnerable MUST be false. |
shared_responsibility is customer_action_required or shared
|
W_end undefined at record level. provider_fix_date opens remediation possibility but does not close the window. Per-resource closure requires a confirmed consumer action. |
shared_responsibility = customer_only
|
W_end undefined. No provider_fix_date. Per-resource closure requires confirmed consumer remediation. |
fix_propagation = no_fix_available
|
W_end = null. Window open. provider_fix_date MUST be absent. |
provider_fix_date absent for any other reason |
W_end = null. Window open. |
When existing_deployments_remain_vulnerable is true, the
exposure window for a specific resource instance is NOT closed by
provider_fix_date. A consumer MUST apply the following
logic per resource:¶
if resource.deployed_date < provider_fix_date
AND existing_deployments_remain_vulnerable == true
AND no confirmed remediation action recorded for this resource:
resource.exposure_window_end = null // open
A consumer MUST record a per-resource remediation event to
close the window for that resource. A consumer MUST NOT mark a
resource as remediated solely because provider_fix_date has passed.¶
When fix_propagation is opt_in or config_change,
a remediation may be reversed by a subsequent configuration change, reopening
the window. When a misconfiguration-phase detection fires for a
resource, a consumer MUST treat this as a window-reopening
event. A consumer MUST keep misconfiguration-phase
detections active indefinitely for any resource remediated via opt_in
or config_change.¶
When fix_propagation is rolling_replace, the exposure window
is partially open during the fleet transition. A consumer MUST NOT consider the window closed until fleet replacement is confirmed
at 100%.¶
When provider_fix_version.comparison is channel_and_gte,
the effective fix availability date differs by release channel. A consumer
MUST use the channel-specific fix date derived from the
note field when computing per-cluster exposure windows.¶
A conformant CRIT producer MUST:¶
(vuln_id, provider, service, resource_type).¶
existing_deployments_remain_vulnerable = false only when fix_propagation = automatic AND shared_responsibility = provider_only.¶
existing_deployments_remain_vulnerable = true when provider_fix_version.auto_upgrade is present and false.¶
fix_propagation = no_fix_available and omit provider_fix_date when no fix exists.¶
remediation_actions entry for every record where vex_status is affected or fixed.¶
misconfiguration-phase detection entry for records where fix_propagation is opt_in or config_change. A placeholder entry with pending_reason (Section 4.6.4) satisfies this requirement.¶
vectorString as the canonical CRIT vector string from the record's own fields per Section 4.1.2.¶
temporal.vuln_published_date as the PP metric value in Unix epoch seconds (UTC).¶
temporal.service_available_date as the SA metric value in Unix epoch seconds (UTC).¶
A conformant CRIT producer SHOULD:¶
A conformant CRIT consumer MUST:¶
provider_fix_date as closing the exposure window only when existing_deployments_remain_vulnerable is false.¶
vex_status.¶
misconfiguration-phase detection match as a window-reopening event.¶
misconfiguration-phase detections active indefinitely once deployed.¶
channel_and_gte version types when per-resource channel enrollment is known.¶
image_digest over image_tag for container_image version comparison when both are present.¶
vectorString without error (forward compatibility per Section 4.1.2.3).¶
vectorString missing any registered metric.¶
vectorString as a complete record representation. Use the full JSON record for operational decisions requiring fields not carried in the vector (see Section 4.1.2.4).¶
A conformant CRIT consumer SHOULD:¶
remediation_actions in declared sequence order.¶
customer_deadline_date when computing remediation SLAs.¶
vulnerability_introduced_date_estimated = true in operator-facing exposure window reporting.¶
CRIT data is published via two upstream vulnerability schema ecosystems: the CVE List v5 ADP container and the OSV schema. Each integration follows a two-phase strategy.¶
Phase 1 -- Extension (current): CRIT records are embedded as
custom x_ properties within conformant records of the target schema.
This is immediately deployable without requiring changes to either upstream
schema. Phase 1 records are fully schema-valid because both CVEListv5 and OSV
permit additional properties with the x_ prefix.¶
Phase 2 -- Native integration (proposed): CRIT fields are
expressed using native objects defined by the upstream schema wherever a
semantic mapping exists. Fields without a native mapping continue to use
x_crit_* prefixed properties within the appropriate extension points.
Phase 2 requires coordination with CVEProject and OpenSSF but does not require
either upstream schema to define new first-class fields for all CRIT concepts.¶
A producer MUST NOT remove Phase 1 fields until: Phase 2 native
fields have been published for at least one full release cycle of the target
schema; the cloud:* ecosystem namespace has been formally registered
with OSV schema maintainers or the ADP native field mapping accepted by the
CVEProject schema working group; downstream consumers have confirmed migration
to Phase 2; and a 90-day deprecation notice has been in the relevant records.¶
Vulnetix publishes CRIT data as an Authorized Data Publisher (ADP) in
CVEListv5 records. The Vulnetix ADP container is identified by
providerMetadata.shortName = "VVD" or by Vulnetix's
orgId in the containers.adp[] array.¶
In Phase 1 a single top-level x_crit field in the Vulnetix ADP
container carries an array of CRIT records. The x_crit array
MUST contain one entry per natural key tuple applicable to
the CVE. The vuln_id within each entry MUST match
the cveMetadata.cveId of the enclosing CVEListv5 record.¶
In Phase 2, each CRIT record contributes one entry to the ADP
affected[] array. Provider-native CVEListv5 fields carry data
wherever a mapping exists; fields without a native mapping use
x_crit_* extension properties on the affected[] item
or at the ADP container level.¶
provider:affected[].vendor -- Provider key.¶
service:affected[].product -- Service key.¶
resource_type:affected[].modules[] -- Array of resource type strings.¶
template:affected[].platforms[] -- CRIT template strings as
platform descriptors.¶
provider_fix_version (range bound):affected[].versions[].lessThan and
changes[].at -- Range [0, fix_version) expressed
natively; full subschema in residual field
x_crit_fix_version.¶
temporal.*_date fields:timeline[] array -- Each date as a timeline
entry with a descriptive value string.¶
provider_advisory CVSS fields:metrics[] array -- cvssV3_1 or
cvssV4_0 per the vector string prefix.¶
provider_advisory.advisory_url:references[] array with
tags: ["vendor-advisory"].¶
remediation_actions (non-compensating):solutions[] array -- One entry per action.¶
remediation_actions (compensating_control: true):workarounds[] array.¶
vex_status -> x_crit_vex_status;
fix_propagation -> x_crit_fix_propagation;
existing_deployments_remain_vulnerable ->
x_crit_existing_deployments_remain_vulnerable;
shared_responsibility ->
x_crit_shared_responsibility;
resource_lifecycle -> x_crit_resource_lifecycle;
provider_fix_version (full subschema) ->
x_crit_fix_version;
template with slot syntax ->
x_crit_template + x_crit_template_format;
detections[] -> x_crit_detections.¶
Publishers may produce CRIT data in OSV schema format for consumption by OSV.dev and compatible tooling.¶
Cloud provider ecosystems are expressed as cloud:<provider>
(e.g., cloud:aws, cloud:azure, cloud:gcp). This
namespace is proposed for registration with the OSV schema ecosystem list.
Until registered, tooling that does not recognise a cloud:*
ecosystem MUST NOT reject records using it.¶
Package names use the convention <service>:<resource_type>
(e.g., rds:db, aks:cluster, lambda:function).¶
PURLs follow the form
pkg:cloud/<provider>/<service>/<resource_type>
(e.g., pkg:cloud/aws/rds/db). The cloud type is
observed in the OSV ecosystem but is not a registered type in the
PURL specification [PURL]. This specification
acknowledges its use for OSV integration but does not define or
govern the pkg:cloud/ type itself.¶
OSV record IDs follow the convention:
OSV-<year>-<ID>.¶
Each OSV record carries one affected[] entry per CRIT natural key
tuple. The full CRIT record is embedded in
affected[].database_specific.x_crit. Multiple CRIT records for the
same vulnerability are published as separate OSV records, each with a distinct ID and
a single affected[] entry. The aliases array on all records
includes the shared vuln_id.¶
provider:affected[].package.ecosystem --
"cloud:<provider>"
(e.g., "cloud:aws").¶
service + resource_type:affected[].package.name --
"<service>:<resource_type>"
(e.g., "rds:db").¶
provider + service + resource_type:affected[].package.purl --
"pkg:cloud/<provider>/<service>/<resource_type>".¶
provider_fix_version (range bound):affected[].ranges[].events -- introduced
and fixed events.¶
temporal.vuln_published_date:published -- RFC3339 format.¶
provider_fix_date:modified -- Set to the most recent significant
update date.¶
provider_advisory.provider_cvss_vector:severity[] with type: "CVSS_V3" or
"CVSS_V4".¶
provider_advisory.advisory_url:references[] with type: "ADVISORY".¶
vuln_id:aliases[].¶
ecosystem_specific:fix_propagation ->
x_crit_fix_propagation;
existing_deployments_remain_vulnerable ->
x_crit_existing_deployments_remain_vulnerable;
all temporal fields ->
x_crit_temporal;
detections[] -> x_crit_detections;
remediation_actions[] ->
x_crit_remediation_actions;
vex_status -> x_crit_vex_status.¶
database_specific:provider_advisory.advisory_id ->
x_crit_provider_advisory_id.¶
This document has no IANA actions. Future revisions targeting standards track
may request registration of the cloud PURL type with the PURL
specification maintainers, and registration of the cloud:* ecosystem
namespace with the OSV schema maintainers.¶
Detection strings specify exact log filter patterns for identifying vulnerable configurations and exploitation. A corpus of CRIT detection entries reveals what a consumer is and is not monitoring for. CRIT records SHOULD be treated as security-sensitive and access-controlled in consumer systems.¶
The combination of vulnerability_introduced_date,
provider_fix_date, and existing_deployments_remain_vulnerable
can allow an adversary to infer whether specific consumer resources remain
vulnerable. Consumers SHOULD NOT expose exposure window details
in public-facing interfaces.¶
Remediation actions with compensating_control = true reveal which
mitigating controls are in place. Consumers SHOULD NOT expose
active compensating control details in contexts where that information assists
an adversary in targeting unmitigated surface.¶
Wildcard templates reveal the structural scope of a consumer's cloud footprint. A consumer MUST NOT expose unresolved wildcard templates in contexts where asset enumeration is harmful.¶
provider_fix_version values are advisory in nature. A consumer
MUST independently verify that a deployed resource meets the
version threshold. Container image tags are mutable; digest comparison
MUST be preferred. A consumer MUST NOT assume
remediation solely on the basis of a version string match.¶
A producer accepting CRIT records from multiple upstream sources MUST enforce natural key uniqueness before serving records. Duplicate natural keys with conflicting field values can cause consumers to make incorrect remediation decisions. Producers SHOULD define and expose a conflict resolution policy.¶
A CRIT Dictionary is a machine-readable catalogue of entries that
enumerate the valid combinations of provider,
service, and resource_type values recognised by
this specification, together with the provider-native identifier
template and supporting metadata for each combination. A dictionary
entry is the atomic unit of service coverage: it asserts that a given
cloud provider service and resource type is within CRIT scope and
provides the template and slot semantics required to locate instances
of that resource type in a consumer’s inventory.¶
A CRIT Dictionary is not a vulnerability database and does not
contain vulnerability-specific data. It is a stable reference layer
that producers and consumers use to validate and resolve CRIT records.
A CRIT record’s (provider, service, resource_type)
tuple MUST resolve to an entry in a conformant
dictionary before the record is considered valid.¶
Two categories of dictionary exist:¶
Each dictionary entry is a JSON object. All fields except
notes are REQUIRED.¶
{
"provider": "<enum: aws | azure | gcp | cloudflare | oracle>",
"service": "<string: normalised service key>",
"resource_type": "<string: resource type within service>",
"template": "<CRIT template string>",
"template_format": "<enum: aws_arn | azure_resource_id | gcp_resource_name
| cloudflare_locator | oracle_ocid>",
"region_behavior": "<enum: regional | global-only>",
"notes": "<string: optional annotation>"
}
provider:service:service field and the second
component of the natural key tuple. Where a provider uses multiple
common names for the same service, the dictionary carries the
canonical key; synonyms are resolved to it by the producer prior to
record emission.¶
resource_type:resource_type field. For services with
multiple resource types, each type has its own dictionary entry
with a distinct (provider, service, resource_type) natural
key.¶
template:template_format.¶
template_format:aws_arn, azure_resource_id,
gcp_resource_name, cloudflare_locator,
oracle_ocid.¶
region_behavior:regional (the {region} slot is a named
variable, consumer-supplied) or global-only (the region
slot is hardcoded in the template; the resource type is not
regional).¶
notes:A conformant CRIT producer MUST:¶
(provider, service,
resource_type) tuple against a conformant dictionary before
emitting the record.¶
template and template_format values from
the matching dictionary entry as the basis for the record’s
template fields.¶
A conformant CRIT consumer MUST:¶
(provider, service, resource_type)
tuple does not resolve to an entry in any dictionary the consumer
supports, rather than silently ignoring them.¶
region_behavior field
when constructing inventory queries from wildcard templates, to
avoid submitting region-qualified identifiers for global-only
resource types.¶
The Spec Default Dictionary is versioned alongside the CRIT
specification. The dictionary version is the same as the
semver string carried in the vectorString prefix of CRIT records.
Additions of new entries within a minor version are backwards
compatible. Removal or semantic modification of existing entries
requires a major version increment.¶
Producers SHOULD include a
dictionary_version field in their extended dictionaries to
allow consumers to detect stale dictionary coverage.¶
The following tables constitute the Spec Default CRIT Dictionary for
version 0.2.0 of this specification. The entries are derived from
the provider identifier schemas referenced in Section 2.
Where a provider service has multiple common registry keys (aliases),
the canonical key is listed; aliases resolve to the same template.
The template column uses the slot syntax of
Section 3. Wildcard ({field=*})
variants are omitted for brevity; consumers MAY
substitute {region=*} for inventory-wide queries on
regional services.¶
AWS resources are identified by Amazon Resource Names (ARNs)
[AWS-ARN]. The template_format for all
AWS entries is aws_arn. For globally-scoped services the
region slot is hardcoded to us-east-1; for all others it
is a named variable.¶
| service | ARN service prefix | region_behavior | resource_type (common values) | Template |
|---|---|---|---|---|
acm
|
acm
|
regional |
certificate
|
arn:aws:acm:{region}:{account}:certificate/{resource-id}
|
acm_pca
|
acm-pca
|
regional |
certificate-authority
|
arn:aws:acm-pca:{region}:{account}:certificate-authority/{resource-id}
|
amplify
|
amplify
|
regional |
app, branch
|
arn:aws:amplify:{region}:{account}:{resource-type}/{resource-id}
|
api_gateway
|
apigateway
|
regional |
httpapi, restapi
|
arn:aws:apigateway:{region}:{account}:{resource-type}/{resource-id}
|
app_mesh
|
appmesh
|
regional |
mesh, virtual-node, virtual-router, virtual-service
|
arn:aws:appmesh:{region}:{account}:{resource-type}/{resource-id}
|
appconfig
|
appconfig
|
regional |
application
|
arn:aws:appconfig:{region}:{account}:application/{resource-id}
|
apprunner
|
apprunner
|
regional |
service
|
arn:aws:apprunner:{region}:{account}:service/{resource-id}
|
appstream
|
appstream
|
regional |
fleet, image-builder, stack
|
arn:aws:appstream:{region}:{account}:{resource-type}/{resource-id}
|
appsync
|
appsync
|
regional |
graphqlapi
|
arn:aws:appsync:{region}:{account}:graphqlapi/{resource-id}
|
athena
|
athena
|
regional |
workgroup
|
arn:aws:athena:{region}:{account}:workgroup/{resource-id}
|
autoscaling
|
autoscaling
|
regional |
auto-scaling-group
|
arn:aws:autoscaling:{region}:{account}:auto-scaling-group/{resource-id}
|
backup
|
backup
|
regional |
backup-plan, backup-vault
|
arn:aws:backup:{region}:{account}:{resource-type}/{resource-id}
|
batch
|
batch
|
regional |
compute-environment, job-definition, job-queue
|
arn:aws:batch:{region}:{account}:{resource-type}/{resource-id}
|
bedrock
|
bedrock
|
regional |
agent, custom-model, model
|
arn:aws:bedrock:{region}:{account}:{resource-type}/{resource-id}
|
cloud9
|
cloud9
|
regional |
environment
|
arn:aws:cloud9:{region}:{account}:environment/{resource-id}
|
cloud_map
|
servicediscovery
|
regional |
namespace, service
|
arn:aws:servicediscovery:{region}:{account}:{resource-type}/{resource-id}
|
cloudformation
|
cloudformation
|
regional |
changeset, stack
|
arn:aws:cloudformation:{region}:{account}:{resource-type}/{resource-id}
|
cloudfront
|
cloudfront
|
global-only |
distribution, function
|
arn:aws:cloudfront:{region=us-east-1}:{account}:{resource-type}/{resource-id}
|
cloudtrail
|
cloudtrail
|
regional |
trail
|
arn:aws:cloudtrail:{region}:{account}:trail/{resource-id}
|
cloudwatch
|
cloudwatch
|
regional |
alarm, dashboard
|
arn:aws:cloudwatch:{region}:{account}:{resource-type}/{resource-id}
|
codeartifact
|
codeartifact
|
regional |
domain, repository
|
arn:aws:codeartifact:{region}:{account}:{resource-type}/{resource-id}
|
codebuild
|
codebuild
|
regional |
build, project
|
arn:aws:codebuild:{region}:{account}:{resource-type}/{resource-id}
|
codecommit
|
codecommit
|
regional |
repository
|
arn:aws:codecommit:{region}:{account}:repository/{resource-id}
|
codedeploy
|
codedeploy
|
regional |
application, deployment-group
|
arn:aws:codedeploy:{region}:{account}:{resource-type}/{resource-id}
|
codepipeline
|
codepipeline
|
regional |
pipeline
|
arn:aws:codepipeline:{region}:{account}:pipeline/{resource-id}
|
codestar_connections
|
codestar-connections
|
regional |
connection
|
arn:aws:codestar-connections:{region}:{account}:connection/{resource-id}
|
cognito
|
cognito-idp
|
regional |
userpool
|
arn:aws:cognito-idp:{region}:{account}:userpool/{resource-id}
|
comprehend
|
comprehend
|
regional |
document-classifier, entity-recognizer
|
arn:aws:comprehend:{region}:{account}:{resource-type}/{resource-id}
|
config
|
config
|
regional |
config-rule, configuration-recorder
|
arn:aws:config:{region}:{account}:{resource-type}/{resource-id}
|
connect
|
connect
|
regional |
contact-flow, instance
|
arn:aws:connect:{region}:{account}:{resource-type}/{resource-id}
|
datasync
|
datasync
|
regional |
agent, task
|
arn:aws:datasync:{region}:{account}:{resource-type}/{resource-id}
|
detective
|
detective
|
regional |
graph
|
arn:aws:detective:{region}:{account}:graph/{resource-id}
|
direct_connect
|
directconnect
|
regional |
connection, virtual-interface
|
arn:aws:directconnect:{region}:{account}:{resource-type}/{resource-id}
|
directory_service
|
ds
|
regional |
directory
|
arn:aws:ds:{region}:{account}:directory/{resource-id}
|
dms
|
dms
|
regional |
endpoint, replication-instance, replication-task
|
arn:aws:dms:{region}:{account}:{resource-type}/{resource-id}
|
dynamodb
|
dynamodb
|
regional |
backup, global-table, table
|
arn:aws:dynamodb:{region}:{account}:{resource-type}/{resource-id}
|
ec2
|
ec2
|
regional |
capacity-reservation, dedicated-host, elastic-ip, image, instance, internet-gateway, key-pair, launch-template, nat-gateway, network-acl, network-interface, placement-group, prefix-list, route-table, security-group, snapshot, subnet, transit-gateway, transit-gateway-attachment, volume, vpc, vpc-endpoint, vpc-flow-log, vpc-peering-connection, vpn-connection, vpn-gateway
|
arn:aws:ec2:{region}:{account}:{resource-type}/{resource-id}
|
ecr
|
ecr
|
regional |
repository
|
arn:aws:ecr:{region}:{account}:repository/{resource-id}
|
ecs
|
ecs
|
regional |
cluster, service, task, task-definition
|
arn:aws:ecs:{region}:{account}:{resource-type}/{resource-id}
|
efs
|
elasticfilesystem
|
regional |
access-point, file-system
|
arn:aws:elasticfilesystem:{region}:{account}:{resource-type}/{resource-id}
|
eks
|
eks
|
regional |
cluster, nodegroup
|
arn:aws:eks:{region}:{account}:{resource-type}/{resource-id}
|
elasticache
|
elasticache
|
regional |
cluster, replicationgroup
|
arn:aws:elasticache:{region}:{account}:{resource-type}/{resource-id}
|
elasticbeanstalk
|
elasticbeanstalk
|
regional |
application, environment
|
arn:aws:elasticbeanstalk:{region}:{account}:{resource-type}/{resource-id}
|
elb
|
elasticloadbalancing
|
regional |
listener, loadbalancer, targetgroup
|
arn:aws:elasticloadbalancing:{region}:{account}:{resource-type}/{resource-id}
|
emr
|
elasticmapreduce
|
regional |
cluster, studio
|
arn:aws:elasticmapreduce:{region}:{account}:{resource-type}/{resource-id}
|
emr_serverless
|
emr-serverless
|
regional |
application
|
arn:aws:emr-serverless:{region}:{account}:application/{resource-id}
|
eventbridge
|
events
|
regional |
event-bus, rule
|
arn:aws:events:{region}:{account}:{resource-type}/{resource-id}
|
firehose
|
firehose
|
regional |
deliverystream
|
arn:aws:firehose:{region}:{account}:deliverystream/{resource-id}
|
fsx
|
fsx
|
regional |
backup, file-system, volume
|
arn:aws:fsx:{region}:{account}:{resource-type}/{resource-id}
|
gamelift
|
gamelift
|
regional |
build, fleet
|
arn:aws:gamelift:{region}:{account}:{resource-type}/{resource-id}
|
global_accelerator
|
globalaccelerator
|
global-only |
accelerator
|
arn:aws:globalaccelerator:{region=us-east-1}:{account}:accelerator/{resource-id}
|
glue
|
glue
|
regional |
crawler, database, job, registry, table
|
arn:aws:glue:{region}:{account}:{resource-type}/{resource-id}
|
grafana
|
grafana
|
regional |
workspace
|
arn:aws:grafana:{region}:{account}:workspace/{resource-id}
|
guardduty
|
guardduty
|
regional |
detector
|
arn:aws:guardduty:{region}:{account}:detector/{resource-id}
|
iam
|
iam
|
global-only |
group, instance-profile, policy, role, user
|
arn:aws:iam:{region=us-east-1}:{account}:{resource-type}/{resource-id}
|
imagebuilder
|
imagebuilder
|
regional |
component, image-pipeline, image-recipe
|
arn:aws:imagebuilder:{region}:{account}:{resource-type}/{resource-id}
|
inspector
|
inspector2
|
regional |
finding
|
arn:aws:inspector2:{region}:{account}:finding/{resource-id}
|
iot_core
|
iot
|
regional |
certificate, policy, thing
|
arn:aws:iot:{region}:{account}:{resource-type}/{resource-id}
|
ivs
|
ivs
|
regional |
channel
|
arn:aws:ivs:{region}:{account}:channel/{resource-id}
|
kendra
|
kendra
|
regional |
index
|
arn:aws:kendra:{region}:{account}:index/{resource-id}
|
keyspaces
|
cassandra
|
regional |
keyspace, table
|
arn:aws:cassandra:{region}:{account}:{resource-type}/{resource-id}
|
kinesis
|
kinesis
|
regional |
stream
|
arn:aws:kinesis:{region}:{account}:stream/{resource-id}
|
kinesis_analytics
|
kinesisanalyticsv2
|
regional |
application
|
arn:aws:kinesisanalyticsv2:{region}:{account}:application/{resource-id}
|
kinesis_video
|
kinesisvideo
|
regional |
stream
|
arn:aws:kinesisvideo:{region}:{account}:stream/{resource-id}
|
kms
|
kms
|
regional |
alias, key
|
arn:aws:kms:{region}:{account}:{resource-type}/{resource-id}
|
lambda
|
lambda
|
regional |
function, layer
|
arn:aws:lambda:{region}:{account}:{resource-type}/{resource-id}
|
lex
|
lex
|
regional |
bot
|
arn:aws:lex:{region}:{account}:bot/{resource-id}
|
lightsail
|
lightsail
|
regional |
container-service, database, instance, load-balancer
|
arn:aws:lightsail:{region}:{account}:{resource-type}/{resource-id}
|
location
|
geo
|
regional |
geofence-collection, map, place-index, route-calculator, tracker
|
arn:aws:geo:{region}:{account}:{resource-type}/{resource-id}
|
logs
|
logs
|
regional |
log-group
|
arn:aws:logs:{region}:{account}:log-group/{resource-id}
|
macie
|
macie2
|
regional |
classification-job
|
arn:aws:macie2:{region}:{account}:classification-job/{resource-id}
|
mediaconvert
|
mediaconvert
|
regional |
job-template, queue
|
arn:aws:mediaconvert:{region}:{account}:{resource-type}/{resource-id}
|
memorydb
|
memorydb
|
regional |
cluster
|
arn:aws:memorydb:{region}:{account}:cluster/{resource-id}
|
mq
|
mq
|
regional |
broker
|
arn:aws:mq:{region}:{account}:broker/{resource-id}
|
msk
|
kafka
|
regional |
cluster
|
arn:aws:kafka:{region}:{account}:cluster/{resource-id}
|
mwaa
|
airflow
|
regional |
environment
|
arn:aws:airflow:{region}:{account}:environment/{resource-id}
|
network_firewall
|
network-firewall
|
regional |
firewall, firewall-policy
|
arn:aws:network-firewall:{region}:{account}:{resource-type}/{resource-id}
|
network_manager
|
networkmanager
|
global-only |
global-network
|
arn:aws:networkmanager:{region=us-east-1}:{account}:global-network/{resource-id}
|
opensearch
|
es
|
regional |
domain
|
arn:aws:es:{region}:{account}:domain/{resource-id}
|
opensearch_serverless
|
aoss
|
regional |
collection
|
arn:aws:aoss:{region}:{account}:collection/{resource-id}
|
organizations
|
organizations
|
global-only |
account
|
arn:aws:organizations:{region=us-east-1}:{account}:account/{resource-id}
|
personalize
|
personalize
|
regional |
campaign, dataset-group
|
arn:aws:personalize:{region}:{account}:{resource-type}/{resource-id}
|
pinpoint
|
mobiletargeting
|
regional |
app
|
arn:aws:mobiletargeting:{region}:{account}:app/{resource-id}
|
pipes
|
pipes
|
regional |
pipe
|
arn:aws:pipes:{region}:{account}:pipe/{resource-id}
|
prometheus
|
aps
|
regional |
workspace
|
arn:aws:aps:{region}:{account}:workspace/{resource-id}
|
qldb
|
qldb
|
regional |
ledger
|
arn:aws:qldb:{region}:{account}:ledger/{resource-id}
|
quicksight
|
quicksight
|
regional |
dashboard, dataset, datasource
|
arn:aws:quicksight:{region}:{account}:{resource-type}/{resource-id}
|
ram
|
ram
|
regional |
resource-share
|
arn:aws:ram:{region}:{account}:resource-share/{resource-id}
|
rds
|
rds
|
regional |
cluster, db, db-proxy, snapshot
|
arn:aws:rds:{region}:{account}:{resource-type}/{resource-id}
|
redshift
|
redshift
|
regional |
cluster, snapshot
|
arn:aws:redshift:{region}:{account}:{resource-type}/{resource-id}
|
redshift_serverless
|
redshift-serverless
|
regional |
namespace, workgroup
|
arn:aws:redshift-serverless:{region}:{account}:{resource-type}/{resource-id}
|
rekognition
|
rekognition
|
regional |
collection, project
|
arn:aws:rekognition:{region}:{account}:{resource-type}/{resource-id}
|
route53
|
route53
|
global-only |
healthcheck, hostedzone
|
arn:aws:route53:{region=us-east-1}:{account}:{resource-type}/{resource-id}
|
route53resolver
|
route53resolver
|
regional |
resolver-endpoint, resolver-rule
|
arn:aws:route53resolver:{region}:{account}:{resource-type}/{resource-id}
|
s3
|
s3
|
regional |
access-point, bucket, object
|
arn:aws:s3:{region}:{account}:{resource-type}/{resource-id}
|
sagemaker
|
sagemaker
|
regional |
endpoint, model, notebook-instance, training-job
|
arn:aws:sagemaker:{region}:{account}:{resource-type}/{resource-id}
|
scheduler
|
scheduler
|
regional |
schedule, schedule-group
|
arn:aws:scheduler:{region}:{account}:{resource-type}/{resource-id}
|
secrets_manager
|
secretsmanager
|
regional |
secret
|
arn:aws:secretsmanager:{region}:{account}:secret/{resource-id}
|
security_hub
|
securityhub
|
regional |
hub
|
arn:aws:securityhub:{region}:{account}:hub/{resource-id}
|
ses
|
ses
|
regional |
configuration-set, identity
|
arn:aws:ses:{region}:{account}:{resource-type}/{resource-id}
|
shield
|
shield
|
global-only |
protection
|
arn:aws:shield:{region=us-east-1}:{account}:protection/{resource-id}
|
signer
|
signer
|
regional |
signing-profile
|
arn:aws:signer:{region}:{account}:signing-profile/{resource-id}
|
sns
|
sns
|
regional |
platform-application, subscription, topic
|
arn:aws:sns:{region}:{account}:{resource-type}/{resource-id}
|
sqs
|
sqs
|
regional |
queue
|
arn:aws:sqs:{region}:{account}:queue/{resource-id}
|
ssm
|
ssm
|
regional |
automation-execution, document, maintenance-window, managed-instance, parameter, patch-baseline
|
arn:aws:ssm:{region}:{account}:{resource-type}/{resource-id}
|
step_functions
|
states
|
regional |
execution, stateMachine
|
arn:aws:states:{region}:{account}:{resource-type}/{resource-id}
|
synthetics
|
synthetics
|
regional |
canary
|
arn:aws:synthetics:{region}:{account}:canary/{resource-id}
|
timestream
|
timestream
|
regional |
database, table
|
arn:aws:timestream:{region}:{account}:{resource-type}/{resource-id}
|
transfer_family
|
transfer
|
regional |
server
|
arn:aws:transfer:{region}:{account}:server/{resource-id}
|
vpc_lattice
|
vpc-lattice
|
regional |
service, service-network, target-group
|
arn:aws:vpc-lattice:{region}:{account}:{resource-type}/{resource-id}
|
wafv2
|
wafv2
|
regional |
ipset, rule-group, web-acl
|
arn:aws:wafv2:{region}:{account}:{resource-type}/{resource-id}
|
workspaces
|
workspaces
|
regional |
bundle, directory, workspace
|
arn:aws:workspaces:{region}:{account}:{resource-type}/{resource-id}
|
xray
|
xray
|
regional |
group, sampling-rule
|
arn:aws:xray:{region}:{account}:{resource-type}/{resource-id}
|
Azure resources are identified by Azure Resource IDs
[Azure-ResourceID]. The template_format
for all Azure entries is azure_resource_id.¶
| service | namespace | azure_type | region_behavior | Template |
|---|---|---|---|---|
active_directory
|
Microsoft.AAD
|
domainServices
|
global-only |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AAD/domainServices/{name}
|
analysis_services
|
Microsoft.AnalysisServices
|
servers
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AnalysisServices/servers/{name}
|
api_management
|
Microsoft.ApiManagement
|
service
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ApiManagement/service/{name}
|
app_configuration
|
Microsoft.AppConfiguration
|
configurationStores
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AppConfiguration/configurationStores/{name}
|
app_service
|
Microsoft.Web
|
sites
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{name}
|
application_gateway
|
Microsoft.Network
|
applicationGateways
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/applicationGateways/{name}
|
application_insights
|
Microsoft.Insights
|
components
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Insights/components/{name}
|
automation
|
Microsoft.Automation
|
automationAccounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Automation/automationAccounts/{name}
|
bastion
|
Microsoft.Network
|
bastionHosts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/bastionHosts/{name}
|
batch
|
Microsoft.Batch
|
batchAccounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Batch/batchAccounts/{name}
|
bot_service
|
Microsoft.BotService
|
botServices
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.BotService/botServices/{name}
|
cdn
|
Microsoft.Cdn
|
profiles
|
global-only |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Cdn/profiles/{name}
|
cognitive_services
|
Microsoft.CognitiveServices
|
accounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.CognitiveServices/accounts/{name}
|
communication_services
|
Microsoft.Communication
|
communicationServices
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Communication/communicationServices/{name}
|
container_apps
|
Microsoft.App
|
containerApps
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/containerApps/{name}
|
container_apps
|
Microsoft.App
|
managedEnvironments
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.App/managedEnvironments/{name}
|
container_instances
|
Microsoft.ContainerInstance
|
containerGroups
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ContainerInstance/containerGroups/{name}
|
container_registry
|
Microsoft.ContainerRegistry
|
registries
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ContainerRegistry/registries/{name}
|
cosmos_db
|
Microsoft.DocumentDB
|
databaseAccounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DocumentDB/databaseAccounts/{name}
|
data_explorer
|
Microsoft.Kusto
|
clusters
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Kusto/clusters/{name}
|
data_factory
|
Microsoft.DataFactory
|
factories
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DataFactory/factories/{name}
|
data_lake_store
|
Microsoft.DataLakeStore
|
accounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DataLakeStore/accounts/{name}
|
databricks
|
Microsoft.Databricks
|
workspaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Databricks/workspaces/{name}
|
ddos_protection
|
Microsoft.Network
|
ddosProtectionPlans
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/ddosProtectionPlans/{name}
|
defender
|
Microsoft.Security
|
pricings
|
global-only |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Security/pricings/{name}
|
devops
|
Microsoft.DevOps
|
pipelines
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DevOps/pipelines/{name}
|
digital_twins
|
Microsoft.DigitalTwins
|
digitalTwinsInstances
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DigitalTwins/digitalTwinsInstances/{name}
|
disk
|
Microsoft.Compute
|
disks
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/disks/{name}
|
dns
|
Microsoft.Network
|
dnsZones
|
global-only |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/dnsZones/{name}
|
event_grid
|
Microsoft.EventGrid
|
domains
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.EventGrid/domains/{name}
|
event_grid
|
Microsoft.EventGrid
|
topics
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.EventGrid/topics/{name}
|
event_hubs
|
Microsoft.EventHub
|
namespaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.EventHub/namespaces/{name}
|
express_route
|
Microsoft.Network
|
expressRouteCircuits
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/expressRouteCircuits/{name}
|
firewall
|
Microsoft.Network
|
azureFirewalls
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/azureFirewalls/{name}
|
firewall
|
Microsoft.Network
|
firewallPolicies
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/firewallPolicies/{name}
|
front_door
|
Microsoft.Network
|
frontDoors
|
global-only |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/frontDoors/{name}
|
function_app
|
Microsoft.Web
|
sites
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/sites/{name}
|
image_gallery
|
Microsoft.Compute
|
galleries
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/galleries/{name}
|
iot_hub
|
Microsoft.Devices
|
IotHubs
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Devices/IotHubs/{name}
|
key_vault
|
Microsoft.KeyVault
|
vaults
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.KeyVault/vaults/{name}
|
kubernetes_service
|
Microsoft.ContainerService
|
managedClusters
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ContainerService/managedClusters/{name}
|
load_balancer
|
Microsoft.Network
|
loadBalancers
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/loadBalancers/{name}
|
log_analytics
|
Microsoft.OperationalInsights
|
workspaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.OperationalInsights/workspaces/{name}
|
logic_apps
|
Microsoft.Logic
|
workflows
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Logic/workflows/{name}
|
machine_learning
|
Microsoft.MachineLearningServices
|
workspaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.MachineLearningServices/workspaces/{name}
|
managed_identity
|
Microsoft.ManagedIdentity
|
userAssignedIdentities
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{name}
|
maps
|
Microsoft.Maps
|
accounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Maps/accounts/{name}
|
mariadb
|
Microsoft.DBforMariaDB
|
servers
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DBforMariaDB/servers/{name}
|
media_services
|
Microsoft.Media
|
mediaservices
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Media/mediaservices/{name}
|
monitor
|
Microsoft.Monitor
|
accounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Monitor/accounts/{name}
|
monitor
|
Microsoft.Insights
|
actionGroups
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Insights/actionGroups/{name}
|
monitor
|
Microsoft.Insights
|
metricAlerts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Insights/metricAlerts/{name}
|
mysql
|
Microsoft.DBforMySQL
|
flexibleServers
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DBforMySQL/flexibleServers/{name}
|
nat_gateway
|
Microsoft.Network
|
natGateways
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/natGateways/{name}
|
network_security_group
|
Microsoft.Network
|
networkSecurityGroups
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/networkSecurityGroups/{name}
|
notification_hubs
|
Microsoft.NotificationHubs
|
namespaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.NotificationHubs/namespaces/{name}
|
openai
|
Microsoft.CognitiveServices
|
accounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.CognitiveServices/accounts/{name}
|
postgresql
|
Microsoft.DBforPostgreSQL
|
flexibleServers
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DBforPostgreSQL/flexibleServers/{name}
|
private_dns
|
Microsoft.Network
|
privateDnsZones
|
global-only |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/privateDnsZones/{name}
|
private_endpoint
|
Microsoft.Network
|
privateEndpoints
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/privateEndpoints/{name}
|
public_ip
|
Microsoft.Network
|
publicIPAddresses
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/publicIPAddresses/{name}
|
purview
|
Microsoft.Purview
|
accounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Purview/accounts/{name}
|
redis_cache
|
Microsoft.Cache
|
Redis
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Cache/Redis/{name}
|
search
|
Microsoft.Search
|
searchServices
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Search/searchServices/{name}
|
sentinel
|
Microsoft.SecurityInsights
|
alertRules
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.SecurityInsights/alertRules/{name}
|
service_bus
|
Microsoft.ServiceBus
|
namespaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ServiceBus/namespaces/{name}
|
service_fabric
|
Microsoft.ServiceFabric
|
clusters
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ServiceFabric/clusters/{name}
|
signalr
|
Microsoft.SignalRService
|
SignalR
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.SignalRService/SignalR/{name}
|
spring_apps
|
Microsoft.AppPlatform
|
Spring
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.AppPlatform/Spring/{name}
|
sql_database
|
Microsoft.Sql
|
servers/databases
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/databases/{name}
|
sql_managed_instance
|
Microsoft.Sql
|
managedInstances
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/managedInstances/{name}
|
sql_server
|
Microsoft.Sql
|
servers
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Sql/servers/{name}
|
static_web_apps
|
Microsoft.Web
|
staticSites
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/staticSites/{name}
|
storage
|
Microsoft.Storage
|
storageAccounts
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Storage/storageAccounts/{name}
|
stream_analytics
|
Microsoft.StreamAnalytics
|
streamingjobs
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.StreamAnalytics/streamingjobs/{name}
|
synapse
|
Microsoft.Synapse
|
workspaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Synapse/workspaces/{name}
|
traffic_manager
|
Microsoft.Network
|
trafficManagerProfiles
|
global-only |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/trafficManagerProfiles/{name}
|
virtual_desktop
|
Microsoft.DesktopVirtualization
|
hostPools
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DesktopVirtualization/hostPools/{name}
|
virtual_desktop
|
Microsoft.DesktopVirtualization
|
workspaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.DesktopVirtualization/workspaces/{name}
|
virtual_machines
|
Microsoft.Compute
|
availabilitySets
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/availabilitySets/{name}
|
virtual_machines
|
Microsoft.Compute
|
virtualMachineScaleSets
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/virtualMachineScaleSets/{name}
|
virtual_machines
|
Microsoft.Compute
|
virtualMachines
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/virtualMachines/{name}
|
virtual_network
|
Microsoft.Network
|
networkInterfaces
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/networkInterfaces/{name}
|
virtual_network
|
Microsoft.Network
|
routeTables
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/routeTables/{name}
|
virtual_network
|
Microsoft.Network
|
virtualNetworks
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/virtualNetworks/{name}
|
vpn_gateway
|
Microsoft.Network
|
virtualNetworkGateways
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/virtualNetworkGateways/{name}
|
vpn_gateway
|
Microsoft.Network
|
vpnGateways
|
regional |
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Network/vpnGateways/{name}
|
GCP resources are identified by GCP Resource Names
[GCP-ResourceName]. The template_format
for all GCP entries is gcp_resource_name.¶
| service | resource_type | API service | region_behavior | Template |
|---|---|---|---|---|
alloydb
|
cluster
|
alloydb.googleapis.com
|
regional |
//alloydb.googleapis.com/projects/{project}/locations/{location}/clusters/{cluster}
|
api_gateway
|
api
|
apigateway.googleapis.com
|
regional |
//apigateway.googleapis.com/projects/{project}/locations/{location}/apis/{api}
|
api_gateway
|
gateway
|
apigateway.googleapis.com
|
regional |
//apigateway.googleapis.com/projects/{project}/locations/{location}/gateways/{gateway}
|
artifact_registry
|
repository
|
artifactregistry.googleapis.com
|
regional |
//artifactregistry.googleapis.com/projects/{project}/locations/{location}/repositories/{repository}
|
bigquery
|
dataset
|
bigquery.googleapis.com
|
regional |
//bigquery.googleapis.com/projects/{project}/datasets/{dataset}
|
bigquery
|
table
|
bigquery.googleapis.com
|
regional |
//bigquery.googleapis.com/projects/{project}/datasets/{dataset}/tables/{table}
|
bigtable
|
cluster
|
bigtableadmin.googleapis.com
|
regional |
//bigtableadmin.googleapis.com/projects/{project}/instances/{instance}/clusters/{cluster}
|
bigtable
|
instance
|
bigtableadmin.googleapis.com
|
regional |
//bigtableadmin.googleapis.com/projects/{project}/instances/{instance}
|
certificate_authority
|
caPool
|
privateca.googleapis.com
|
regional |
//privateca.googleapis.com/projects/{project}/locations/{location}/caPools/{caPool}
|
cloud_armor
|
securityPolicy
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/securityPolicies/{policy}
|
cloud_build
|
build
|
cloudbuild.googleapis.com
|
regional |
//cloudbuild.googleapis.com/projects/{project}/locations/{location}/builds/{build}
|
cloud_build
|
trigger
|
cloudbuild.googleapis.com
|
regional |
//cloudbuild.googleapis.com/projects/{project}/locations/{location}/triggers/{trigger}
|
cloud_deploy
|
pipeline
|
clouddeploy.googleapis.com
|
regional |
//clouddeploy.googleapis.com/projects/{project}/locations/{location}/deliveryPipelines/{pipeline}
|
cloud_deploy
|
target
|
clouddeploy.googleapis.com
|
regional |
//clouddeploy.googleapis.com/projects/{project}/locations/{location}/targets/{target}
|
cloud_dns
|
zone
|
dns.googleapis.com
|
global-only |
//dns.googleapis.com/projects/{project}/managedZones/{zone}
|
cloud_functions
|
function
|
cloudfunctions.googleapis.com
|
regional |
//cloudfunctions.googleapis.com/projects/{project}/locations/{location}/functions/{function}
|
cloud_iam
|
role
|
iam.googleapis.com
|
global-only |
//iam.googleapis.com/projects/{project}/roles/{role}
|
cloud_iam
|
serviceAccount
|
iam.googleapis.com
|
global-only |
//iam.googleapis.com/projects/{project}/serviceAccounts/{serviceAccount}
|
cloud_kms
|
cryptoKey
|
cloudkms.googleapis.com
|
regional |
//cloudkms.googleapis.com/projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey}
|
cloud_kms
|
keyRing
|
cloudkms.googleapis.com
|
regional |
//cloudkms.googleapis.com/projects/{project}/locations/{location}/keyRings/{keyRing}
|
cloud_logging
|
log
|
logging.googleapis.com
|
global-only |
//logging.googleapis.com/projects/{project}/logs/{log}
|
cloud_logging
|
logBucket
|
logging.googleapis.com
|
regional |
//logging.googleapis.com/projects/{project}/locations/{location}/buckets/{bucket}
|
cloud_logging
|
sink
|
logging.googleapis.com
|
global-only |
//logging.googleapis.com/projects/{project}/sinks/{sink}
|
cloud_monitoring
|
alertPolicy
|
monitoring.googleapis.com
|
global-only |
//monitoring.googleapis.com/projects/{project}/alertPolicies/{policy}
|
cloud_monitoring
|
notificationChannel
|
monitoring.googleapis.com
|
global-only |
//monitoring.googleapis.com/projects/{project}/notificationChannels/{channel}
|
cloud_monitoring
|
uptimeCheckConfig
|
monitoring.googleapis.com
|
global-only |
//monitoring.googleapis.com/projects/{project}/uptimeCheckConfigs/{config}
|
cloud_run
|
job
|
run.googleapis.com
|
regional |
//run.googleapis.com/projects/{project}/locations/{location}/jobs/{job}
|
cloud_run
|
service
|
run.googleapis.com
|
regional |
//run.googleapis.com/projects/{project}/locations/{location}/services/{service}
|
cloud_scheduler
|
job
|
cloudscheduler.googleapis.com
|
regional |
//cloudscheduler.googleapis.com/projects/{project}/locations/{location}/jobs/{job}
|
cloud_sql
|
instance
|
sqladmin.googleapis.com
|
regional |
//sqladmin.googleapis.com/projects/{project}/instances/{instance}
|
cloud_storage
|
bucket
|
storage.googleapis.com
|
regional |
//storage.googleapis.com/projects/{project}/buckets/{bucket}
|
cloud_tasks
|
queue
|
cloudtasks.googleapis.com
|
regional |
//cloudtasks.googleapis.com/projects/{project}/locations/{location}/queues/{queue}
|
composer
|
environment
|
composer.googleapis.com
|
regional |
//composer.googleapis.com/projects/{project}/locations/{location}/environments/{environment}
|
compute
|
address
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/regions/{region}/addresses/{address}
|
compute
|
backendService
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/backendServices/{backendService}
|
compute
|
disk
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/zones/{zone}/disks/{disk}
|
compute
|
firewall
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/firewalls/{firewall}
|
compute
|
forwardingRule
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/regions/{region}/forwardingRules/{rule}
|
compute
|
healthCheck
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/healthChecks/{healthCheck}
|
compute
|
image
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/images/{image}
|
compute
|
instance
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/zones/{zone}/instances/{instance}
|
compute
|
instanceGroup
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/zones/{zone}/instanceGroups/{group}
|
compute
|
instanceTemplate
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/instanceTemplates/{template}
|
compute
|
interconnect
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/interconnects/{interconnect}
|
compute
|
network
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/networks/{network}
|
compute
|
router
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/regions/{region}/routers/{router}
|
compute
|
snapshot
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/snapshots/{snapshot}
|
compute
|
sslCertificate
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/sslCertificates/{certificate}
|
compute
|
subnetwork
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/regions/{region}/subnetworks/{subnetwork}
|
compute
|
targetHttpProxy
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/targetHttpProxies/{proxy}
|
compute
|
urlMap
|
compute.googleapis.com
|
global-only |
//compute.googleapis.com/projects/{project}/global/urlMaps/{urlMap}
|
compute
|
vpnGateway
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/regions/{region}/vpnGateways/{gateway}
|
compute
|
vpnTunnel
|
compute.googleapis.com
|
regional |
//compute.googleapis.com/projects/{project}/regions/{region}/vpnTunnels/{tunnel}
|
data_catalog
|
entryGroup
|
datacatalog.googleapis.com
|
regional |
//datacatalog.googleapis.com/projects/{project}/locations/{location}/entryGroups/{entryGroup}
|
dataflow
|
job
|
dataflow.googleapis.com
|
regional |
//dataflow.googleapis.com/projects/{project}/locations/{location}/jobs/{job}
|
dataproc
|
cluster
|
dataproc.googleapis.com
|
regional |
//dataproc.googleapis.com/projects/{project}/regions/{region}/clusters/{cluster}
|
dataproc
|
job
|
dataproc.googleapis.com
|
regional |
//dataproc.googleapis.com/projects/{project}/regions/{region}/jobs/{job}
|
dataproc
|
workflowTemplate
|
dataproc.googleapis.com
|
regional |
//dataproc.googleapis.com/projects/{project}/regions/{region}/workflowTemplates/{template}
|
dialogflow
|
agent
|
dialogflow.googleapis.com
|
regional |
//dialogflow.googleapis.com/projects/{project}/locations/{location}/agents/{agent}
|
eventarc
|
trigger
|
eventarc.googleapis.com
|
regional |
//eventarc.googleapis.com/projects/{project}/locations/{location}/triggers/{trigger}
|
filestore
|
instance
|
file.googleapis.com
|
regional |
//file.googleapis.com/projects/{project}/locations/{location}/instances/{instance}
|
firestore
|
database
|
firestore.googleapis.com
|
regional |
//firestore.googleapis.com/projects/{project}/databases/{database}
|
gke_hub
|
membership
|
gkehub.googleapis.com
|
regional |
//gkehub.googleapis.com/projects/{project}/locations/{location}/memberships/{membership}
|
kubernetes_engine
|
cluster
|
container.googleapis.com
|
regional |
//container.googleapis.com/projects/{project}/locations/{location}/clusters/{cluster}
|
memorystore
|
instance
|
redis.googleapis.com
|
regional |
//redis.googleapis.com/projects/{project}/locations/{location}/instances/{instance}
|
pubsub
|
subscription
|
pubsub.googleapis.com
|
regional |
//pubsub.googleapis.com/projects/{project}/subscriptions/{subscription}
|
pubsub
|
topic
|
pubsub.googleapis.com
|
regional |
//pubsub.googleapis.com/projects/{project}/topics/{topic}
|
secret_manager
|
secret
|
secretmanager.googleapis.com
|
regional |
//secretmanager.googleapis.com/projects/{project}/secrets/{secret}
|
security_command_center
|
source
|
securitycenter.googleapis.com
|
global-only |
//securitycenter.googleapis.com/organizations/{organization}/sources/{source}
|
service_directory
|
namespace
|
servicedirectory.googleapis.com
|
regional |
//servicedirectory.googleapis.com/projects/{project}/locations/{location}/namespaces/{namespace}
|
spanner
|
database
|
spanner.googleapis.com
|
regional |
//spanner.googleapis.com/projects/{project}/instances/{instance}/databases/{database}
|
spanner
|
instance
|
spanner.googleapis.com
|
regional |
//spanner.googleapis.com/projects/{project}/instances/{instance}
|
vertex_ai
|
dataset
|
aiplatform.googleapis.com
|
regional |
//aiplatform.googleapis.com/projects/{project}/locations/{location}/datasets/{dataset}
|
vertex_ai
|
endpoint
|
aiplatform.googleapis.com
|
regional |
//aiplatform.googleapis.com/projects/{project}/locations/{location}/endpoints/{endpoint}
|
vertex_ai
|
model
|
aiplatform.googleapis.com
|
regional |
//aiplatform.googleapis.com/projects/{project}/locations/{location}/models/{model}
|
vertex_ai
|
trainingPipeline
|
aiplatform.googleapis.com
|
regional |
//aiplatform.googleapis.com/projects/{project}/locations/{location}/trainingPipelines/{pipeline}
|
workflows
|
workflow
|
workflows.googleapis.com
|
regional |
//workflows.googleapis.com/projects/{project}/locations/{location}/workflows/{workflow}
|
Cloudflare resources are identified by the Cloudflare API Locator
format [CF-API]:
com.cloudflare.api.account.{account_id}.{resource-type}.{id}.
All Cloudflare resources are globally scoped
(region_behavior: global-only).
The template_format for all Cloudflare entries is
cloudflare_locator.¶
| service | resource_type (hardcoded) | Template |
|---|---|---|
access
|
access_application
|
com.cloudflare.api.account.{account_id}.access_application.{id}
|
access
|
access_group
|
com.cloudflare.api.account.{account_id}.access_group.{id}
|
access
|
access_identity_provider
|
com.cloudflare.api.account.{account_id}.access_identity_provider.{id}
|
access
|
access_service_token
|
com.cloudflare.api.account.{account_id}.access_service_token.{id}
|
ai_gateway
|
ai_gateway
|
com.cloudflare.api.account.{account_id}.ai_gateway.{id}
|
api_shield
|
api_shield
|
com.cloudflare.api.account.{account_id}.api_shield.{id}
|
argo
|
argo_tunnel
|
com.cloudflare.api.account.{account_id}.argo_tunnel.{id}
|
d1
|
d1_database
|
com.cloudflare.api.account.{account_id}.d1_database.{id}
|
dns
|
dns_record
|
com.cloudflare.api.account.{account_id}.dns_record.{id}
|
dns
|
zone
|
com.cloudflare.api.account.{account_id}.zone.{id}
|
durable_objects
|
durable_object_namespace
|
com.cloudflare.api.account.{account_id}.durable_object_namespace.{id}
|
email_routing
|
email_routing_rule
|
com.cloudflare.api.account.{account_id}.email_routing_rule.{id}
|
hyperdrive
|
hyperdrive_config
|
com.cloudflare.api.account.{account_id}.hyperdrive_config.{id}
|
images
|
image
|
com.cloudflare.api.account.{account_id}.image.{id}
|
kv
|
kv_namespace
|
com.cloudflare.api.account.{account_id}.kv_namespace.{id}
|
load_balancer
|
load_balancer
|
com.cloudflare.api.account.{account_id}.load_balancer.{id}
|
load_balancer
|
load_balancer_pool
|
com.cloudflare.api.account.{account_id}.load_balancer_pool.{id}
|
logpush
|
logpush_job
|
com.cloudflare.api.account.{account_id}.logpush_job.{id}
|
magic_firewall
|
magic_firewall_ruleset
|
com.cloudflare.api.account.{account_id}.magic_firewall_ruleset.{id}
|
magic_transit
|
magic_transit_tunnel
|
com.cloudflare.api.account.{account_id}.magic_transit_tunnel.{id}
|
magic_wan
|
magic_wan_connector
|
com.cloudflare.api.account.{account_id}.magic_wan_connector.{id}
|
pages
|
pages_project
|
com.cloudflare.api.account.{account_id}.pages_project.{id}
|
queues
|
queue
|
com.cloudflare.api.account.{account_id}.queue.{id}
|
r2
|
r2_bucket
|
com.cloudflare.api.account.{account_id}.r2_bucket.{id}
|
registrar
|
registrar_domain
|
com.cloudflare.api.account.{account_id}.registrar_domain.{id}
|
spectrum
|
spectrum_application
|
com.cloudflare.api.account.{account_id}.spectrum_application.{id}
|
ssl
|
custom_certificate
|
com.cloudflare.api.account.{account_id}.custom_certificate.{id}
|
ssl
|
origin_ca_certificate
|
com.cloudflare.api.account.{account_id}.origin_ca_certificate.{id}
|
stream
|
stream_live_input
|
com.cloudflare.api.account.{account_id}.stream_live_input.{id}
|
stream
|
stream_video
|
com.cloudflare.api.account.{account_id}.stream_video.{id}
|
tunnel
|
tunnel
|
com.cloudflare.api.account.{account_id}.tunnel.{id}
|
turnstile
|
turnstile_widget
|
com.cloudflare.api.account.{account_id}.turnstile_widget.{id}
|
vectorize
|
vectorize_index
|
com.cloudflare.api.account.{account_id}.vectorize_index.{id}
|
waf
|
waf
|
com.cloudflare.api.account.{account_id}.waf.{id}
|
waf
|
waf_ruleset
|
com.cloudflare.api.account.{account_id}.waf_ruleset.{id}
|
waiting_room
|
waiting_room
|
com.cloudflare.api.account.{account_id}.waiting_room.{id}
|
workers
|
worker
|
com.cloudflare.api.account.{account_id}.worker.{id}
|
workers
|
worker_cron_trigger
|
com.cloudflare.api.account.{account_id}.worker_cron_trigger.{id}
|
workers
|
worker_route
|
com.cloudflare.api.account.{account_id}.worker_route.{id}
|
workers_ai
|
workers_ai_model
|
com.cloudflare.api.account.{account_id}.workers_ai_model.{id}
|
zero_trust
|
access_policy
|
com.cloudflare.api.account.{account_id}.access_policy.{id}
|
zero_trust
|
dlp_profile
|
com.cloudflare.api.account.{account_id}.dlp_profile.{id}
|
zero_trust
|
gateway_rule
|
com.cloudflare.api.account.{account_id}.gateway_rule.{id}
|
Oracle Cloud resources are identified by Oracle Cloud IDs (OCIDs)
[OCI-OCID]. Regional format:
ocid1.{type}.{realm}.{region}..{unique-id}.
Global format:
ocid1.{type}.{realm}...{unique-id}.
The realm slot is hardcoded to oc1 for commercial regions.
The template_format for all Oracle entries is
oracle_ocid.¶
| service | OCID type | region_behavior | Template |
|---|---|---|---|
api_gateway
|
apigateway
|
regional |
ocid1.apigateway.{realm=oc1}.{region}..{unique-id}
|
api_gateway
|
apideployment
|
regional |
ocid1.apideployment.{realm=oc1}.{region}..{unique-id}
|
autonomous_database
|
autonomousdatabase
|
regional |
ocid1.autonomousdatabase.{realm=oc1}.{region}..{unique-id}
|
bastion
|
bastion
|
regional |
ocid1.bastion.{realm=oc1}.{region}..{unique-id}
|
bastion
|
bastionsession
|
regional |
ocid1.bastionsession.{realm=oc1}.{region}..{unique-id}
|
block_storage
|
bootvolume
|
regional |
ocid1.bootvolume.{realm=oc1}.{region}..{unique-id}
|
block_storage
|
bootvolumebackup
|
regional |
ocid1.bootvolumebackup.{realm=oc1}.{region}..{unique-id}
|
block_storage
|
volume
|
regional |
ocid1.volume.{realm=oc1}.{region}..{unique-id}
|
block_storage
|
volumebackup
|
regional |
ocid1.volumebackup.{realm=oc1}.{region}..{unique-id}
|
block_storage
|
volumegroup
|
regional |
ocid1.volumegroup.{realm=oc1}.{region}..{unique-id}
|
cloud_guard
|
cloudguardtarget
|
regional |
ocid1.cloudguardtarget.{realm=oc1}.{region}..{unique-id}
|
compute
|
dedicatedvmhost
|
regional |
ocid1.dedicatedvmhost.{realm=oc1}.{region}..{unique-id}
|
compute
|
image
|
regional |
ocid1.image.{realm=oc1}.{region}..{unique-id}
|
compute
|
instance
|
regional |
ocid1.instance.{realm=oc1}.{region}..{unique-id}
|
compute
|
instancepool
|
regional |
ocid1.instancepool.{realm=oc1}.{region}..{unique-id}
|
container_instances
|
containerinstance
|
regional |
ocid1.containerinstance.{realm=oc1}.{region}..{unique-id}
|
data_science
|
datasciencemodel
|
regional |
ocid1.datasciencemodel.{realm=oc1}.{region}..{unique-id}
|
data_science
|
datasciencenotebooksession
|
regional |
ocid1.datasciencenotebooksession.{realm=oc1}.{region}..{unique-id}
|
data_science
|
datascienceproject
|
regional |
ocid1.datascienceproject.{realm=oc1}.{region}..{unique-id}
|
database
|
database
|
regional |
ocid1.database.{realm=oc1}.{region}..{unique-id}
|
database
|
dbhome
|
regional |
ocid1.dbhome.{realm=oc1}.{region}..{unique-id}
|
database
|
dbsystem
|
regional |
ocid1.dbsystem.{realm=oc1}.{region}..{unique-id}
|
database
|
exadatainfrastructure
|
regional |
ocid1.exadatainfrastructure.{realm=oc1}.{region}..{unique-id}
|
devops
|
devopsbuildpipeline
|
regional |
ocid1.devopsbuildpipeline.{realm=oc1}.{region}..{unique-id}
|
devops
|
devopsdeploypipeline
|
regional |
ocid1.devopsdeploypipeline.{realm=oc1}.{region}..{unique-id}
|
devops
|
devopsproject
|
regional |
ocid1.devopsproject.{realm=oc1}.{region}..{unique-id}
|
devops
|
devopsrepository
|
regional |
ocid1.devopsrepository.{realm=oc1}.{region}..{unique-id}
|
dns
|
dns-zone
|
regional |
ocid1.dns-zone.{realm=oc1}.{region}..{unique-id}
|
events
|
eventrule
|
regional |
ocid1.eventrule.{realm=oc1}.{region}..{unique-id}
|
file_storage
|
exportset
|
regional |
ocid1.exportset.{realm=oc1}.{region}..{unique-id}
|
file_storage
|
filesystem
|
regional |
ocid1.filesystem.{realm=oc1}.{region}..{unique-id}
|
file_storage
|
mounttarget
|
regional |
ocid1.mounttarget.{realm=oc1}.{region}..{unique-id}
|
functions
|
fnapp
|
regional |
ocid1.fnapp.{realm=oc1}.{region}..{unique-id}
|
functions
|
fnfunc
|
regional |
ocid1.fnfunc.{realm=oc1}.{region}..{unique-id}
|
identity
|
compartment
|
global-only |
ocid1.compartment.{realm=oc1}...{unique-id}
|
identity
|
group
|
global-only |
ocid1.group.{realm=oc1}...{unique-id}
|
identity
|
policy
|
global-only |
ocid1.policy.{realm=oc1}...{unique-id}
|
identity
|
user
|
global-only |
ocid1.user.{realm=oc1}...{unique-id}
|
integration
|
integrationinstance
|
regional |
ocid1.integrationinstance.{realm=oc1}.{region}..{unique-id}
|
key_management
|
key
|
regional |
ocid1.key.{realm=oc1}.{region}..{unique-id}
|
load_balancer
|
loadbalancer
|
regional |
ocid1.loadbalancer.{realm=oc1}.{region}..{unique-id}
|
load_balancer
|
networkloadbalancer
|
regional |
ocid1.networkloadbalancer.{realm=oc1}.{region}..{unique-id}
|
logging
|
log
|
regional |
ocid1.log.{realm=oc1}.{region}..{unique-id}
|
logging
|
loggroup
|
regional |
ocid1.loggroup.{realm=oc1}.{region}..{unique-id}
|
monitoring
|
alarm
|
regional |
ocid1.alarm.{realm=oc1}.{region}..{unique-id}
|
mysql
|
mysqldbsystem
|
regional |
ocid1.mysqldbsystem.{realm=oc1}.{region}..{unique-id}
|
networking
|
drg
|
regional |
ocid1.drg.{realm=oc1}.{region}..{unique-id}
|
networking
|
internetgateway
|
regional |
ocid1.internetgateway.{realm=oc1}.{region}..{unique-id}
|
networking
|
natgateway
|
regional |
ocid1.natgateway.{realm=oc1}.{region}..{unique-id}
|
networking
|
networksecuritygroup
|
regional |
ocid1.networksecuritygroup.{realm=oc1}.{region}..{unique-id}
|
networking
|
publicip
|
regional |
ocid1.publicip.{realm=oc1}.{region}..{unique-id}
|
networking
|
routetable
|
regional |
ocid1.routetable.{realm=oc1}.{region}..{unique-id}
|
networking
|
securitylist
|
regional |
ocid1.securitylist.{realm=oc1}.{region}..{unique-id}
|
networking
|
servicegateway
|
regional |
ocid1.servicegateway.{realm=oc1}.{region}..{unique-id}
|
networking
|
subnet
|
regional |
ocid1.subnet.{realm=oc1}.{region}..{unique-id}
|
nosql
|
nosqltable
|
regional |
ocid1.nosqltable.{realm=oc1}.{region}..{unique-id}
|
notifications
|
onstopic
|
regional |
ocid1.onstopic.{realm=oc1}.{region}..{unique-id}
|
object_storage
|
bucket
|
regional |
ocid1.bucket.{realm=oc1}.{region}..{unique-id}
|
oke
|
cluster
|
regional |
ocid1.cluster.{realm=oc1}.{region}..{unique-id}
|
oke
|
nodepool
|
regional |
ocid1.nodepool.{realm=oc1}.{region}..{unique-id}
|
resource_manager
|
ormstack
|
regional |
ocid1.ormstack.{realm=oc1}.{region}..{unique-id}
|
streaming
|
stream
|
regional |
ocid1.stream.{realm=oc1}.{region}..{unique-id}
|
streaming
|
streampool
|
regional |
ocid1.streampool.{realm=oc1}.{region}..{unique-id}
|
vault
|
vault
|
regional |
ocid1.vault.{realm=oc1}.{region}..{unique-id}
|
vcn
|
vcn
|
regional |
ocid1.vcn.{realm=oc1}.{region}..{unique-id}
|
vulnerability_scanning
|
vssscantarget
|
regional |
ocid1.vssscantarget.{realm=oc1}.{region}..{unique-id}
|
waf
|
waaspolicy
|
regional |
ocid1.waaspolicy.{realm=oc1}.{region}..{unique-id}
|
The following is a complete CRIT record for a MySQL vulnerability affecting AWS RDS, illustrating the engine_version subschema with opt-in auto-upgrade and the deployed-before-fix problem.¶
{
"vectorString": "CRITv0.2.0/CP:AW/VS:FX/FP:RR/SR:CA/RL:SC/EV:T/PP:1719792000/SA:1514764800#CVE-2024-6387:ec2:instance",
"vuln_id": "CVE-2024-20967",
"provider": "aws",
"service": "rds",
"resource_type": "db",
"resource_lifecycle": "stateful_managed",
"shared_responsibility": "customer_action_required",
"vex_status": "fixed",
"template": "arn:aws:rds:{region}:{account}:db:{resource-id}",
"template_format": "aws_arn",
"temporal": {
"service_available_date": "2013-09-18",
"vulnerability_introduced_date": "2023-01-01",
"vulnerability_introduced_date_estimated":
true,
"vuln_published_date": "2024-01-16",
"provider_acknowledged_date": "2024-01-20",
"provider_fix_date": "2024-02-15",
"customer_deadline_date": "2024-04-15",
"customer_deadline_source": "internal_policy"
},
"fix_propagation": "version_update",
"existing_deployments_remain_vulnerable":
true,
"provider_fix_version": {
"version_type": "engine_version",
"comparison": "gte",
"engine": "mysql",
"version": "8.0.36",
"auto_upgrade": false,
"note": "auto_minor_version_upgrade must be enabled
for automatic application."
},
"remediation_actions": [
{
"sequence": 1,
"type": "version_update",
"title": "Upgrade RDS MySQL engine to 8.0.36
or later",
"description": "aws rds modify-db-instance \
--db-instance-identifier {resource-id} \
--engine-version 8.0.36 --apply-immediately",
"provider_guidance_url":
"https://docs.aws.amazon.com/AmazonRDS/
latest/UserGuide/USER_UpgradeDBInstance.MySQL.html",
"auto_remediable": true,
"requires_downtime": true,
"stateful_impact": "backup_recommended",
"estimated_downtime_range_seconds": { "min": 60, "max": 600 },
"compensating_control": false
}
],
"detections": [
{
"provider": "aws",
"service": "config_rule",
"query_language": "cloudwatch_filter",
"query": "{ ($.eventName = ModifyDBInstance) &&
($.requestParameters.engineVersion < \"8.0.36\") }",
"detection_phase": "misconfiguration",
"description": "Detects when an RDS instance is modified to
a MySQL version below the fix threshold."
}
],
"provider_advisory": {
"advisory_id": "ALAS2-2024-2489",
"advisory_url": "https://alas.aws.amazon.com/AL2/ALAS-2024.html"
}
}
The following issues require design decisions prior to a stable v1.0 release:¶
The author thanks the Wiz security research team for open-sourcing their cloud vulnerability database work, the Anchore team for open-sourcing their CVE enrichment work, the CVEProject and OpenSSF communities for the ADP container and OSV schema mechanisms that make upstream integration possible, and the OWASP community for providing a home for applied security standards work.¶