- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
10 KiB
Vault Marketplace Service - Setup Complete ✅
Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation
Date: 2026-01-19
Status: ✅ IMPLEMENTATION COMPLETE
Executive Summary
The Vault service has been successfully integrated into the Sankofa Phoenix Marketplace. Users can now provision virtual vaults that run on the existing high-availability Vault cluster (192.168.11.200-202).
What Was Implemented
✅ 1. Vault Provisioning Service
File: dbis_core/src/core/iru/provisioning/vault-provisioning.service.ts
Features:
- Provisions isolated virtual vaults on the cluster
- Creates unique organization namespaces
- Generates AppRole credentials per vault
- Configures policies based on capacity tier
- Manages virtual vault lifecycle
Key Methods:
provisionVirtualVault()- Main provisioning methodcreateAppRoleForVault()- Authentication setupgeneratePolicy()- Policy generationdeleteVirtualVault()- Cleanup
✅ 2. Vault Service Configuration
File: dbis_core/src/core/iru/deployment/vault-service-config.service.ts
Features:
- Configures virtual vaults after provisioning
- Verifies cluster health
- Validates AppRole authentication
- Confirms path accessibility
Key Methods:
configureVaultService()- Main configurationverifyVaultHealth()- Health checksverifyAppRoleAuth()- Auth validationverifyVaultPath()- Path verification
✅ 3. Deployment Orchestrator Integration
File: dbis_core/src/core/iru/deployment/deployment-orchestrator.service.ts
Changes:
- Detects Vault offerings (
VAULT-VIRTUAL-VAULT) - Skips container provisioning (uses shared cluster)
- Provisions virtual vault instead
- Stores credentials in deployment metadata
- Verifies virtual vault health
✅ 4. Marketplace Seed Script
File: dbis_core/scripts/seed-vault-marketplace-offering.ts
Purpose:
- Adds Vault offering to marketplace database
- Configures offering details, pricing, features
- Sets technical specifications
Usage:
cd dbis_core
export VAULT_TOKEN=hvs.PMJcL6HkZnz0unUYZAdfttZY
npx tsx scripts/seed-vault-marketplace-offering.ts
✅ 5. Documentation
Files Created:
dbis_core/docs/marketplace/VAULT_MARKETPLACE_SERVICE.md- Service documentationdocs/04-configuration/VAULT_MARKETPLACE_INTEGRATION.md- Integration guidedocs/04-configuration/VAULT_MARKETPLACE_SETUP_COMPLETE.md- This document
How Virtual Vaults Work
Architecture
Virtual vaults are isolated namespaces within the shared Vault cluster:
Phoenix Vault Cluster (192.168.11.200-202)
│
├── Organization A Virtual Vault
│ └── secret/data/organizations/org-a/vault-1/
│ ├── api/
│ ├── database/
│ └── services/
│
├── Organization B Virtual Vault
│ └── secret/data/organizations/org-b/vault-1/
│ ├── api/
│ ├── database/
│ └── services/
│
└── Organization C Virtual Vault
└── secret/data/organizations/org-c/vault-1/
├── api/
├── database/
└── services/
Security Model
- Path Isolation: Each organization has a dedicated path
- Policy Isolation: Separate policies per virtual vault
- Credential Isolation: Unique AppRole per virtual vault
- Network Security: All traffic encrypted (TLS ready)
- Data Security: Secrets encrypted at rest (AES-256-GCM)
User Experience
Marketplace Flow
- Browse: User visits marketplace
- View: Sees "Virtual Vault Service" offering
- Inquire: Submits inquiry form
- Qualify: Completes IRU qualification
- Subscribe: Activates subscription
- Deploy: Clicks "Deploy Virtual Vault" in portal
- Configure: Sets vault name and options
- Receive: Gets credentials via portal
- Integrate: Uses credentials in applications
Credentials Provided
After deployment, users receive:
- API Endpoint: http://192.168.11.200:8200
- Role ID: Unique AppRole identifier
- Secret ID: Unique AppRole secret (display once)
- Vault Path:
secret/data/organizations/{org-id}/{vault-name}/
Setup Instructions
Step 1: Seed Marketplace Offering
cd /home/intlc/projects/proxmox/dbis_core
export VAULT_TOKEN=hvs.PMJcL6HkZnz0unUYZAdfttZY
npx tsx scripts/seed-vault-marketplace-offering.ts
Step 2: Verify Offering
# Check offering exists
curl http://localhost:3000/api/v1/iru/marketplace/offerings | \
jq '.data[] | select(.offeringId == "VAULT-VIRTUAL-VAULT")'
Step 3: Configure Environment
Ensure the Vault provisioning service has access to the root token:
# In production, store this securely
export VAULT_TOKEN=hvs.PMJcL6HkZnz0unUYZAdfttZY
# OR
export VAULT_ROOT_TOKEN=hvs.PMJcL6HkZnz0unUYZAdfttZY
Configuration Details
Offering Configuration
- Offering ID:
VAULT-VIRTUAL-VAULT - Name: Virtual Vault Service
- Base Price: $500/month
- Capacity Tier: 0 (all tiers)
- Institutional Type: All types
- Status: Active
Cluster Configuration
- Primary Endpoint: http://192.168.11.200:8200
- Secondary Endpoint: http://192.168.11.201:8200
- Tertiary Endpoint: http://192.168.11.202:8200
- Network: 192.168.11.0/24
- Cluster Type: Raft HA
API Integration Example
Node.js/TypeScript
import Vault from 'node-vault';
const vault = Vault({
endpoint: 'http://192.168.11.200:8200',
});
// Authenticate with AppRole
await vault.approleLogin({
role_id: process.env.VAULT_ROLE_ID,
secret_id: process.env.VAULT_SECRET_ID,
});
// Store secret
await vault.write('secret/data/organizations/my-org/my-vault/api-keys', {
data: {
apiKey: 'my-api-key',
secretKey: 'my-secret-key',
},
});
// Read secret
const secret = await vault.read('secret/data/organizations/my-org/my-vault/api-keys');
console.log(secret.data.data.apiKey);
Files Created/Modified
New Files
dbis_core/src/core/iru/provisioning/vault-provisioning.service.tsdbis_core/src/core/iru/deployment/vault-service-config.service.tsdbis_core/scripts/seed-vault-marketplace-offering.tsdbis_core/docs/marketplace/VAULT_MARKETPLACE_SERVICE.mddocs/04-configuration/VAULT_MARKETPLACE_INTEGRATION.mddocs/04-configuration/VAULT_MARKETPLACE_SETUP_COMPLETE.md
Modified Files
dbis_core/src/core/iru/deployment/deployment-orchestrator.service.ts- Added Vault offering detection
- Added virtual vault provisioning
- Added Vault service configuration
Testing
Test Provisioning (Manual)
import { vaultProvisioningService } from '@/core/iru/provisioning/vault-provisioning.service';
const result = await vaultProvisioningService.provisionVirtualVault({
subscriptionId: 'SUB-TEST-001',
organizationName: 'Test Organization',
vaultName: 'test-vault',
capacityTier: 3,
deploymentConfig: {
policyLevel: 'standard',
backupEnabled: true,
auditLogging: true,
},
});
Test Configuration
import { vaultServiceConfigService } from '@/core/iru/deployment/vault-service-config.service';
const result = await vaultServiceConfigService.configureVaultService({
vaultId: 'vault-test-org-1234567890',
vaultPath: 'secret/data/organizations/test-org/test-vault',
roleId: 'role-id-here',
secretId: 'secret-id-here',
apiEndpoint: 'http://192.168.11.200:8200',
organizationId: 'test-org',
subscriptionId: 'SUB-TEST-001',
});
Security Notes
⚠️ Important Security Considerations
-
Root Token Storage:
- Currently uses environment variable
- Recommendation: Store in secure vault or HSM
-
Secret ID Storage:
- Stored in deployment metadata
- Recommendation: Encrypt before storing
-
Access Control:
- Policies prevent cross-organization access
- AppRole credentials are unique per vault
- Token TTL: 1 hour (configurable)
-
Audit Logging:
- Optional per virtual vault
- Recommendation: Enable for all production vaults
Next Steps
Immediate Actions
- ✅ Seed Offering: Run seed script to add to marketplace
- ⏳ Test Provisioning: Test virtual vault creation
- ⏳ Update Portal UI: Add Vault deployment interface
- ⏳ User Documentation: Create user-facing guides
Short-term Enhancements
- Encrypt Secret IDs: Implement encryption for stored credentials
- Quota Management: Enforce storage/secret quotas
- Monitoring: Add virtual vault monitoring
- Billing Integration: Connect to billing system
Long-term Improvements
- Multi-Region: Support multi-region virtual vaults
- Advanced Policies: More granular policy options
- Secret Rotation: Automated secret rotation
- Compliance Reporting: Generate compliance reports
Troubleshooting
Provisioning Fails
Symptoms: Virtual vault provisioning fails
Solutions:
- Check Vault cluster is accessible
- Verify root token is valid and has permissions
- Ensure cluster is unsealed
- Check logs for specific errors
Authentication Issues
Symptoms: AppRole authentication doesn't work
Solutions:
- Verify Role ID and Secret ID are correct
- Check AppRole is enabled on cluster
- Verify policy is attached to role
- Check token hasn't expired
Path Access Issues
Symptoms: Cannot access virtual vault path
Solutions:
- Verify path exists in Vault
- Check policy allows access to path
- Verify AppRole has correct permissions
- Check vault path format matches exactly
Summary
✅ Vault service successfully added to marketplace ✅ Virtual vault provisioning implemented ✅ Deployment orchestrator updated ✅ Documentation complete
The Vault service is now available in the Sankofa Phoenix Marketplace. Users can subscribe and provision virtual vaults that run on the existing high-availability cluster.
Status: ✅ SETUP COMPLETE
Last Updated: 2026-01-19