@grc-claw/integration-marketplace 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IntegrationMarketplace.d.ts +32 -0
- package/dist/IntegrationMarketplace.js +319 -0
- package/dist/connectors/ADPConnector.d.ts +12 -0
- package/dist/connectors/ADPConnector.js +97 -0
- package/dist/connectors/AWSCloudTrailConnector.d.ts +12 -0
- package/dist/connectors/AWSCloudTrailConnector.js +77 -0
- package/dist/connectors/AWSCloudWatchConnector.d.ts +12 -0
- package/dist/connectors/AWSCloudWatchConnector.js +70 -0
- package/dist/connectors/AWSGuardDutyConnector.d.ts +12 -0
- package/dist/connectors/AWSGuardDutyConnector.js +139 -0
- package/dist/connectors/AWSIAMConnector.d.ts +12 -0
- package/dist/connectors/AWSIAMConnector.js +90 -0
- package/dist/connectors/AWSKMSConnector.d.ts +12 -0
- package/dist/connectors/AWSKMSConnector.js +70 -0
- package/dist/connectors/AWSLambdaConnector.d.ts +12 -0
- package/dist/connectors/AWSLambdaConnector.js +84 -0
- package/dist/connectors/AWSRDSConnector.d.ts +12 -0
- package/dist/connectors/AWSRDSConnector.js +84 -0
- package/dist/connectors/AWSS3Connector.d.ts +12 -0
- package/dist/connectors/AWSS3Connector.js +112 -0
- package/dist/connectors/AkamaiConnector.d.ts +12 -0
- package/dist/connectors/AkamaiConnector.js +98 -0
- package/dist/connectors/ArgoCDConnector.d.ts +12 -0
- package/dist/connectors/ArgoCDConnector.js +93 -0
- package/dist/connectors/ArtifactoryConnector.d.ts +12 -0
- package/dist/connectors/ArtifactoryConnector.js +94 -0
- package/dist/connectors/AtlassianJiraConnector.d.ts +12 -0
- package/dist/connectors/AtlassianJiraConnector.js +134 -0
- package/dist/connectors/Auth0Connector.d.ts +12 -0
- package/dist/connectors/Auth0Connector.js +150 -0
- package/dist/connectors/AzureADConnector.d.ts +12 -0
- package/dist/connectors/AzureADConnector.js +115 -0
- package/dist/connectors/AzureDevOpsConnector.d.ts +12 -0
- package/dist/connectors/AzureDevOpsConnector.js +130 -0
- package/dist/connectors/AzureDevOpsPipelinesConnector.d.ts +12 -0
- package/dist/connectors/AzureDevOpsPipelinesConnector.js +72 -0
- package/dist/connectors/AzurePipelinesConnector.d.ts +12 -0
- package/dist/connectors/AzurePipelinesConnector.js +72 -0
- package/dist/connectors/AzurePolicyConnector.d.ts +12 -0
- package/dist/connectors/AzurePolicyConnector.js +141 -0
- package/dist/connectors/AzureReposConnector.d.ts +12 -0
- package/dist/connectors/AzureReposConnector.js +96 -0
- package/dist/connectors/AzureSentinelConnector.d.ts +12 -0
- package/dist/connectors/AzureSentinelConnector.js +88 -0
- package/dist/connectors/BambooCICDConnector.d.ts +12 -0
- package/dist/connectors/BambooCICDConnector.js +72 -0
- package/dist/connectors/BambooHRConnector.d.ts +12 -0
- package/dist/connectors/BambooHRConnector.js +84 -0
- package/dist/connectors/BeyondTrustConnector.d.ts +12 -0
- package/dist/connectors/BeyondTrustConnector.js +94 -0
- package/dist/connectors/BitbucketConnector.d.ts +12 -0
- package/dist/connectors/BitbucketConnector.js +100 -0
- package/dist/connectors/BitbucketPipelinesConnector.d.ts +12 -0
- package/dist/connectors/BitbucketPipelinesConnector.js +72 -0
- package/dist/connectors/BoxConnector.d.ts +12 -0
- package/dist/connectors/BoxConnector.js +122 -0
- package/dist/connectors/BuildkiteConnector.d.ts +12 -0
- package/dist/connectors/BuildkiteConnector.js +95 -0
- package/dist/connectors/CarbonBlackConnector.d.ts +12 -0
- package/dist/connectors/CarbonBlackConnector.js +89 -0
- package/dist/connectors/CassandraConnector.d.ts +12 -0
- package/dist/connectors/CassandraConnector.js +69 -0
- package/dist/connectors/CheckPointConnector.d.ts +12 -0
- package/dist/connectors/CheckPointConnector.js +98 -0
- package/dist/connectors/CircleCIConnector.d.ts +12 -0
- package/dist/connectors/CircleCIConnector.js +129 -0
- package/dist/connectors/CircleCIConnectorsConnector.d.ts +12 -0
- package/dist/connectors/CircleCIConnectorsConnector.js +69 -0
- package/dist/connectors/CiscoUmbrellaConnector.d.ts +12 -0
- package/dist/connectors/CiscoUmbrellaConnector.js +96 -0
- package/dist/connectors/CloudBeesJenkinsConnector.d.ts +12 -0
- package/dist/connectors/CloudBeesJenkinsConnector.js +70 -0
- package/dist/connectors/CloudflareDNSConnector.d.ts +12 -0
- package/dist/connectors/CloudflareDNSConnector.js +71 -0
- package/dist/connectors/CloudflareWAFConnector.d.ts +12 -0
- package/dist/connectors/CloudflareWAFConnector.js +98 -0
- package/dist/connectors/ConfluenceConnector.d.ts +12 -0
- package/dist/connectors/ConfluenceConnector.js +101 -0
- package/dist/connectors/ConstantContactConnector.d.ts +12 -0
- package/dist/connectors/ConstantContactConnector.js +70 -0
- package/dist/connectors/CouchDBConnector.d.ts +12 -0
- package/dist/connectors/CouchDBConnector.js +69 -0
- package/dist/connectors/CrowdStrikeConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeConnector.js +86 -0
- package/dist/connectors/CrowdStrikeFalconConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeFalconConnector.js +92 -0
- package/dist/connectors/CrowdStrikeSpotlightConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeSpotlightConnector.js +139 -0
- package/dist/connectors/CyberArkConnector.d.ts +12 -0
- package/dist/connectors/CyberArkConnector.js +95 -0
- package/dist/connectors/DatabricksConnector.d.ts +12 -0
- package/dist/connectors/DatabricksConnector.js +95 -0
- package/dist/connectors/DatadogConnector.d.ts +12 -0
- package/dist/connectors/DatadogConnector.js +110 -0
- package/dist/connectors/DigitalOceanConnector.d.ts +12 -0
- package/dist/connectors/DigitalOceanConnector.js +85 -0
- package/dist/connectors/DiscordConnector.d.ts +12 -0
- package/dist/connectors/DiscordConnector.js +98 -0
- package/dist/connectors/DockerHubConnector.d.ts +12 -0
- package/dist/connectors/DockerHubConnector.js +80 -0
- package/dist/connectors/DocuSignConnector.d.ts +12 -0
- package/dist/connectors/DocuSignConnector.js +96 -0
- package/dist/connectors/DriftConnector.d.ts +12 -0
- package/dist/connectors/DriftConnector.js +69 -0
- package/dist/connectors/DropboxConnector.d.ts +12 -0
- package/dist/connectors/DropboxConnector.js +127 -0
- package/dist/connectors/ESETConnector.d.ts +12 -0
- package/dist/connectors/ESETConnector.js +70 -0
- package/dist/connectors/ElasticsearchCloudConnector.d.ts +12 -0
- package/dist/connectors/ElasticsearchCloudConnector.js +70 -0
- package/dist/connectors/FSecureConnector.d.ts +12 -0
- package/dist/connectors/FSecureConnector.js +70 -0
- package/dist/connectors/FeatureFlagConnector.d.ts +12 -0
- package/dist/connectors/FeatureFlagConnector.js +70 -0
- package/dist/connectors/FluxCDConnector.d.ts +12 -0
- package/dist/connectors/FluxCDConnector.js +94 -0
- package/dist/connectors/ForgeRockConnector.d.ts +12 -0
- package/dist/connectors/ForgeRockConnector.js +95 -0
- package/dist/connectors/FortinetConnector.d.ts +12 -0
- package/dist/connectors/FortinetConnector.js +98 -0
- package/dist/connectors/FreshdeskConnector.d.ts +12 -0
- package/dist/connectors/FreshdeskConnector.js +71 -0
- package/dist/connectors/GCPBigQueryConnector.d.ts +12 -0
- package/dist/connectors/GCPBigQueryConnector.js +71 -0
- package/dist/connectors/GCPComputeConnector.d.ts +12 -0
- package/dist/connectors/GCPComputeConnector.js +87 -0
- package/dist/connectors/GCPConfigConnector.d.ts +12 -0
- package/dist/connectors/GCPConfigConnector.js +149 -0
- package/dist/connectors/GCPFirestoreConnector.d.ts +12 -0
- package/dist/connectors/GCPFirestoreConnector.js +71 -0
- package/dist/connectors/GCPIAMConnector.d.ts +12 -0
- package/dist/connectors/GCPIAMConnector.js +98 -0
- package/dist/connectors/GCPSCCConnector.d.ts +12 -0
- package/dist/connectors/GCPSCCConnector.js +94 -0
- package/dist/connectors/GitHubActionsConnector.d.ts +12 -0
- package/dist/connectors/GitHubActionsConnector.js +104 -0
- package/dist/connectors/GitHubConnector.d.ts +12 -0
- package/dist/connectors/GitHubConnector.js +135 -0
- package/dist/connectors/GitHubCopilotConnector.d.ts +12 -0
- package/dist/connectors/GitHubCopilotConnector.js +72 -0
- package/dist/connectors/GitLabCIConnector.d.ts +12 -0
- package/dist/connectors/GitLabCIConnector.js +71 -0
- package/dist/connectors/GitLabConnector.d.ts +12 -0
- package/dist/connectors/GitLabConnector.js +101 -0
- package/dist/connectors/GitLabSASTConnector.d.ts +12 -0
- package/dist/connectors/GitLabSASTConnector.js +130 -0
- package/dist/connectors/GoogleWorkspaceConnector.d.ts +12 -0
- package/dist/connectors/GoogleWorkspaceConnector.js +136 -0
- package/dist/connectors/HelmConnector.d.ts +12 -0
- package/dist/connectors/HelmConnector.js +94 -0
- package/dist/connectors/HubSpotConnector.d.ts +12 -0
- package/dist/connectors/HubSpotConnector.js +77 -0
- package/dist/connectors/IFTTTConnector.d.ts +12 -0
- package/dist/connectors/IFTTTConnector.js +70 -0
- package/dist/connectors/ImpervaConnector.d.ts +12 -0
- package/dist/connectors/ImpervaConnector.js +94 -0
- package/dist/connectors/InfluxDBConnector.d.ts +12 -0
- package/dist/connectors/InfluxDBConnector.js +70 -0
- package/dist/connectors/IntercomConnector.d.ts +12 -0
- package/dist/connectors/IntercomConnector.js +69 -0
- package/dist/connectors/JenkinsConnector.d.ts +12 -0
- package/dist/connectors/JenkinsConnector.js +96 -0
- package/dist/connectors/JiraConnector.d.ts +12 -0
- package/dist/connectors/JiraConnector.js +103 -0
- package/dist/connectors/KafkaConnector.d.ts +12 -0
- package/dist/connectors/KafkaConnector.js +70 -0
- package/dist/connectors/KasperskyConnector.d.ts +12 -0
- package/dist/connectors/KasperskyConnector.js +70 -0
- package/dist/connectors/KubernetesConnector.d.ts +12 -0
- package/dist/connectors/KubernetesConnector.js +109 -0
- package/dist/connectors/LaceworkConnector.d.ts +13 -0
- package/dist/connectors/LaceworkConnector.js +143 -0
- package/dist/connectors/LaunchDarklyConnector.d.ts +12 -0
- package/dist/connectors/LaunchDarklyConnector.js +86 -0
- package/dist/connectors/LinodeConnector.d.ts +12 -0
- package/dist/connectors/LinodeConnector.js +70 -0
- package/dist/connectors/LookerConnector.d.ts +12 -0
- package/dist/connectors/LookerConnector.js +94 -0
- package/dist/connectors/MailchimpConnector.d.ts +12 -0
- package/dist/connectors/MailchimpConnector.js +71 -0
- package/dist/connectors/MalwarebytesConnector.d.ts +12 -0
- package/dist/connectors/MalwarebytesConnector.js +85 -0
- package/dist/connectors/McAfeeConnector.d.ts +12 -0
- package/dist/connectors/McAfeeConnector.js +85 -0
- package/dist/connectors/Microsoft365Connector.d.ts +12 -0
- package/dist/connectors/Microsoft365Connector.js +139 -0
- package/dist/connectors/MongoDBConnector.d.ts +12 -0
- package/dist/connectors/MongoDBConnector.js +86 -0
- package/dist/connectors/NamelyConnector.d.ts +12 -0
- package/dist/connectors/NamelyConnector.js +97 -0
- package/dist/connectors/Neo4jConnector.d.ts +12 -0
- package/dist/connectors/Neo4jConnector.js +70 -0
- package/dist/connectors/NetSuiteConnector.d.ts +12 -0
- package/dist/connectors/NetSuiteConnector.js +94 -0
- package/dist/connectors/NetskopeConnector.d.ts +12 -0
- package/dist/connectors/NetskopeConnector.js +98 -0
- package/dist/connectors/NexusConnector.d.ts +12 -0
- package/dist/connectors/NexusConnector.js +93 -0
- package/dist/connectors/NotionConnector.d.ts +12 -0
- package/dist/connectors/NotionConnector.js +109 -0
- package/dist/connectors/OktaConnector.d.ts +12 -0
- package/dist/connectors/OktaConnector.js +123 -0
- package/dist/connectors/OktaSystemLogConnector.d.ts +12 -0
- package/dist/connectors/OktaSystemLogConnector.js +129 -0
- package/dist/connectors/OpsgenieConnector.d.ts +12 -0
- package/dist/connectors/OpsgenieConnector.js +70 -0
- package/dist/connectors/PagerDutyConnector.d.ts +12 -0
- package/dist/connectors/PagerDutyConnector.js +106 -0
- package/dist/connectors/PalantirConnector.d.ts +12 -0
- package/dist/connectors/PalantirConnector.js +95 -0
- package/dist/connectors/PaloAltoPrismaCloudConnector.d.ts +12 -0
- package/dist/connectors/PaloAltoPrismaCloudConnector.js +110 -0
- package/dist/connectors/PingFederateConnector.d.ts +12 -0
- package/dist/connectors/PingFederateConnector.js +97 -0
- package/dist/connectors/PostgreSQLCloudConnector.d.ts +12 -0
- package/dist/connectors/PostgreSQLCloudConnector.js +70 -0
- package/dist/connectors/PowerBIConnector.d.ts +12 -0
- package/dist/connectors/PowerBIConnector.js +95 -0
- package/dist/connectors/PrismaCloudConnector.d.ts +12 -0
- package/dist/connectors/PrismaCloudConnector.js +147 -0
- package/dist/connectors/QualysConnector.d.ts +12 -0
- package/dist/connectors/QualysConnector.js +96 -0
- package/dist/connectors/QualysScannerConnector.d.ts +12 -0
- package/dist/connectors/QualysScannerConnector.js +131 -0
- package/dist/connectors/QuickBooksConnector.d.ts +12 -0
- package/dist/connectors/QuickBooksConnector.js +97 -0
- package/dist/connectors/RabbitMQConnector.d.ts +12 -0
- package/dist/connectors/RabbitMQConnector.js +69 -0
- package/dist/connectors/RadwareConnector.d.ts +12 -0
- package/dist/connectors/RadwareConnector.js +94 -0
- package/dist/connectors/RedisCloudConnector.d.ts +12 -0
- package/dist/connectors/RedisCloudConnector.js +70 -0
- package/dist/connectors/RingCentralConnector.d.ts +12 -0
- package/dist/connectors/RingCentralConnector.js +94 -0
- package/dist/connectors/SAPSuccessFactorsConnector.d.ts +12 -0
- package/dist/connectors/SAPSuccessFactorsConnector.js +103 -0
- package/dist/connectors/SailPointConnector.d.ts +12 -0
- package/dist/connectors/SailPointConnector.js +97 -0
- package/dist/connectors/SalesforceConnector.d.ts +12 -0
- package/dist/connectors/SalesforceConnector.js +91 -0
- package/dist/connectors/SendGridConnector.d.ts +12 -0
- package/dist/connectors/SendGridConnector.js +69 -0
- package/dist/connectors/SentinelOneConnector.d.ts +12 -0
- package/dist/connectors/SentinelOneConnector.js +89 -0
- package/dist/connectors/ServiceNowConnector.d.ts +12 -0
- package/dist/connectors/ServiceNowConnector.js +123 -0
- package/dist/connectors/SlackConnector.d.ts +12 -0
- package/dist/connectors/SlackConnector.js +109 -0
- package/dist/connectors/SnowflakeConnector.d.ts +12 -0
- package/dist/connectors/SnowflakeConnector.js +105 -0
- package/dist/connectors/SnykConnector.d.ts +12 -0
- package/dist/connectors/SnykConnector.js +84 -0
- package/dist/connectors/SnykMonitorConnector.d.ts +12 -0
- package/dist/connectors/SnykMonitorConnector.js +131 -0
- package/dist/connectors/SophosConnector.d.ts +12 -0
- package/dist/connectors/SophosConnector.js +87 -0
- package/dist/connectors/SpinnakerConnector.d.ts +12 -0
- package/dist/connectors/SpinnakerConnector.js +70 -0
- package/dist/connectors/SplunkConnector.d.ts +12 -0
- package/dist/connectors/SplunkConnector.js +126 -0
- package/dist/connectors/StripeConnector.d.ts +12 -0
- package/dist/connectors/StripeConnector.js +97 -0
- package/dist/connectors/TableauConnector.d.ts +12 -0
- package/dist/connectors/TableauConnector.js +101 -0
- package/dist/connectors/TaniumConnector.d.ts +12 -0
- package/dist/connectors/TaniumConnector.js +97 -0
- package/dist/connectors/TeamCityConnector.d.ts +12 -0
- package/dist/connectors/TeamCityConnector.js +71 -0
- package/dist/connectors/TeamsConnector.d.ts +12 -0
- package/dist/connectors/TeamsConnector.js +96 -0
- package/dist/connectors/TenableIOConnector.d.ts +12 -0
- package/dist/connectors/TenableIOConnector.js +130 -0
- package/dist/connectors/TerraformCloudConnector.d.ts +12 -0
- package/dist/connectors/TerraformCloudConnector.js +106 -0
- package/dist/connectors/TravisCIConnector.d.ts +12 -0
- package/dist/connectors/TravisCIConnector.js +95 -0
- package/dist/connectors/TrendMicroConnector.d.ts +12 -0
- package/dist/connectors/TrendMicroConnector.js +85 -0
- package/dist/connectors/TwilioConnector.d.ts +12 -0
- package/dist/connectors/TwilioConnector.js +70 -0
- package/dist/connectors/VercelConnector.d.ts +12 -0
- package/dist/connectors/VercelConnector.js +70 -0
- package/dist/connectors/VultrConnector.d.ts +12 -0
- package/dist/connectors/VultrConnector.js +70 -0
- package/dist/connectors/WebexConnector.d.ts +12 -0
- package/dist/connectors/WebexConnector.js +94 -0
- package/dist/connectors/WizConnector.d.ts +12 -0
- package/dist/connectors/WizConnector.js +172 -0
- package/dist/connectors/WorkdayConnector.d.ts +12 -0
- package/dist/connectors/WorkdayConnector.js +100 -0
- package/dist/connectors/XeroConnector.d.ts +12 -0
- package/dist/connectors/XeroConnector.js +96 -0
- package/dist/connectors/ZapierConnector.d.ts +12 -0
- package/dist/connectors/ZapierConnector.js +70 -0
- package/dist/connectors/ZendeskConnector.d.ts +12 -0
- package/dist/connectors/ZendeskConnector.js +71 -0
- package/dist/connectors/ZenefitsConnector.d.ts +12 -0
- package/dist/connectors/ZenefitsConnector.js +93 -0
- package/dist/connectors/ZoomConnector.d.ts +12 -0
- package/dist/connectors/ZoomConnector.js +97 -0
- package/dist/connectors/ZscalerConnector.d.ts +12 -0
- package/dist/connectors/ZscalerConnector.js +97 -0
- package/dist/connectors/index.d.ts +150 -0
- package/dist/connectors/index.js +157 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +16 -0
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +139 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.js +8 -0
- package/package.json +33 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "opsgenie-incidents",
|
|
5
|
+
name: "Incident Management",
|
|
6
|
+
description: "Fetch Opsgenie incident timelines, escalation policies, and SLA metrics",
|
|
7
|
+
evidenceCategories: ["incident_management", "monitoring"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "opsgenie-schedules",
|
|
11
|
+
name: "On-Call Schedules",
|
|
12
|
+
description: "Fetch on-call schedules, rotations, and escalation handoff records",
|
|
13
|
+
evidenceCategories: ["incident_management", "configuration"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "opsgenie-integrations",
|
|
17
|
+
name: "Alert Integrations",
|
|
18
|
+
description: "Fetch Opsgenie alert integration configurations and forwarding rules",
|
|
19
|
+
evidenceCategories: ["configuration", "monitoring"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class OpsgenieConnector {
|
|
23
|
+
id = "opsgenie";
|
|
24
|
+
name = "Opsgenie";
|
|
25
|
+
category = "incident_management";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.opsgenie.com/v2";
|
|
31
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `GenieKey ${config.apiToken}`,
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
throw new Error(`Opsgenie API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/account");
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async collectEvidence(config) {
|
|
51
|
+
const artifacts = [];
|
|
52
|
+
const now = new Date().toISOString();
|
|
53
|
+
const alerts = await this.fetchApi(config, "/alerts?limit=100").catch(() => ({ data: [] }));
|
|
54
|
+
const alertList = (alerts.data || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "opsgenie-incidents",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ alertCount: alertList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC7.3",
|
|
63
|
+
source: "opsgenie/alerts",
|
|
64
|
+
status: "unknown",
|
|
65
|
+
data: { openAlerts: alertList.length },
|
|
66
|
+
metadata: {},
|
|
67
|
+
});
|
|
68
|
+
return artifacts;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class PagerDutyConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "pagerduty";
|
|
4
|
+
readonly name = "PagerDuty";
|
|
5
|
+
readonly category: "incident_management";
|
|
6
|
+
readonly authType: "bearer_token";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "pagerduty-incidents-v2",
|
|
5
|
+
name: "Incident Management",
|
|
6
|
+
description: "Fetch PagerDuty incident lifecycle, escalation policies, and SLA compliance",
|
|
7
|
+
evidenceCategories: ["incident_management", "availability"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "pagerduty-oncall-v2",
|
|
11
|
+
name: "On-Call Schedules",
|
|
12
|
+
description: "Fetch on-call schedules, rotations, and escalation handoff records",
|
|
13
|
+
evidenceCategories: ["incident_management", "configuration"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "pagerduty-services-v2",
|
|
17
|
+
name: "Service Catalog",
|
|
18
|
+
description: "Fetch PagerDuty service health, integrations, and business impact mapping",
|
|
19
|
+
evidenceCategories: ["incident_management", "monitoring"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class PagerDutyConnector {
|
|
23
|
+
id = "pagerduty";
|
|
24
|
+
name = "PagerDuty";
|
|
25
|
+
category = "incident_management";
|
|
26
|
+
authType = "bearer_token";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.pagerduty.com";
|
|
31
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Token token=${config.apiToken}`,
|
|
34
|
+
Accept: "application/vnd.pagerduty+json;version=2",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
throw new Error(`PagerDuty API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/users/me");
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async collectEvidence(config) {
|
|
51
|
+
const artifacts = [];
|
|
52
|
+
const now = new Date().toISOString();
|
|
53
|
+
const services = await this.fetchApi(config, "/services?limit=100");
|
|
54
|
+
const serviceList = (services.services || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "pagerduty-services-v2",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ services: serviceList.map((s) => ({ id: s.id, name: s.name })) }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC7.3",
|
|
63
|
+
source: "pagerduty/services",
|
|
64
|
+
status: serviceList.length > 0 ? "compliant" : "non_compliant",
|
|
65
|
+
data: { serviceCount: serviceList.length },
|
|
66
|
+
metadata: {},
|
|
67
|
+
});
|
|
68
|
+
const schedules = await this.fetchApi(config, "/schedules?limit=100").catch(() => ({
|
|
69
|
+
schedules: [],
|
|
70
|
+
}));
|
|
71
|
+
const scheduleList = (schedules.schedules || []);
|
|
72
|
+
artifacts.push({
|
|
73
|
+
id: generateEvidenceId(),
|
|
74
|
+
connectorId: this.id,
|
|
75
|
+
capabilityId: "pagerduty-oncall-v2",
|
|
76
|
+
timestamp: now,
|
|
77
|
+
hash: hashEvidence({ schedules: scheduleList.map((s) => ({ id: s.id, name: s.name })) }),
|
|
78
|
+
framework: "SOC2",
|
|
79
|
+
controlId: "CC7.2",
|
|
80
|
+
source: "pagerduty/schedules",
|
|
81
|
+
status: scheduleList.length > 0 ? "compliant" : "non_compliant",
|
|
82
|
+
data: { scheduleCount: scheduleList.length },
|
|
83
|
+
metadata: {},
|
|
84
|
+
});
|
|
85
|
+
const since = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString();
|
|
86
|
+
const incidents = await this.fetchApi(config, `/incidents?since=${since}&limit=100&statuses[]=triggered&statuses[]=resolved`).catch(() => ({ incidents: [] }));
|
|
87
|
+
const incidentList = (incidents.incidents || []);
|
|
88
|
+
artifacts.push({
|
|
89
|
+
id: generateEvidenceId(),
|
|
90
|
+
connectorId: this.id,
|
|
91
|
+
capabilityId: "pagerduty-incidents-v2",
|
|
92
|
+
timestamp: now,
|
|
93
|
+
hash: hashEvidence({ incidents: incidentList.map((i) => ({ id: i.id, status: i.status })) }),
|
|
94
|
+
framework: "ISO27001",
|
|
95
|
+
controlId: "A.16.1.4",
|
|
96
|
+
source: "pagerduty/incidents",
|
|
97
|
+
status: "unknown",
|
|
98
|
+
data: {
|
|
99
|
+
incidentCount: incidentList.length,
|
|
100
|
+
resolved: incidentList.filter((i) => i.status === "resolved").length,
|
|
101
|
+
},
|
|
102
|
+
metadata: {},
|
|
103
|
+
});
|
|
104
|
+
return artifacts;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class PalantirConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "palantir";
|
|
4
|
+
readonly name = "Palantir Foundry";
|
|
5
|
+
readonly category: "data_warehouse";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "palantir-foundry",
|
|
5
|
+
name: "Foundry Datasets",
|
|
6
|
+
description: "Fetch dataset access controls and lineage metadata",
|
|
7
|
+
evidenceCategories: ["data_protection", "access_control"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "palantir-ontologies",
|
|
11
|
+
name: "Ontology Management",
|
|
12
|
+
description: "Fetch ontology object types and action permissions",
|
|
13
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "palantir-pipelines",
|
|
17
|
+
name: "Data Pipelines",
|
|
18
|
+
description: "Fetch pipeline schedules and transformation configs",
|
|
19
|
+
evidenceCategories: ["change_management", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "palantir-audit",
|
|
23
|
+
name: "Audit Events",
|
|
24
|
+
description: "Fetch user activity and data access audit logs",
|
|
25
|
+
evidenceCategories: ["monitoring", "access_control"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class PalantirConnector {
|
|
29
|
+
id = "palantir";
|
|
30
|
+
name = "Palantir Foundry";
|
|
31
|
+
category = "data_warehouse";
|
|
32
|
+
authType = "api_key";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = [
|
|
35
|
+
"SOC2",
|
|
36
|
+
"ISO27001",
|
|
37
|
+
"NIST_CSF",
|
|
38
|
+
"HIPAA",
|
|
39
|
+
];
|
|
40
|
+
async fetchApi(config, endpoint) {
|
|
41
|
+
const base = config.baseUrl || "https://foundry.palantir.com";
|
|
42
|
+
const resp = await fetch(`${base}/api${endpoint}`, {
|
|
43
|
+
headers: {
|
|
44
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (!resp.ok)
|
|
49
|
+
throw new Error(`Palantir API ${resp.status}: ${resp.statusText}`);
|
|
50
|
+
return (await resp.json());
|
|
51
|
+
}
|
|
52
|
+
async testConnection(config) {
|
|
53
|
+
try {
|
|
54
|
+
await this.fetchApi(config, "/datasets");
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async collectEvidence(config) {
|
|
62
|
+
const artifacts = [];
|
|
63
|
+
const now = new Date().toISOString();
|
|
64
|
+
const project = config.extra?.project || "default";
|
|
65
|
+
const datasets = await this.fetchApi(config, `/datasets?project=${project}`).catch(() => ({ results: [] }));
|
|
66
|
+
artifacts.push({
|
|
67
|
+
id: generateEvidenceId(),
|
|
68
|
+
connectorId: this.id,
|
|
69
|
+
capabilityId: "palantir-foundry",
|
|
70
|
+
timestamp: now,
|
|
71
|
+
hash: hashEvidence(datasets),
|
|
72
|
+
framework: "SOC2",
|
|
73
|
+
controlId: "CC6.1",
|
|
74
|
+
source: `palantir/${project}/datasets`,
|
|
75
|
+
status: datasets.results?.length > 0 ? "compliant" : "unknown",
|
|
76
|
+
data: { datasetCount: datasets.results?.length || 0 },
|
|
77
|
+
metadata: { project },
|
|
78
|
+
});
|
|
79
|
+
const pipelines = await this.fetchApi(config, `/pipelines?project=${project}`).catch(() => ({ results: [] }));
|
|
80
|
+
artifacts.push({
|
|
81
|
+
id: generateEvidenceId(),
|
|
82
|
+
connectorId: this.id,
|
|
83
|
+
capabilityId: "palantir-pipelines",
|
|
84
|
+
timestamp: now,
|
|
85
|
+
hash: hashEvidence(pipelines),
|
|
86
|
+
framework: "ISO27001",
|
|
87
|
+
controlId: "A.12.1.1",
|
|
88
|
+
source: `palantir/${project}/pipelines`,
|
|
89
|
+
status: pipelines.results?.length > 0 ? "compliant" : "non_compliant",
|
|
90
|
+
data: { pipelineCount: pipelines.results?.length || 0 },
|
|
91
|
+
metadata: { project },
|
|
92
|
+
});
|
|
93
|
+
return artifacts;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class PaloAltoPrismaCloudConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "palo-alto-prisma-cloud";
|
|
4
|
+
readonly name = "Palo Alto Prisma Cloud";
|
|
5
|
+
readonly category: "cloud_provider";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "prisma-cloud-compliance",
|
|
5
|
+
name: "Cloud Compliance posture",
|
|
6
|
+
description: "Fetch cloud compliance posture and misconfiguration alerts",
|
|
7
|
+
evidenceCategories: ["vulnerability_management", "configuration"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "prisma-cloud-audit",
|
|
11
|
+
name: "Audit Logs",
|
|
12
|
+
description: "Fetch cloud audit logs and API activity",
|
|
13
|
+
evidenceCategories: ["access_control", "monitoring"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "prisma-cloud-runtime",
|
|
17
|
+
name: "Runtime Protection",
|
|
18
|
+
description: "Fetch runtime protection policies and alerts",
|
|
19
|
+
evidenceCategories: ["vulnerability_management", "data_protection"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "prisma-cloud-network",
|
|
23
|
+
name: "Network Security",
|
|
24
|
+
description: "Fetch network segmentation and firewall rules",
|
|
25
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class PaloAltoPrismaCloudConnector {
|
|
29
|
+
id = "palo-alto-prisma-cloud";
|
|
30
|
+
name = "Palo Alto Prisma Cloud";
|
|
31
|
+
category = "cloud_provider";
|
|
32
|
+
authType = "api_key";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = [
|
|
35
|
+
"SOC2",
|
|
36
|
+
"ISO27001",
|
|
37
|
+
"NIST_CSF",
|
|
38
|
+
"PCI_DSS",
|
|
39
|
+
"HIPAA",
|
|
40
|
+
];
|
|
41
|
+
async fetchApi(config, endpoint) {
|
|
42
|
+
const base = config.baseUrl || "https://api.prismacloud.io";
|
|
43
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
44
|
+
headers: {
|
|
45
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
46
|
+
"Content-Type": "application/json",
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
if (!resp.ok)
|
|
50
|
+
throw new Error(`Prisma Cloud API ${resp.status}: ${resp.statusText}`);
|
|
51
|
+
return (await resp.json());
|
|
52
|
+
}
|
|
53
|
+
async testConnection(config) {
|
|
54
|
+
try {
|
|
55
|
+
await this.fetchApi(config, "/api/v1/alert");
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async collectEvidence(config) {
|
|
63
|
+
const artifacts = [];
|
|
64
|
+
const now = new Date().toISOString();
|
|
65
|
+
const cloudType = config.extra?.cloudType || "aws";
|
|
66
|
+
const compliance = await this.fetchApi(config, `/api/v1/compliance?cloudType=${cloudType}`).catch(() => ({ items: [] }));
|
|
67
|
+
artifacts.push({
|
|
68
|
+
id: generateEvidenceId(),
|
|
69
|
+
connectorId: this.id,
|
|
70
|
+
capabilityId: "prisma-cloud-compliance",
|
|
71
|
+
timestamp: now,
|
|
72
|
+
hash: hashEvidence(compliance),
|
|
73
|
+
framework: "SOC2",
|
|
74
|
+
controlId: "CC6.1",
|
|
75
|
+
source: `prismacloud.io/${cloudType}/compliance`,
|
|
76
|
+
status: compliance.items?.length === 0 ? "compliant" : "partial",
|
|
77
|
+
data: { complianceIssues: compliance.items?.length || 0 },
|
|
78
|
+
metadata: { cloudType },
|
|
79
|
+
});
|
|
80
|
+
const alerts = await this.fetchApi(config, `/api/v1/alert?status=open&limit=10`).catch(() => ({ items: [] }));
|
|
81
|
+
artifacts.push({
|
|
82
|
+
id: generateEvidenceId(),
|
|
83
|
+
connectorId: this.id,
|
|
84
|
+
capabilityId: "prisma-cloud-audit",
|
|
85
|
+
timestamp: now,
|
|
86
|
+
hash: hashEvidence(alerts),
|
|
87
|
+
framework: "ISO27001",
|
|
88
|
+
controlId: "A.12.4.1",
|
|
89
|
+
source: `prismacloud.io/${cloudType}/alerts`,
|
|
90
|
+
status: alerts.items?.length === 0 ? "compliant" : "non_compliant",
|
|
91
|
+
data: { openAlerts: alerts.items?.length || 0 },
|
|
92
|
+
metadata: { cloudType },
|
|
93
|
+
});
|
|
94
|
+
const network = await this.fetchApi(config, `/api/v1/network/firewall?cloudType=${cloudType}`).catch(() => ({ items: [] }));
|
|
95
|
+
artifacts.push({
|
|
96
|
+
id: generateEvidenceId(),
|
|
97
|
+
connectorId: this.id,
|
|
98
|
+
capabilityId: "prisma-cloud-network",
|
|
99
|
+
timestamp: now,
|
|
100
|
+
hash: hashEvidence(network),
|
|
101
|
+
framework: "NIST_CSF",
|
|
102
|
+
controlId: "PR.AC-5",
|
|
103
|
+
source: `prismacloud.io/${cloudType}/network`,
|
|
104
|
+
status: "partial",
|
|
105
|
+
data: { firewallRules: network.items?.length || 0 },
|
|
106
|
+
metadata: { cloudType },
|
|
107
|
+
});
|
|
108
|
+
return artifacts;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class PingFederateConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "pingfederate";
|
|
4
|
+
readonly name = "Ping Identity PingFederate";
|
|
5
|
+
readonly category: "identity";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "pingfederate-sso",
|
|
5
|
+
name: "SSO Configuration",
|
|
6
|
+
description: "Fetch SAML/OIDC IdP configurations and SP partnerships",
|
|
7
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "pingfederate-policies",
|
|
11
|
+
name: "Authentication Policies",
|
|
12
|
+
description: "Fetch authentication policy contracts and mappings",
|
|
13
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "pingfederate-mfa",
|
|
17
|
+
name: "MFA Configuration",
|
|
18
|
+
description: "Fetch multi-factor authentication adapter settings",
|
|
19
|
+
evidenceCategories: ["access_control", "data_protection"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "pingfederate-tokens",
|
|
23
|
+
name: "Token Management",
|
|
24
|
+
description: "Fetch OAuth token exchange and JWT settings",
|
|
25
|
+
evidenceCategories: ["access_control", "monitoring"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class PingFederateConnector {
|
|
29
|
+
id = "pingfederate";
|
|
30
|
+
name = "Ping Identity PingFederate";
|
|
31
|
+
category = "identity";
|
|
32
|
+
authType = "api_key";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = [
|
|
35
|
+
"SOC2",
|
|
36
|
+
"ISO27001",
|
|
37
|
+
"NIST_CSF",
|
|
38
|
+
"HIPAA",
|
|
39
|
+
"PCI_DSS",
|
|
40
|
+
];
|
|
41
|
+
async fetchApi(config, endpoint) {
|
|
42
|
+
const base = config.baseUrl || "https://pingfederate.example.com";
|
|
43
|
+
const resp = await fetch(`${base}/pf-admin-api/v1${endpoint}`, {
|
|
44
|
+
headers: {
|
|
45
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
46
|
+
"Content-Type": "application/json",
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
if (!resp.ok)
|
|
50
|
+
throw new Error(`PingFederate API ${resp.status}: ${resp.statusText}`);
|
|
51
|
+
return (await resp.json());
|
|
52
|
+
}
|
|
53
|
+
async testConnection(config) {
|
|
54
|
+
try {
|
|
55
|
+
await this.fetchApi(config, "/version/info");
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async collectEvidence(config) {
|
|
63
|
+
const artifacts = [];
|
|
64
|
+
const now = new Date().toISOString();
|
|
65
|
+
const idpAdapters = await this.fetchApi(config, "/idp/adapters").catch(() => ({ items: [] }));
|
|
66
|
+
artifacts.push({
|
|
67
|
+
id: generateEvidenceId(),
|
|
68
|
+
connectorId: this.id,
|
|
69
|
+
capabilityId: "pingfederate-sso",
|
|
70
|
+
timestamp: now,
|
|
71
|
+
hash: hashEvidence(idpAdapters),
|
|
72
|
+
framework: "SOC2",
|
|
73
|
+
controlId: "CC6.1",
|
|
74
|
+
source: "pingfederate/idp-adapters",
|
|
75
|
+
status: idpAdapters.items?.length > 0 ? "compliant" : "unknown",
|
|
76
|
+
data: { idpAdapterCount: idpAdapters.items?.length || 0 },
|
|
77
|
+
metadata: {},
|
|
78
|
+
});
|
|
79
|
+
const spConnections = await this.fetchApi(config, "/idp/spConnections").catch(() => ({
|
|
80
|
+
items: [],
|
|
81
|
+
}));
|
|
82
|
+
artifacts.push({
|
|
83
|
+
id: generateEvidenceId(),
|
|
84
|
+
connectorId: this.id,
|
|
85
|
+
capabilityId: "pingfederate-policies",
|
|
86
|
+
timestamp: now,
|
|
87
|
+
hash: hashEvidence(spConnections),
|
|
88
|
+
framework: "ISO27001",
|
|
89
|
+
controlId: "A.6.2.1",
|
|
90
|
+
source: "pingfederate/sp-connections",
|
|
91
|
+
status: spConnections.items?.length > 0 ? "compliant" : "non_compliant",
|
|
92
|
+
data: { spConnectionCount: spConnections.items?.length || 0 },
|
|
93
|
+
metadata: {},
|
|
94
|
+
});
|
|
95
|
+
return artifacts;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class PostgreSQLCloudConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "postgresql-cloud";
|
|
4
|
+
readonly name = "PostgreSQL Cloud";
|
|
5
|
+
readonly category: "data_warehouse";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "pgcloud-instances",
|
|
5
|
+
name: "Database Instances",
|
|
6
|
+
description: "Fetch PostgreSQL Cloud instance configurations, versions, and storage",
|
|
7
|
+
evidenceCategories: ["data_protection", "cloud_configuration"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "pgcloud-security",
|
|
11
|
+
name: "Security Configurations",
|
|
12
|
+
description: "Fetch SSL enforcement, IP whitelisting, and IAM authentication settings",
|
|
13
|
+
evidenceCategories: ["access_control", "encryption"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "pgcloud-backups",
|
|
17
|
+
name: "Backup and Recovery",
|
|
18
|
+
description: "Fetch backup schedules, retention policies, and point-in-time recovery status",
|
|
19
|
+
evidenceCategories: ["data_protection", "disaster_recovery"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class PostgreSQLCloudConnector {
|
|
23
|
+
id = "postgresql-cloud";
|
|
24
|
+
name = "PostgreSQL Cloud";
|
|
25
|
+
category = "data_warehouse";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF", "HIPAA", "PCI_DSS"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.postgres.cloud.example.com/v1";
|
|
31
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
throw new Error(`PostgreSQL Cloud API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/clusters?limit=1");
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async collectEvidence(config) {
|
|
51
|
+
const artifacts = [];
|
|
52
|
+
const now = new Date().toISOString();
|
|
53
|
+
const clusters = await this.fetchApi(config, "/clusters?limit=100").catch(() => ({ items: [] }));
|
|
54
|
+
const clusterList = (clusters.items || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "pgcloud-instances",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ clusterCount: clusterList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC6.1",
|
|
63
|
+
source: "postgresql-cloud/clusters",
|
|
64
|
+
status: clusterList.length > 0 ? "compliant" : "unknown",
|
|
65
|
+
data: { clusterCount: clusterList.length },
|
|
66
|
+
metadata: {},
|
|
67
|
+
});
|
|
68
|
+
return artifacts;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class PowerBIConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "powerbi";
|
|
4
|
+
readonly name = "Microsoft Power BI";
|
|
5
|
+
readonly category: "data_warehouse";
|
|
6
|
+
readonly authType: "oauth2";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|