Palo Alto Networks Prisma Cloud (CSPM)
The Prisma Cloud Connector centralizes cloud asset inventory from AWS, Azure, and GCP into Qualys Enterprise TruRisk Management, enabling security teams to correlate and analyze cloud resources within a unified platform.
By normalizing metadata and retaining cloud tags from Prisma Cloud, it provides consistent visibility across multiple cloud environments without manual data collection.
The connector supports incremental synchronization, allowing teams to maintain current asset information with minimal overhead. This integration solves the fragmentation problem by consolidating cloud assets across separate systems for comprehensive risk analysis and asset correlation.
Connector Details
The following table provides details related to the Prisma connector.
| Vendor | Palo Alto Networks |
| Product | Prisma Cloud |
| Connector Category | Cloud Security |
| Asset Types Supported | Cloud Resources |
| Finding Types Supported | Yes |
| Supported Version & Type | SaaS (Prisma Cloud API / latest) |
| Integration Method | API Integration (REST) |
| Direction | Unidirectional (Prisma > Qualys) |
| Incremental Sync (Delta) | Supported (connector supports incremental inventory pulls) |
| Import of Source Tags | Supported (cloud tags retained) |
Connection Settings
User Roles and Permissions
The connector requires a Prisma Cloud access key/secret created in Prisma Cloud Settings > Access Control > Access Keys. The access key must have permissions to read asset inventory and resource listings.
Click Add to add new Access Keys.

These credentials can be used for the Twistlock Client ID and URL field in the Authentication details.
Authentication Details
Provide the following values in the connector configuration screen:
| Name | Key | Type | Description / Example |
|---|---|---|---|
| Base URL (Prisma Pod) | domainName |
String | Prisma Cloud API base URL (e.g. https://api.prismacloud.io or region-specific pod). |
| Access Key | access_key |
String | Prisma Cloud Access Key ID generated from Access Keys. |
| Secret Key | secret_key |
Encrypted | Prisma Cloud Secret corresponding to the Access Key (store encrypted). |
|
Twistlock url |
|
String |
Base URL for the Twistlock instance |
| Twistlock Client Secret |
Client Secret |
String | The same Cloud Secret generated for Secret Keys. |
|
Twistlock Client ID |
|
String |
The same Cloud Access Key ID generated for Access Keys. |
Connector Configuration
Minimal steps to register the connector in ETM:
- Log in to Qualys ETM.
- Navigate to Connectors > Integration and locate Prisma Connector.
- Click Manage, provide Name and Description.
- Enter authentication values: Base URL, Access Key, Secret Key.
You can select the Use the Prisma Compute (Twistlock) as vulnerability source checkbox to provide Twistlock credentials and fetch findings from Twistlock. - Save the connector. Create profiles (schedules) as required.

Schedule
Schedules control ingestion frequency and transform maps used during execution.
- Configure a Schedule: Single Occurrence or Recurring (start/end dates/times).
- Set Assets and Findings to ingest during the connector run.

How Does a Connection Work?
On schedule (or on-demand), the connector authenticates to Prisma using the configured access key/secret, fetches resource inventory and related metadata, applies the selected transform map, and imports the normalized assets into ETM where Identification Rules correlate them with existing assets. After a successful run, the connector state appears as Processed.
Connector States
A successfully configured connector goes through 4 states.
- Registered - The connector is successfully created and registered to fetch data from the vendor.
- Scheduled - The connector is scheduled to execute a connection with the vendor.
- Processing - A connection is executed and the connector is fetching the asset and findings data.
- Processed - The connector has successfully fetched the assets, it may still be under process of fetching the findings. Wait for some more time for the connector to fetch the findings completely.
The Processed state indicates that the Connector is successfully configured but it is under the process of importing all your assets and findings. This process (specifically for findings) may take some time.
This entire process may take up to 2 hours for completion. Once it is done, you can find the imported data in Enterprise TruRisk Management (ETM).
Viewing Assets and Findings in ETM
After ingestion, view Prisma assets in ETM Inventory.
- Assets: Enterprise TruRisk Management > Inventory > Assets > Cloud. Use the tag or vendor filter:
tags.name:"Prisma Cloud"orfinding.vendorProductName:"Palo Alto Networks".
- Findings: Enterprise TruRisk Management > Risk Management > Findings > Vulnerability. Filter by vendor product name as above.
API Endpoints
|
Auth API |
https://api.prismacloud.io/login |
Authentication token validity 30 mins. Its refreshed in every 30 mins |
|
Fetch asset list |
https://api.prismacloud.io/v2/resource/scan_info |
Default Params: batch size: 100 API Limitations: 5 requests per second |
|
Fetch asset details and vulns |
https://api.prismacloud.io/uai/v1/asset |
Default Params: batch size: 100 API Limitations: 5 requests per second |
|
Fetch asset details and Misconfiguration |
https://api.prismacloud.io/policy/ |
Default Params: API Limitations: 5 requests per second |
|
Fetch vunerabiity from Twisklock |
https://us-east1.cloud.twistlock.com/ |
Default Params: API Limitations: 5 requests per second |
Prisma Cloud Transformation Map
The default transformation map configured for the Prisma cloud connector is fetched from the database and utilized during the execution of the connector profile to perform data transformation.
Compute Transformation Map
Transformation map for AWS EC2Transformation map for AWS EC2
| rrn | externalAssetId |
| asset name | hostname |
| environmentId | vendorAssetId |
| cloudType | cloudInfo.provider |
| tags[].key | baseUrl |
| tags[].value | externalTags[].key |
| hasAuth | externalTags[].value |
| dataStateName | cloudInstance.state |
| dataVpcid | cloudInstance.vpcId |
| dataImageid | cloudInstance.imageId" |
| dataPlatform | operatingSystem.name |
| dataSubnetid | cloudInstance.subnetId |
| dataInstanceid | cloudInstance.id |
| dataInstancetype | cloudInstance.type |
| dataPublicipaddress | publicIpv4Address |
| dataPrivateipaddress | privateIpv4Address |
| networkInterfaceId | networkInterfaceId |
| regionName | cloudInfo.region |
| serviceName | services[].name |
| macAddress | macAddress |
Transformation map for Azure VMTransformation map for Azure VM
| externalAssetId | externalAssetId |
| asset name | hostname |
| environmentId | vendorAssetId |
| cloudType | cloudInfo.provider |
| tags[].key | externalTags[].key |
| tags[].value | externalTags[].value |
| dataStateName | cloudInstance.state |
| dataVpcid | cloudInstance.vpcId |
| dataImageid | cloudInstance.imageId" |
| dataPlatform | operatingSystem.name |
| dataSubnetid | cloudInstance.subnetId |
| dataInstanceid | cloudInstance.id |
| dataInstancetype | cloudInstance.type |
| publicIpAddress | publicIpv4Address |
| dataPrivateipaddress | privateIpv4Address |
| networkInterfaceId | networkInterfaceId |
| serviceName | services[].name |
| macAddress | macAddress |
Transformation map for GCP VMTransformation map for GCP VM
| externalAssetId | externalAssetId |
| asset name | hostname |
| environmentId | vendorAssetId |
| cloudType | cloudInfo.provider |
| tags[].key | externalTags[].key |
| tags[].value | externalTags[].value |
| regionName | cloudInfo.region |
| vpcId | cloudInstance.vpcId |
| VM Instance Id | cloudInstance.id |
| networkInterfaces name | networkInterfaceId |
| natIP | publicIpv4Address |
| serviceName | services.name |
Storage Transformation map
Azure Storage AccountAzure Storage Account
| externalAssetId | externalAssetId |
| sku.name | hostname |
| environmentId | vendorAssetId |
| cloudType | cloudInfo.provider |
| regionId | region |
| url | providerUrl |
| accountName | accountName |
| accountId | accountId |
| trueInternetExposure | untypedAttributes.& |
| assetType | StorageType |
| serviceName | serviceName |
| regionName | region |
| externalAssetId | externalAssetId |
| bucketName | hostname |
| environmentId | vendorAssetId |
| cloudType | cloudInfo.provider |
| regionId | region |
| url | providerUrl |
| accountName | accountName |
| accountId | accountId |
| trueInternetExposure | untypedAttributes.& |
| assetType | StorageType |
| serviceName | serviceName |
| regionName | region |
Azure storage account blob containerAzure storage account blob container
| externalAssetId | externalAssetId |
| bucketName | hostname |
| id | vendorAssetId |
| cloudType | cloudInfo.provider |
| regionId | region |
| url | providerUrl |
| accountName | accountName |
| accountId | accountId |
| trueInternetExposure | untypedAttributes.& |
| assetType | StorageType |
| serviceName | serviceName |
| regionId | region |
Azure storage account file service propertyAzure storage account file service property
| externalAssetId | externalAssetId |
| sku.name | hostname |
| id | vendorAssetId |
| cloudType | cloudInfo.provider |
| regionId | region |
| url | providerUrl |
| accountName | accountName |
| accountId | accountId |
| trueInternetExposure | untypedAttributes.& |
| assetType | StorageType |
| serviceName | serviceName |
| regionId | region |
Container Instance
Container_instanceContainer_instance
| externalAssetId | externalAssetId |
| name | hostname |
| id | vendorAssetId |
| cloudType | cloudInfo.provider |
| regionName | region |
| port | hostPort |
| image | image |
| tag | tag |
| registry | registry |
| containerPort | port |
| protocol | protocol |
| createdTs | startTime |
| tags[].key | externalTags[].key |
| tags[].value | externalTags[].value |
| accountId | accountId |
| environmentVariables | environmentVariables |
Container Image
Container_imageContainer_image
| externalAssetId | externalAssetId |
| name | hostname |
| id | vendorAssetId |
| regionId | region |
| repository | name |
| repository | repository |
| asset.name (repo:tag) | containerImageAssetClass.tag |
| trueInternetExposure | untypedAttributes.& |
| digest | digest |
| createdTs | creationDate |
| osDistro | os |
| externalTags | tags |
Finding Vulnerability
FINDING VULNERABILITYFINDING VULNERABILITY
| externalAssetId | externalAssetId |
| name | hostname |
| description | description |
| Id | externalFindingId |
| name | hostname |
| link | findingURL |
| externalAssetId/rrn | externalAssetId |
| severity | severity |
| source | vendorName |
| cve | cveId |
| discovered | firstFoundOn |
| status | findingStatus |
| severity | riskScore |
| fixDate | lastFixedOn |
| vecStr | vector |
| lastFoundOn | updatedOn |
| privateIpAddress | ipv4Addresses |
| cloudType | cloudInfo.provider |
| macAddress | macAddress |
Misconfiguration Transformation map
Storage Asset Class: AZURE.STORAGE.ACCOUNTStorage Asset Class: AZURE.STORAGE.ACCOUNT
| asset.externalAssetId | asset.assetHeader.externalAssetId |
| asset.id | asset.assetHeader.vendorAssetId |
| FUNCTION_PICKER (asset.cloudType) | asset.assetDetail.cloudInfo.provider |
| asset.createdTs | asset.assetDetail.sourceCreatedAt |
| asset.insertTs | asset.assetDetail.sourceUpdatedAt |
| asset.data.sku.name | asset.assetDetail.name |
| asset.data.properties.encryption.services.blob.enabled | asset.assetDetail.storageAssetClass.Encryption.enabled |
| asset.regionId | asset.assetDetail.cloudInfo.region |
| asset.url | asset.assetDetail.cloudInfo.providerUrl |
| asset.assetType | asset.assetHeader.assetTypeName |
| asset.accountName | asset.assetDetail.cloudInfo.accountName |
| asset.accountId | asset.assetDetail.cloudInfo.accountId |
| asset.trueInternetExposure | asset.assetDetail.untypedAttributes.& |
| asset.assetType | asset.assetDetail.storageAssetClass.StorageType |
| FUNCTION_PICKER (asset.cloudType) | asset.assetDetail.storageAssetClass.provider |
| asset.serviceName | asset.assetDetail.storageAssetClass.serviceName |
| asset.regionName | asset.assetDetail.storageAssetClass.region |
| asset.assetType | type |
| asset.externalAssetId | findingGroup.findings[].asset.externalAssetId |
| scannedPolicies[].name | findingGroup.findings[].name |
| scannedPolicies[].scannedPoliciesInfo.name | findingGroup.findings[].findingType.misconfiguration.policy.title |
| scannedPolicies[].scannedPoliciesInfo.policyType | findingGroup.findings[].findingType.misconfiguration.policy.type |
| scannedPolicies[].scannedPoliciesInfo.description | findingGroup.findings[].findingType.misconfiguration.policy.description |
| FUNCTION_PICKER (scannedPolicies[].severity) | findingGroup.findings[].severity |
| scannedPolicies[].scannedPoliciesInfo.rule.name | findingGroup.findings[].findingType.misconfiguration.rule.ruleName |
| scannedPolicies[].scannedPoliciesInfo.recommendation | findingGroup.findings[].remediation.remediationStrategy |
| scannedPolicies[].scannedPoliciesInfo.createdOn | findingGroup.findings[].firstFoundOn |
| scannedPolicies[].scannedPoliciesInfo.lastModifiedOn | findingGroup.findings[].lastFoundOn |
| FUNCTION_PICKER (scannedPolicies[].passed) | findingGroup.findings[].findingStatus |
Storage Asset Class: AWS.S3.BUCKETStorage Asset Class: AWS.S3.BUCKET
| asset.externalAssetId | asset.assetHeader.externalAssetId |
| asset.id | asset.assetHeader.vendorAssetId |
| FUNCTION_PICKER (asset.cloudType) | asset.assetDetail.cloudInfo.provider |
| asset.createdTs | asset.assetDetail.sourceCreatedAt |
| asset.insertTs | asset.assetDetail.sourceUpdatedAt |
| asset.data.accountId | asset.assetDetail.cloudInfo.accountId |
| asset.data.bucketName | asset.assetDetail.name |
| asset.regionId | asset.assetDetail.cloudInfo.region |
| asset.url | asset.assetDetail.cloudInfo.providerUrl |
| asset.assetType | asset.assetHeader.assetTypeName |
| asset.accountName | asset.assetDetail.cloudInfo.accountName |
| asset.trueInternetExposure | asset.assetDetail.untypedAttributes.& |
| asset.assetType | asset.assetDetail.storageAssetClass.StorageType |
| FUNCTION_PICKER (asset.cloudType) | asset.assetDetail.storageAssetClass.provider |
| asset.serviceName | asset.assetDetail.storageAssetClass.serviceName |
| asset.regionName | asset.assetDetail.storageAssetClass.region |
| asset.assetType | type |
| asset.externalAssetId | findingGroup.findings[].asset.externalAssetId |
| scannedPolicies[].name | findingGroup.findings[].name |
| scannedPolicies[].scannedPoliciesInfo.name | findingGroup.findings[].findingType.misconfiguration.policy.title |
| scannedPolicies[].scannedPoliciesInfo.policyType | findingGroup.findings[].findingType.misconfiguration.policy.type |
| scannedPolicies[].scannedPoliciesInfo.description | findingGroup.findings[].findingType.misconfiguration.policy.description |
| FUNCTION_PICKER (scannedPolicies[].severity) | findingGroup.findings[].severity |
| scannedPolicies[].scannedPoliciesInfo.rule.name | findingGroup.findings[].findingType.misconfiguration.rule.ruleName |
| scannedPolicies[].scannedPoliciesInfo.recommendation | findingGroup.findings[].remediation.remediationStrategy |
| scannedPolicies[].scannedPoliciesInfo.createdOn | findingGroup.findings[].firstFoundOn |
| scannedPolicies[].scannedPoliciesInfo.lastModifiedOn | findingGroup.findings[].lastFoundOn |
| FUNCTION_PICKER (scannedPolicies[].passed) | findingGroup.findings[].findingStatus |
| asset.externalAssetId | asset.assetHeader.externalAssetId |
| asset.id | asset.assetHeader.vendorAssetId |
| FUNCTION_PICKER (asset.cloudType) | asset.assetDetail.cloudInfo.provider |
| asset.createdTs | asset.assetDetail.sourceCreatedAt |
| asset.insertTs | asset.assetDetail.sourceUpdatedAt |
| asset.data.name | asset.assetDetail.name |
| asset.regionId | asset.assetDetail.cloudInfo.region |
| asset.url | asset.assetDetail.cloudInfo.providerUrl |
| asset.assetType | asset.assetHeader.assetTypeName |
| asset.accountName | asset.assetDetail.cloudInfo.accountName |
| asset.accountId | asset.assetDetail.cloudInfo.accountId |
| asset.trueInternetExposure | asset.assetDetail.untypedAttributes.& |
| asset.assetType | asset.assetDetail.storageAssetClass.StorageType |
| FUNCTION_PICKER (asset.cloudType) | asset.assetDetail.storageAssetClass.provider |
| asset.serviceName | asset.assetDetail.storageAssetClass.serviceName |
| asset.regionName | asset.assetDetail.storageAssetClass.region |
| asset.assetType | type |
| asset.externalAssetId | findingGroup.findings[].asset.externalAssetId |
| scannedPolicies[].name | findingGroup.findings[].name |
| scannedPolicies[].scannedPoliciesInfo.name | findingGroup.findings[].findingType.misconfiguration.policy.title |
| scannedPolicies[].scannedPoliciesInfo.policyType | findingGroup.findings[].findingType.misconfiguration.policy.type |
| scannedPolicies[].scannedPoliciesInfo.description | findingGroup.findings[].findingType.misconfiguration.policy.description |
| FUNCTION_PICKER (scannedPolicies[].severity) | findingGroup.findings[].severity |
| scannedPolicies[].scannedPoliciesInfo.rule.name | findingGroup.findings[].findingType.misconfiguration.rule.ruleName |
| scannedPolicies[].scannedPoliciesInfo.recommendation | findingGroup.findings[].remediation.remediationStrategy |
| scannedPolicies[].scannedPoliciesInfo.createdOn | findingGroup.findings[].firstFoundOn |
| scannedPolicies[].scannedPoliciesInfo.lastModifiedOn | findingGroup.findings[].lastFoundOn |
| FUNCTION_PICKER (scannedPolicies[].passed) | findingGroup.findings[].findingStatus |
| asset.externalAssetId | asset.assetHeader.externalAssetId |
| asset.id | asset.assetHeader.vendorAssetId |
| FUNCTION_PICKER (asset.cloudType) | asset.assetDetail.cloudInfo.provider |
| asset.createdTs | asset.assetDetail.sourceCreatedAt |
| asset.insertTs | asset.assetDetail.sourceUpdatedAt |
| asset.data.sku.name | asset.assetDetail.name |
| asset.regionId | asset.assetDetail.cloudInfo.region |
| asset.url | asset.assetDetail.cloudInfo.providerUrl |
| asset.assetType | asset.assetHeader.assetTypeName |
| asset.accountName | asset.assetDetail.cloudInfo.accountName |
| asset.trueInternetExposure | asset.assetDetail.untypedAttributes.& |
| asset.assetType | asset.assetDetail.storageAssetClass.StorageType |
| FUNCTION_PICKER (asset.cloudType) | asset.assetDetail.storageAssetClass.provider |
| asset.serviceName | asset.assetDetail.storageAssetClass.serviceName |
| asset.regionName | asset.assetDetail.storageAssetClass.region |
| asset.accountId | asset.assetDetail.cloudInfo.accountId |
| asset.assetType | type |
| asset.externalAssetId | findingGroup.findings[].asset.externalAssetId |
| scannedPolicies[].name | findingGroup.findings[].name |
| scannedPolicies[].scannedPoliciesInfo.name | findingGroup.findings[].findingType.misconfiguration.policy.title |
| scannedPolicies[].scannedPoliciesInfo.policyType | findingGroup.findings[].findingType.misconfiguration.policy.type |
| scannedPolicies[].scannedPoliciesInfo.description | findingGroup.findings[].findingType.misconfiguration.policy.description |
| FUNCTION_PICKER (scannedPolicies[].severity) | findingGroup.findings[].severity |
| scannedPolicies[].scannedPoliciesInfo.rule.name | findingGroup.findings[].findingType.misconfiguration.rule.ruleName |
| scannedPolicies[].scannedPoliciesInfo.recommendation | findingGroup.findings[].remediation.remediationStrategy |
| scannedPolicies[].scannedPoliciesInfo.createdOn | findingGroup.findings[].firstFoundOn |
| scannedPolicies[].scannedPoliciesInfo.lastModifiedOn | findingGroup.findings[].lastFoundOn |
| FUNCTION_PICKER (scannedPolicies[].passed) | findingGroup.findings[].findingStatus |