@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,96 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "docusign-templates",
|
|
5
|
+
name: "Envelope Templates",
|
|
6
|
+
description: "Fetch document templates and signing configurations",
|
|
7
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "docusign-security",
|
|
11
|
+
name: "Security Policies",
|
|
12
|
+
description: "Fetch access codes, identity verification, and authentication settings",
|
|
13
|
+
evidenceCategories: ["access_control", "data_protection"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "docusign-audit",
|
|
17
|
+
name: "Envelope History",
|
|
18
|
+
description: "Fetch signing ceremony audit trails and completion logs",
|
|
19
|
+
evidenceCategories: ["monitoring", "access_control"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "docusign-admin",
|
|
23
|
+
name: "Admin Users",
|
|
24
|
+
description: "Fetch admin user permissions and group memberships",
|
|
25
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class DocuSignConnector {
|
|
29
|
+
id = "docusign";
|
|
30
|
+
name = "DocuSign";
|
|
31
|
+
category = "finance";
|
|
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://demo.docusign.net";
|
|
43
|
+
const resp = await fetch(`${base}/restapi/v2.1${endpoint}`, {
|
|
44
|
+
headers: {
|
|
45
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
46
|
+
"Content-Type": "application/json",
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
if (!resp.ok)
|
|
50
|
+
throw new Error(`DocuSign API ${resp.status}: ${resp.statusText}`);
|
|
51
|
+
return (await resp.json());
|
|
52
|
+
}
|
|
53
|
+
async testConnection(config) {
|
|
54
|
+
try {
|
|
55
|
+
await this.fetchApi(config, "/accounts");
|
|
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 accountId = config.extra?.accountId || "";
|
|
66
|
+
const templates = await this.fetchApi(config, `/accounts/${accountId}/templates`).catch(() => ({ envelopeTemplates: [] }));
|
|
67
|
+
artifacts.push({
|
|
68
|
+
id: generateEvidenceId(),
|
|
69
|
+
connectorId: this.id,
|
|
70
|
+
capabilityId: "docusign-templates",
|
|
71
|
+
timestamp: now,
|
|
72
|
+
hash: hashEvidence(templates),
|
|
73
|
+
framework: "SOC2",
|
|
74
|
+
controlId: "CC6.1",
|
|
75
|
+
source: `docusign/${accountId}/templates`,
|
|
76
|
+
status: templates.envelopeTemplates?.length > 0 ? "compliant" : "unknown",
|
|
77
|
+
data: { templateCount: templates.envelopeTemplates?.length || 0 },
|
|
78
|
+
metadata: { accountId },
|
|
79
|
+
});
|
|
80
|
+
const envelopes = await this.fetchApi(config, `/accounts/${accountId}/envelopes?from_date=2024-01-01&count=10`).catch(() => ({ envelopes: [] }));
|
|
81
|
+
artifacts.push({
|
|
82
|
+
id: generateEvidenceId(),
|
|
83
|
+
connectorId: this.id,
|
|
84
|
+
capabilityId: "docusign-audit",
|
|
85
|
+
timestamp: now,
|
|
86
|
+
hash: hashEvidence(envelopes),
|
|
87
|
+
framework: "ISO27001",
|
|
88
|
+
controlId: "A.12.4.1",
|
|
89
|
+
source: `docusign/${accountId}/envelopes`,
|
|
90
|
+
status: "partial",
|
|
91
|
+
data: { recentEnvelopes: envelopes.envelopes?.length || 0 },
|
|
92
|
+
metadata: { accountId },
|
|
93
|
+
});
|
|
94
|
+
return artifacts;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class DriftConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "drift";
|
|
4
|
+
readonly name = "Drift";
|
|
5
|
+
readonly category: "communication";
|
|
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,69 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "drift-conversations",
|
|
5
|
+
name: "Conversations",
|
|
6
|
+
description: "Fetch Drift chatbot conversation logs and lead capture metrics",
|
|
7
|
+
evidenceCategories: ["communication", "monitoring"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "drift-security",
|
|
11
|
+
name: "Security Settings",
|
|
12
|
+
description: "Fetch Drift SSO, API access controls, and data retention settings",
|
|
13
|
+
evidenceCategories: ["access_control", "data_protection"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "drift-playbooks",
|
|
17
|
+
name: "Playbook Configurations",
|
|
18
|
+
description: "Fetch Drift playbook definitions, routing rules, and approval workflows",
|
|
19
|
+
evidenceCategories: ["configuration", "change_management"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class DriftConnector {
|
|
23
|
+
id = "drift";
|
|
24
|
+
name = "Drift";
|
|
25
|
+
category = "communication";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.drift.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(`Drift 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 account = await this.fetchApi(config, "/account").catch(() => ({}));
|
|
54
|
+
artifacts.push({
|
|
55
|
+
id: generateEvidenceId(),
|
|
56
|
+
connectorId: this.id,
|
|
57
|
+
capabilityId: "drift-conversations",
|
|
58
|
+
timestamp: now,
|
|
59
|
+
hash: hashEvidence(account),
|
|
60
|
+
framework: "SOC2",
|
|
61
|
+
controlId: "CC7.3",
|
|
62
|
+
source: "drift/account",
|
|
63
|
+
status: "unknown",
|
|
64
|
+
data: { connected: true },
|
|
65
|
+
metadata: {},
|
|
66
|
+
});
|
|
67
|
+
return artifacts;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class DropboxConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "dropbox";
|
|
4
|
+
readonly name = "Dropbox";
|
|
5
|
+
readonly category: "file_storage";
|
|
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,127 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "dropbox-files",
|
|
5
|
+
name: "File Inventory",
|
|
6
|
+
description: "Fetch Dropbox file and folder inventory with sharing status",
|
|
7
|
+
evidenceCategories: ["file_storage", "data_protection"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "dropbox-sharing",
|
|
11
|
+
name: "Shared Links",
|
|
12
|
+
description: "Fetch shared links and external access configurations",
|
|
13
|
+
evidenceCategories: ["access_control", "data_protection"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "dropbox-members",
|
|
17
|
+
name: "Team Members",
|
|
18
|
+
description: "Fetch Dropbox team members and role assignments",
|
|
19
|
+
evidenceCategories: ["identity_management", "access_control"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "dropbox-events",
|
|
23
|
+
name: "File Events",
|
|
24
|
+
description: "Fetch recent file activity and access audit events",
|
|
25
|
+
evidenceCategories: ["audit_logging", "data_protection"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class DropboxConnector {
|
|
29
|
+
id = "dropbox";
|
|
30
|
+
name = "Dropbox";
|
|
31
|
+
category = "file_storage";
|
|
32
|
+
authType = "bearer_token";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = ["SOC2", "ISO27001", "HIPAA"];
|
|
35
|
+
async fetchApi(config, endpoint, body) {
|
|
36
|
+
const base = config.baseUrl || "https://api.dropboxapi.com/2";
|
|
37
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
38
|
+
method: "POST",
|
|
39
|
+
headers: {
|
|
40
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
41
|
+
"Content-Type": "application/json",
|
|
42
|
+
},
|
|
43
|
+
body: body ? JSON.stringify(body) : "{}",
|
|
44
|
+
});
|
|
45
|
+
if (!resp.ok)
|
|
46
|
+
throw new Error(`Dropbox API ${resp.status}: ${resp.statusText}`);
|
|
47
|
+
return (await resp.json());
|
|
48
|
+
}
|
|
49
|
+
async testConnection(config) {
|
|
50
|
+
try {
|
|
51
|
+
await this.fetchApi(config, "/users/get_current_account");
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async collectEvidence(config) {
|
|
59
|
+
const artifacts = [];
|
|
60
|
+
const now = new Date().toISOString();
|
|
61
|
+
const files = await this.fetchApi(config, "/files/list_folder", { path: "", recursive: false }).catch(() => ({ entries: [] }));
|
|
62
|
+
const fileList = (files.entries || []);
|
|
63
|
+
artifacts.push({
|
|
64
|
+
id: generateEvidenceId(),
|
|
65
|
+
connectorId: this.id,
|
|
66
|
+
capabilityId: "dropbox-files",
|
|
67
|
+
timestamp: now,
|
|
68
|
+
hash: hashEvidence({ fileCount: fileList.length }),
|
|
69
|
+
framework: "SOC2",
|
|
70
|
+
controlId: "CC6.4",
|
|
71
|
+
source: "dropbox/files",
|
|
72
|
+
status: fileList.length > 0 ? "compliant" : "non_compliant",
|
|
73
|
+
data: { fileCount: fileList.length },
|
|
74
|
+
metadata: {},
|
|
75
|
+
});
|
|
76
|
+
const sharedLinks = await this.fetchApi(config, "/sharing/list_shared_links", { limit: 100 }).catch(() => ({ links: [] }));
|
|
77
|
+
const linkList = (sharedLinks.links || []);
|
|
78
|
+
const publicLinks = linkList.filter((l) => {
|
|
79
|
+
const policy = (l.link_permissions || {});
|
|
80
|
+
return policy.resolved_visibility === "public";
|
|
81
|
+
});
|
|
82
|
+
artifacts.push({
|
|
83
|
+
id: generateEvidenceId(),
|
|
84
|
+
connectorId: this.id,
|
|
85
|
+
capabilityId: "dropbox-sharing",
|
|
86
|
+
timestamp: now,
|
|
87
|
+
hash: hashEvidence({ total: linkList.length, public: publicLinks.length }),
|
|
88
|
+
framework: "ISO27001",
|
|
89
|
+
controlId: "A.9.2.5",
|
|
90
|
+
source: "dropbox/sharing",
|
|
91
|
+
status: publicLinks.length === 0 ? "compliant" : "non_compliant",
|
|
92
|
+
data: { totalLinks: linkList.length, publicLinks: publicLinks.length },
|
|
93
|
+
metadata: {},
|
|
94
|
+
});
|
|
95
|
+
const members = await this.fetchApi(config, "/team/members/list", { limit: 100 }).catch(() => ({ members: [] }));
|
|
96
|
+
const memberList = (members.members || []);
|
|
97
|
+
artifacts.push({
|
|
98
|
+
id: generateEvidenceId(),
|
|
99
|
+
connectorId: this.id,
|
|
100
|
+
capabilityId: "dropbox-members",
|
|
101
|
+
timestamp: now,
|
|
102
|
+
hash: hashEvidence({ memberCount: memberList.length }),
|
|
103
|
+
framework: "SOC2",
|
|
104
|
+
controlId: "CC6.1",
|
|
105
|
+
source: "dropbox/members",
|
|
106
|
+
status: "unknown",
|
|
107
|
+
data: { memberCount: memberList.length },
|
|
108
|
+
metadata: {},
|
|
109
|
+
});
|
|
110
|
+
const events = await this.fetchApi(config, "https://api.dropboxapi.com/2/team_log/get_events", { limit: 100 }).catch(() => ({ events: [] }));
|
|
111
|
+
const eventList = (events.events || []);
|
|
112
|
+
artifacts.push({
|
|
113
|
+
id: generateEvidenceId(),
|
|
114
|
+
connectorId: this.id,
|
|
115
|
+
capabilityId: "dropbox-events",
|
|
116
|
+
timestamp: now,
|
|
117
|
+
hash: hashEvidence({ eventCount: eventList.length }),
|
|
118
|
+
framework: "SOC2",
|
|
119
|
+
controlId: "CC7.2",
|
|
120
|
+
source: "dropbox/events",
|
|
121
|
+
status: "unknown",
|
|
122
|
+
data: { eventCount: eventList.length },
|
|
123
|
+
metadata: {},
|
|
124
|
+
});
|
|
125
|
+
return artifacts;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class ESETConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "eset";
|
|
4
|
+
readonly name = "ESET";
|
|
5
|
+
readonly category: "endpoint";
|
|
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: "eset-endpoints",
|
|
5
|
+
name: "Endpoint Security",
|
|
6
|
+
description: "Fetch ESET endpoint agent status and detection statistics",
|
|
7
|
+
evidenceCategories: ["endpoint_security", "monitoring"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "eset-policies",
|
|
11
|
+
name: "Security Policies",
|
|
12
|
+
description: "Fetch ESET policy configurations and compliance status",
|
|
13
|
+
evidenceCategories: ["policy_compliance", "configuration"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "eset-threats",
|
|
17
|
+
name: "Threat Events",
|
|
18
|
+
description: "Fetch threat detection events and quarantine history",
|
|
19
|
+
evidenceCategories: ["vulnerability_management", "monitoring"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class ESETConnector {
|
|
23
|
+
id = "eset";
|
|
24
|
+
name = "ESET";
|
|
25
|
+
category = "endpoint";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF", "HIPAA"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://protect.eset.com/api/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(`ESET API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/computers?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 computers = await this.fetchApi(config, "/computers?limit=100").catch(() => ({ items: [] }));
|
|
54
|
+
const computerList = (computers.items || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "eset-endpoints",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ computerCount: computerList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC6.8",
|
|
63
|
+
source: "eset/computers",
|
|
64
|
+
status: computerList.length > 0 ? "compliant" : "unknown",
|
|
65
|
+
data: { endpointCount: computerList.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 ElasticsearchCloudConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "elasticsearch-cloud";
|
|
4
|
+
readonly name = "Elasticsearch 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: "elasticsearch-clusters",
|
|
5
|
+
name: "Elasticsearch Clusters",
|
|
6
|
+
description: "Fetch Elasticsearch Cloud cluster configurations and index health",
|
|
7
|
+
evidenceCategories: ["data_protection", "cloud_configuration"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "elasticsearch-security",
|
|
11
|
+
name: "Security Configurations",
|
|
12
|
+
description: "Fetch Elasticsearch security realms, TLS settings, and API key management",
|
|
13
|
+
evidenceCategories: ["access_control", "encryption"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "elasticsearch-audit",
|
|
17
|
+
name: "Audit Logging",
|
|
18
|
+
description: "Fetch Elasticsearch audit log configurations and access events",
|
|
19
|
+
evidenceCategories: ["monitoring", "audit"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class ElasticsearchCloudConnector {
|
|
23
|
+
id = "elasticsearch-cloud";
|
|
24
|
+
name = "Elasticsearch Cloud";
|
|
25
|
+
category = "data_warehouse";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.elastic-cloud.com/v1";
|
|
31
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `ApiKey ${config.apiToken}`,
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
throw new Error(`Elasticsearch Cloud API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/deployments?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 deployments = await this.fetchApi(config, "/deployments?limit=100").catch(() => ({ deployments: [] }));
|
|
54
|
+
const deployList = (deployments.deployments || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "elasticsearch-clusters",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ deploymentCount: deployList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC6.1",
|
|
63
|
+
source: "elasticsearch-cloud/deployments",
|
|
64
|
+
status: deployList.length > 0 ? "compliant" : "unknown",
|
|
65
|
+
data: { deploymentCount: deployList.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 FSecureConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "fsecure";
|
|
4
|
+
readonly name = "F-Secure";
|
|
5
|
+
readonly category: "endpoint";
|
|
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: "fsecure-endpoints",
|
|
5
|
+
name: "Endpoint Protection",
|
|
6
|
+
description: "Fetch F-Secure endpoint agent deployment and protection status",
|
|
7
|
+
evidenceCategories: ["endpoint_security", "monitoring"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "fsecure-detections",
|
|
11
|
+
name: "Threat Detections",
|
|
12
|
+
description: "Fetch F-Secure threat detection and malware quarantine events",
|
|
13
|
+
evidenceCategories: ["vulnerability_management", "monitoring"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "fsecure-policies",
|
|
17
|
+
name: "Security Policies",
|
|
18
|
+
description: "Fetch policy configurations and scan schedule compliance",
|
|
19
|
+
evidenceCategories: ["policy_compliance", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class FSecureConnector {
|
|
23
|
+
id = "fsecure";
|
|
24
|
+
name = "F-Secure";
|
|
25
|
+
category = "endpoint";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://cloud.f-secure.com/api/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(`F-Secure API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/computers?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 computers = await this.fetchApi(config, "/computers?limit=100").catch(() => ({ items: [] }));
|
|
54
|
+
const computerList = (computers.items || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "fsecure-endpoints",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ computerCount: computerList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC6.8",
|
|
63
|
+
source: "fsecure/computers",
|
|
64
|
+
status: computerList.length > 0 ? "compliant" : "unknown",
|
|
65
|
+
data: { endpointCount: computerList.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 FeatureFlagConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "featureflag";
|
|
4
|
+
readonly name = "Feature Flag Service";
|
|
5
|
+
readonly category: "ci_cd";
|
|
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: "featureflag-flags",
|
|
5
|
+
name: "Feature Flags",
|
|
6
|
+
description: "Fetch feature flag definitions, targeting rules, and percentage rollouts",
|
|
7
|
+
evidenceCategories: ["configuration", "change_management"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "featureflag-audit",
|
|
11
|
+
name: "Change Audit Trail",
|
|
12
|
+
description: "Fetch flag change history and approval workflows",
|
|
13
|
+
evidenceCategories: ["audit", "change_management"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "featureflag-environments",
|
|
17
|
+
name: "Environment Segmentation",
|
|
18
|
+
description: "Fetch environment-specific flag configurations and overrides",
|
|
19
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class FeatureFlagConnector {
|
|
23
|
+
id = "featureflag";
|
|
24
|
+
name = "Feature Flag Service";
|
|
25
|
+
category = "ci_cd";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.featureflags.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(`Feature Flag API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/flags?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 flags = await this.fetchApi(config, "/flags?limit=100").catch(() => ({ items: [] }));
|
|
54
|
+
const flagList = (flags.items || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "featureflag-flags",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ flagCount: flagList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC8.1",
|
|
63
|
+
source: "featureflag/flags",
|
|
64
|
+
status: "unknown",
|
|
65
|
+
data: { flagCount: flagList.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 FluxCDConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "fluxcd";
|
|
4
|
+
readonly name = "FluxCD";
|
|
5
|
+
readonly category: "ci_cd";
|
|
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
|
+
}
|