Skip to main content

Blessed Destinations

Destination policies define what PII types are allowed or blocked for specific domains. This enables fine-grained control over data flow.

Concepts

ConceptDescription
allowedDomainsDomains that bypass ALL scanning
allowedPiiTypesPII types permitted for a destination
blockedPiiTypesPII types always redacted for a destination
bypassSkip scanning entirely for a specific policy

Configuration

init({
  // Global bypass list
  allowedDomains: ["localhost", "127.0.0.1"],
  
  // Per-destination rules
  destinationPolicies: [
    // Payment processor - needs credit cards
    {
      domain: "*.stripe.com",
      label: "Payment Processor",
      allowedPiiTypes: ["credit_card", "email"],
    },
    
    // Analytics - never gets sensitive data
    {
      domain: "*.segment.io",
      label: "Analytics",
      blockedPiiTypes: ["ssn", "credit_card", "api_key"],
    },
    
    // Internal API - full bypass
    {
      domain: "api.internal.company.com",
      label: "Internal API",
      bypass: true,
    },
    
    // AI providers - block credentials
    {
      domain: "*.openai.com",
      label: "AI Provider",
      blockedPiiTypes: ["ssn", "credit_card", "api_key", "aws_key"],
    },
  ],
});

Pattern Matching

Domain patterns support wildcards:
PatternMatches
api.stripe.comExact match only
*.stripe.comAny subdomain of stripe.com
*.api.example.comAny subdomain of api.example.com

Policy Precedence

  1. allowedDomains — Checked first, full bypass
  2. destinationPolicies — Matched in order, first match wins
  3. Default — All PII types are redacted

Blocking Unknown Domains

For strict environments, block requests to unlisted domains:
init({
  allowedDomains: ["localhost", "api.trusted.com"],
  destinationPolicies: [
    { domain: "*.stripe.com", allowedPiiTypes: ["credit_card"] },
  ],
  blockUnknownDomains: true,
});

// Requests to unknown domains throw BorderBlockedError
try {
  await fetch("https://unknown.com/api", { body: sensitiveData });
} catch (e) {
  if (e.name === "BorderBlockedError") {
    console.log("Request blocked: unknown domain");
  }
}

Inspecting Policies

import { getDomainPolicy, shouldBlockRequest } from "@dotsetlabs/border";

const policy = getPolicy();

// Check what would happen for a URL
const result = getDomainPolicy("https://api.stripe.com/v1/charges", policy);
console.log(result.isAllowed);      // false (has specific rules)
console.log(result.allowedTypes);   // Set { "credit_card", "email" }

// Check if a request would be blocked
const blocked = shouldBlockRequest("https://unknown.com", policy);

Destination Categories

Border automatically categorizes destinations for audit logging:
CategoryExamples
internallocalhost, *.internal, *.local
payment_processorapi.stripe.com, api.paypal.com
analyticsapi.segment.io, api.mixpanel.com
ai_providerapi.openai.com, api.anthropic.com
marketingapi.mailchimp.com, api.hubapi.com
unknownEverything else

Next Steps