@cloudstreamsoftware/claude-tools 1.0.0 → 1.2.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/README.md +152 -37
- package/agents/INDEX.md +183 -0
- package/agents/architect.md +247 -0
- package/agents/build-error-resolver.md +555 -0
- package/agents/catalyst-deployer.md +132 -0
- package/agents/code-reviewer.md +121 -0
- package/agents/compliance-auditor.md +148 -0
- package/agents/creator-architect.md +395 -0
- package/agents/deluge-reviewer.md +98 -0
- package/agents/doc-updater.md +471 -0
- package/agents/e2e-runner.md +711 -0
- package/agents/planner.md +122 -0
- package/agents/refactor-cleaner.md +309 -0
- package/agents/security-reviewer.md +582 -0
- package/agents/tdd-guide.md +302 -0
- package/bin/cloudstream-setup.js +16 -6
- package/config/versions.json +63 -0
- package/dist/hooks/hooks.json +209 -0
- package/dist/index.js +47 -0
- package/dist/lib/asset-value.js +609 -0
- package/dist/lib/client-manager.js +300 -0
- package/dist/lib/command-matcher.js +242 -0
- package/dist/lib/cross-session-patterns.js +754 -0
- package/dist/lib/intent-classifier.js +1075 -0
- package/dist/lib/package-manager.js +374 -0
- package/dist/lib/recommendation-engine.js +597 -0
- package/dist/lib/session-memory.js +489 -0
- package/dist/lib/skill-effectiveness.js +486 -0
- package/dist/lib/skill-matcher.js +595 -0
- package/dist/lib/tutorial-metrics.js +242 -0
- package/dist/lib/tutorial-progress.js +209 -0
- package/dist/lib/tutorial-renderer.js +431 -0
- package/dist/lib/utils.js +380 -0
- package/dist/lib/verify-formatter.js +143 -0
- package/dist/lib/workflow-state.js +249 -0
- package/hooks/hooks.json +209 -0
- package/package.json +5 -1
- package/scripts/aggregate-sessions.js +290 -0
- package/scripts/branch-name-validator.js +291 -0
- package/scripts/build.js +101 -0
- package/scripts/commands/client-switch.js +231 -0
- package/scripts/deprecate-skill.js +610 -0
- package/scripts/diagnose.js +324 -0
- package/scripts/doc-freshness.js +168 -0
- package/scripts/generate-weekly-digest.js +393 -0
- package/scripts/health-check.js +270 -0
- package/scripts/hooks/credential-check.js +101 -0
- package/scripts/hooks/evaluate-session.js +81 -0
- package/scripts/hooks/pre-compact.js +66 -0
- package/scripts/hooks/prompt-analyzer.js +276 -0
- package/scripts/hooks/prompt-router.js +422 -0
- package/scripts/hooks/quality-gate-enforcer.js +371 -0
- package/scripts/hooks/session-end.js +156 -0
- package/scripts/hooks/session-start.js +195 -0
- package/scripts/hooks/skill-injector.js +333 -0
- package/scripts/hooks/suggest-compact.js +58 -0
- package/scripts/lib/asset-value.js +609 -0
- package/scripts/lib/client-manager.js +300 -0
- package/scripts/lib/command-matcher.js +242 -0
- package/scripts/lib/cross-session-patterns.js +754 -0
- package/scripts/lib/intent-classifier.js +1075 -0
- package/scripts/lib/package-manager.js +374 -0
- package/scripts/lib/recommendation-engine.js +597 -0
- package/scripts/lib/session-memory.js +489 -0
- package/scripts/lib/skill-effectiveness.js +486 -0
- package/scripts/lib/skill-matcher.js +595 -0
- package/scripts/lib/tutorial-metrics.js +242 -0
- package/scripts/lib/tutorial-progress.js +209 -0
- package/scripts/lib/tutorial-renderer.js +431 -0
- package/scripts/lib/utils.js +380 -0
- package/scripts/lib/verify-formatter.js +143 -0
- package/scripts/lib/workflow-state.js +249 -0
- package/scripts/onboard.js +363 -0
- package/scripts/quarterly-report.js +692 -0
- package/scripts/setup-package-manager.js +204 -0
- package/scripts/sync-upstream.js +391 -0
- package/scripts/test.js +108 -0
- package/scripts/tutorial-runner.js +351 -0
- package/scripts/validate-all.js +201 -0
- package/scripts/verifiers/agents.js +245 -0
- package/scripts/verifiers/config.js +186 -0
- package/scripts/verifiers/environment.js +123 -0
- package/scripts/verifiers/hooks.js +188 -0
- package/scripts/verifiers/index.js +38 -0
- package/scripts/verifiers/persistence.js +140 -0
- package/scripts/verifiers/plugin.js +215 -0
- package/scripts/verifiers/skills.js +209 -0
- package/scripts/verify-setup.js +164 -0
- package/skills/INDEX.md +157 -0
- package/skills/backend-patterns/SKILL.md +586 -0
- package/skills/backend-patterns/catalyst-patterns.md +128 -0
- package/skills/bigquery-patterns/SKILL.md +27 -0
- package/skills/bigquery-patterns/performance-optimization.md +518 -0
- package/skills/bigquery-patterns/query-patterns.md +372 -0
- package/skills/bigquery-patterns/schema-design.md +78 -0
- package/skills/cloudstream-project-template/SKILL.md +20 -0
- package/skills/cloudstream-project-template/structure.md +65 -0
- package/skills/coding-standards/SKILL.md +524 -0
- package/skills/coding-standards/deluge-standards.md +83 -0
- package/skills/compliance-patterns/SKILL.md +28 -0
- package/skills/compliance-patterns/hipaa/audit-requirements.md +251 -0
- package/skills/compliance-patterns/hipaa/baa-process.md +298 -0
- package/skills/compliance-patterns/hipaa/data-archival-strategy.md +387 -0
- package/skills/compliance-patterns/hipaa/phi-handling.md +52 -0
- package/skills/compliance-patterns/pci-dss/saq-a-requirements.md +307 -0
- package/skills/compliance-patterns/pci-dss/tokenization-patterns.md +382 -0
- package/skills/compliance-patterns/pci-dss/zoho-checkout-patterns.md +56 -0
- package/skills/compliance-patterns/soc2/access-controls.md +344 -0
- package/skills/compliance-patterns/soc2/audit-logging.md +458 -0
- package/skills/compliance-patterns/soc2/change-management.md +403 -0
- package/skills/compliance-patterns/soc2/deluge-execution-logging.md +407 -0
- package/skills/consultancy-workflows/SKILL.md +19 -0
- package/skills/consultancy-workflows/client-isolation.md +21 -0
- package/skills/consultancy-workflows/documentation-automation.md +454 -0
- package/skills/consultancy-workflows/handoff-procedures.md +257 -0
- package/skills/consultancy-workflows/knowledge-capture.md +513 -0
- package/skills/consultancy-workflows/time-tracking.md +26 -0
- package/skills/continuous-learning/SKILL.md +84 -0
- package/skills/continuous-learning/config.json +18 -0
- package/skills/continuous-learning/evaluate-session.sh +60 -0
- package/skills/continuous-learning-v2/SKILL.md +126 -0
- package/skills/continuous-learning-v2/config.json +61 -0
- package/skills/frontend-patterns/SKILL.md +635 -0
- package/skills/frontend-patterns/zoho-widget-patterns.md +103 -0
- package/skills/gcp-data-engineering/SKILL.md +36 -0
- package/skills/gcp-data-engineering/bigquery/performance-optimization.md +337 -0
- package/skills/gcp-data-engineering/dataflow/error-handling.md +496 -0
- package/skills/gcp-data-engineering/dataflow/pipeline-patterns.md +444 -0
- package/skills/gcp-data-engineering/dbt/model-organization.md +63 -0
- package/skills/gcp-data-engineering/dbt/testing-patterns.md +503 -0
- package/skills/gcp-data-engineering/medallion-architecture/bronze-layer.md +60 -0
- package/skills/gcp-data-engineering/medallion-architecture/gold-layer.md +311 -0
- package/skills/gcp-data-engineering/medallion-architecture/layer-transitions.md +517 -0
- package/skills/gcp-data-engineering/medallion-architecture/silver-layer.md +305 -0
- package/skills/gcp-data-engineering/zoho-to-gcp/data-extraction.md +543 -0
- package/skills/gcp-data-engineering/zoho-to-gcp/real-time-vs-batch.md +337 -0
- package/skills/security-review/SKILL.md +498 -0
- package/skills/security-review/compliance-checklist.md +53 -0
- package/skills/strategic-compact/SKILL.md +67 -0
- package/skills/tdd-workflow/SKILL.md +413 -0
- package/skills/tdd-workflow/zoho-testing.md +124 -0
- package/skills/tutorial/SKILL.md +249 -0
- package/skills/tutorial/docs/ACCESSIBILITY.md +169 -0
- package/skills/tutorial/lessons/00-philosophy-and-workflow.md +198 -0
- package/skills/tutorial/lessons/01-basics.md +81 -0
- package/skills/tutorial/lessons/02-training.md +86 -0
- package/skills/tutorial/lessons/03-commands.md +109 -0
- package/skills/tutorial/lessons/04-workflows.md +115 -0
- package/skills/tutorial/lessons/05-compliance.md +116 -0
- package/skills/tutorial/lessons/06-zoho.md +121 -0
- package/skills/tutorial/lessons/07-hooks-system.md +277 -0
- package/skills/tutorial/lessons/08-mcp-servers.md +316 -0
- package/skills/tutorial/lessons/09-client-management.md +215 -0
- package/skills/tutorial/lessons/10-testing-e2e.md +260 -0
- package/skills/tutorial/lessons/11-skills-deep-dive.md +272 -0
- package/skills/tutorial/lessons/12-rules-system.md +326 -0
- package/skills/tutorial/lessons/13-golden-standard-graduation.md +213 -0
- package/skills/tutorial/lessons/14-fork-setup-and-sync.md +312 -0
- package/skills/tutorial/lessons/15-living-examples-system.md +221 -0
- package/skills/tutorial/tracks/accelerated/README.md +134 -0
- package/skills/tutorial/tracks/accelerated/assessment/checkpoint-1.md +161 -0
- package/skills/tutorial/tracks/accelerated/assessment/checkpoint-2.md +175 -0
- package/skills/tutorial/tracks/accelerated/day-1-core-concepts.md +234 -0
- package/skills/tutorial/tracks/accelerated/day-2-essential-commands.md +270 -0
- package/skills/tutorial/tracks/accelerated/day-3-workflow-mastery.md +305 -0
- package/skills/tutorial/tracks/accelerated/day-4-compliance-zoho.md +304 -0
- package/skills/tutorial/tracks/accelerated/day-5-hooks-skills.md +344 -0
- package/skills/tutorial/tracks/accelerated/day-6-client-testing.md +386 -0
- package/skills/tutorial/tracks/accelerated/day-7-graduation.md +369 -0
- package/skills/zoho-patterns/CHANGELOG.md +108 -0
- package/skills/zoho-patterns/SKILL.md +446 -0
- package/skills/zoho-patterns/analytics/dashboard-patterns.md +352 -0
- package/skills/zoho-patterns/analytics/zoho-to-bigquery-pipeline.md +427 -0
- package/skills/zoho-patterns/catalyst/appsail-deployment.md +349 -0
- package/skills/zoho-patterns/catalyst/context-close-patterns.md +354 -0
- package/skills/zoho-patterns/catalyst/cron-batch-processing.md +374 -0
- package/skills/zoho-patterns/catalyst/function-patterns.md +439 -0
- package/skills/zoho-patterns/creator/form-design.md +304 -0
- package/skills/zoho-patterns/creator/publish-api-patterns.md +313 -0
- package/skills/zoho-patterns/creator/widget-integration.md +306 -0
- package/skills/zoho-patterns/creator/workflow-automation.md +253 -0
- package/skills/zoho-patterns/deluge/api-patterns.md +468 -0
- package/skills/zoho-patterns/deluge/batch-processing.md +403 -0
- package/skills/zoho-patterns/deluge/cross-app-integration.md +356 -0
- package/skills/zoho-patterns/deluge/error-handling.md +423 -0
- package/skills/zoho-patterns/deluge/syntax-reference.md +65 -0
- package/skills/zoho-patterns/integration/cors-proxy-architecture.md +426 -0
- package/skills/zoho-patterns/integration/crm-books-native-sync.md +277 -0
- package/skills/zoho-patterns/integration/oauth-token-management.md +461 -0
- package/skills/zoho-patterns/integration/zoho-flow-patterns.md +334 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# PCI-DSS with Zoho Checkout
|
|
2
|
+
|
|
3
|
+
## SAQ-A Compliance (Hosted Payment Pages)
|
|
4
|
+
Using Zoho Checkout hosted pages means:
|
|
5
|
+
- Cardholder data NEVER touches your systems
|
|
6
|
+
- Simplified compliance (SAQ-A vs full SAQ-D)
|
|
7
|
+
- Zoho handles PCI-DSS Level 1 compliance for payment processing
|
|
8
|
+
- You only need to secure the redirect/iframe integration
|
|
9
|
+
|
|
10
|
+
## Implementation Pattern
|
|
11
|
+
```javascript
|
|
12
|
+
// Widget: Redirect to Zoho Checkout hosted page
|
|
13
|
+
function initiatePayment(orderId, amount) {
|
|
14
|
+
const checkoutConfig = {
|
|
15
|
+
amount: amount,
|
|
16
|
+
currency: 'USD',
|
|
17
|
+
order_id: orderId,
|
|
18
|
+
redirect_url: window.location.origin + '/payment-complete',
|
|
19
|
+
cancel_url: window.location.origin + '/payment-cancelled'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
// Get checkout URL from Catalyst function (server-side)
|
|
23
|
+
fetch('/api/create-checkout-session', {
|
|
24
|
+
method: 'POST',
|
|
25
|
+
body: JSON.stringify(checkoutConfig)
|
|
26
|
+
})
|
|
27
|
+
.then(res => res.json())
|
|
28
|
+
.then(data => {
|
|
29
|
+
window.location.href = data.checkout_url; // Redirect to Zoho Checkout
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Tokenization for Recurring
|
|
35
|
+
```javascript
|
|
36
|
+
// Catalyst function: Create subscription with token
|
|
37
|
+
async function createSubscription(customerId, planId) {
|
|
38
|
+
const zohoPayments = new ZohoPaymentsAPI(await getValidToken());
|
|
39
|
+
|
|
40
|
+
// Token represents card - no PAN stored
|
|
41
|
+
const subscription = await zohoPayments.createSubscription({
|
|
42
|
+
customer_id: customerId,
|
|
43
|
+
plan_id: planId,
|
|
44
|
+
payment_method: 'token_from_checkout' // Never raw card data
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return subscription;
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## What You MUST NOT Do
|
|
52
|
+
- Store PAN (Primary Account Number) anywhere
|
|
53
|
+
- Store CVV/CVC anywhere
|
|
54
|
+
- Log card numbers (even partially in non-compliant systems)
|
|
55
|
+
- Process payments server-side (use hosted pages)
|
|
56
|
+
- Build custom payment forms (use Zoho Checkout)
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
# SOC 2 Access Controls
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
SOC 2 Trust Service Criteria CC6.1-CC6.8 require logical and physical access controls that restrict access to information assets to authorized users only. In Zoho Creator, this means implementing role-based access at the form, field, and record level, combined with comprehensive access review processes.
|
|
6
|
+
|
|
7
|
+
> **WARNING**: SOC 2 auditors will request evidence of access reviews, role documentation, and access change logs. "We set it up correctly" is insufficient -- you must prove ongoing governance.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Role-Based Access in Zoho Creator
|
|
12
|
+
|
|
13
|
+
### Creator Permission Hierarchy
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Organization Level (Zoho One Admin)
|
|
17
|
+
|
|
|
18
|
+
+-- Application Level (App Owner, App Admin, App User)
|
|
19
|
+
| |
|
|
20
|
+
| +-- Form Level (Add, Edit, View, Delete per role)
|
|
21
|
+
| | |
|
|
22
|
+
| | +-- Field Level (Show/Hide per role)
|
|
23
|
+
| | |
|
|
24
|
+
| | +-- Record Level (Creator permissions + custom filters)
|
|
25
|
+
|
|
|
26
|
+
+-- Portal Level (External users with limited access)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Standard Role Template
|
|
30
|
+
|
|
31
|
+
| Role | Typical Access | Creator Mapping |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| System Admin | Full access, configuration | App Owner |
|
|
34
|
+
| Manager | All records, reports, approval | App Admin with custom permissions |
|
|
35
|
+
| Standard User | Own records + team records | App User with filtered views |
|
|
36
|
+
| Read-Only | View assigned records only | App User, view-only permissions |
|
|
37
|
+
| External (Portal) | Limited self-service | Portal user with form-level access |
|
|
38
|
+
| Service Account | API access only | API key with scoped permissions |
|
|
39
|
+
| Auditor | Read-only, all historical data | Custom role, time-limited |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Principle of Least Privilege Implementation
|
|
44
|
+
|
|
45
|
+
### Step 1: Document Required Access Per Role
|
|
46
|
+
|
|
47
|
+
Before configuring permissions, create an access requirements matrix:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
| Form Name | Admin | Manager | User | Read-Only | Portal |
|
|
51
|
+
|---|---|---|---|---|---|
|
|
52
|
+
| Client_Records | CRUD | CRUD | CR | R | - |
|
|
53
|
+
| Invoices | CRUD | CRUD | R | R | R(own) |
|
|
54
|
+
| Audit_Logs | R | - | - | - | - |
|
|
55
|
+
| System_Config | CRUD | R | - | - | - |
|
|
56
|
+
| User_Requests | CRUD | CRUD | CRU(own) | R(own) | C(own) |
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Legend: C=Create, R=Read, U=Update, D=Delete, (own)=own records only
|
|
60
|
+
|
|
61
|
+
### Step 2: Configure Form-Level Permissions
|
|
62
|
+
|
|
63
|
+
```deluge
|
|
64
|
+
// Document permission configuration in code comments
|
|
65
|
+
// Form: Client_Records
|
|
66
|
+
// Permissions configured via Creator UI → Form Properties → Permissions
|
|
67
|
+
//
|
|
68
|
+
// Admin: Add, Edit, View, Delete, Export, Share
|
|
69
|
+
// Manager: Add, Edit, View, Delete (no Export, no Share)
|
|
70
|
+
// User: Add, View (own records only via criteria)
|
|
71
|
+
// Read-Only: View (assigned records via lookup)
|
|
72
|
+
// Portal: No access
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Step 3: Implement Field-Level Restrictions
|
|
76
|
+
|
|
77
|
+
For sensitive fields within accessible forms:
|
|
78
|
+
|
|
79
|
+
| Field | Admin | Manager | User | Rationale |
|
|
80
|
+
|---|---|---|---|---|
|
|
81
|
+
| SSN | View/Edit | View (masked) | Hidden | PII - need to know only |
|
|
82
|
+
| Salary | View/Edit | View | Hidden | Confidential |
|
|
83
|
+
| Internal_Notes | View/Edit | View/Edit | Hidden | Internal only |
|
|
84
|
+
| Created_By | View | View | View | Audit field |
|
|
85
|
+
| Modified_Date | View | View | View | Audit field |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Quarterly Access Review Process
|
|
90
|
+
|
|
91
|
+
### Review Schedule
|
|
92
|
+
|
|
93
|
+
| Quarter | Review Type | Scope |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| Q1 (Jan) | Full access review | All users, all roles, all forms |
|
|
96
|
+
| Q2 (Apr) | Privileged access review | Admin and Manager roles only |
|
|
97
|
+
| Q3 (Jul) | Full access review | All users, all roles, all forms |
|
|
98
|
+
| Q4 (Oct) | Annual certification | Full review + management sign-off |
|
|
99
|
+
|
|
100
|
+
### Review Procedure
|
|
101
|
+
|
|
102
|
+
1. **Export current access list** from Zoho Creator Admin Panel
|
|
103
|
+
2. **Compare** against approved access matrix
|
|
104
|
+
3. **Identify** discrepancies:
|
|
105
|
+
- Users with access who should not have it
|
|
106
|
+
- Users missing access they should have
|
|
107
|
+
- Dormant accounts (no login in 90+ days)
|
|
108
|
+
- Role creep (accumulated permissions beyond need)
|
|
109
|
+
4. **Remediate** within 5 business days of identification
|
|
110
|
+
5. **Document** findings and actions in the Access Review Log
|
|
111
|
+
6. **Obtain** manager sign-off on review completion
|
|
112
|
+
|
|
113
|
+
### Access Review Form Template
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Form: Access_Review_Log
|
|
117
|
+
Fields:
|
|
118
|
+
- Review_ID (Auto-number)
|
|
119
|
+
- Review_Date (Date)
|
|
120
|
+
- Review_Quarter (Picklist: Q1/Q2/Q3/Q4)
|
|
121
|
+
- Reviewer (Lookup to Employees)
|
|
122
|
+
- User_Reviewed (Email)
|
|
123
|
+
- Current_Role (Single Line)
|
|
124
|
+
- Appropriate (Yes/No)
|
|
125
|
+
- Action_Required (Picklist: None/Modify/Revoke/Investigate)
|
|
126
|
+
- Action_Taken (Multi Line)
|
|
127
|
+
- Action_Date (Date)
|
|
128
|
+
- Approved_By (Lookup to Managers)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Access Request/Approval Workflow
|
|
134
|
+
|
|
135
|
+
### Request Process
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
User/Manager submits Access Request
|
|
139
|
+
|
|
|
140
|
+
v
|
|
141
|
+
Auto-assigned to IT Admin for initial review
|
|
142
|
+
|
|
|
143
|
+
v
|
|
144
|
+
IT Admin validates business justification
|
|
145
|
+
|
|
|
146
|
+
+-- Denied --> Notify requester with reason
|
|
147
|
+
|
|
|
148
|
+
+-- Approved --> Route to Data Owner for form-specific approval
|
|
149
|
+
|
|
|
150
|
+
v
|
|
151
|
+
Data Owner reviews
|
|
152
|
+
|
|
|
153
|
+
+-- Denied --> Notify requester
|
|
154
|
+
|
|
|
155
|
+
+-- Approved --> IT Admin provisions access
|
|
156
|
+
|
|
|
157
|
+
v
|
|
158
|
+
Confirmation to requester + audit log entry
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Access Request Form
|
|
162
|
+
|
|
163
|
+
```deluge
|
|
164
|
+
// On submission of Access_Request form
|
|
165
|
+
// Auto-route based on requested access level
|
|
166
|
+
|
|
167
|
+
if (input.Access_Level == "Admin" || input.Access_Level == "Manager") {
|
|
168
|
+
// Elevated access requires additional approval
|
|
169
|
+
input.Approval_Chain = "IT Admin → Data Owner → Security Officer";
|
|
170
|
+
input.SLA_Hours = 48;
|
|
171
|
+
} else {
|
|
172
|
+
input.Approval_Chain = "IT Admin → Data Owner";
|
|
173
|
+
input.SLA_Hours = 24;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Log the request
|
|
177
|
+
audit_entry = insert into HIPAA_Audit_Log [
|
|
178
|
+
Action_Type = "Access Request",
|
|
179
|
+
User_Email = zoho.loginuserid,
|
|
180
|
+
Form_Name = "Access_Request",
|
|
181
|
+
Record_ID = input.ID,
|
|
182
|
+
Justification = input.Business_Justification
|
|
183
|
+
];
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Privileged Access Monitoring
|
|
189
|
+
|
|
190
|
+
### What Constitutes Privileged Access
|
|
191
|
+
|
|
192
|
+
- Application Owner/Admin roles
|
|
193
|
+
- Direct database access (if applicable)
|
|
194
|
+
- API keys with write permissions
|
|
195
|
+
- Access to configuration/settings forms
|
|
196
|
+
- Access to audit log forms
|
|
197
|
+
- Ability to modify workflows/permissions
|
|
198
|
+
|
|
199
|
+
### Monitoring Requirements
|
|
200
|
+
|
|
201
|
+
| Activity | Monitoring Method | Alert Threshold |
|
|
202
|
+
|---|---|---|
|
|
203
|
+
| Admin login | Audit log review | Any login outside business hours |
|
|
204
|
+
| Permission changes | Workflow trigger on role modification | Any change |
|
|
205
|
+
| Bulk data export | Export event logging | Any export > 100 records |
|
|
206
|
+
| Schema changes | Form modification tracking | Any change to production forms |
|
|
207
|
+
| API key usage | API call logging | Unusual volume or new IP |
|
|
208
|
+
| User creation | New user event | Any new admin-level user |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Separation of Duties (Dev vs. Prod)
|
|
213
|
+
|
|
214
|
+
> **WARNING**: SOC 2 requires that developers cannot directly modify production systems without approval. Zoho Creator does NOT enforce this natively -- you must implement it procedurally.
|
|
215
|
+
|
|
216
|
+
### Environment Separation
|
|
217
|
+
|
|
218
|
+
| Environment | Purpose | Who Has Access | Restrictions |
|
|
219
|
+
|---|---|---|---|
|
|
220
|
+
| Development | Building/testing | Developers | No real data |
|
|
221
|
+
| Staging | UAT/validation | Developers + Testers | Synthetic data only |
|
|
222
|
+
| Production | Live operations | Operators + End Users | No direct dev access |
|
|
223
|
+
|
|
224
|
+
### Promotion Process
|
|
225
|
+
|
|
226
|
+
1. Developer completes work in Development org
|
|
227
|
+
2. Developer submits Change Request (see `soc2/change-management.md`)
|
|
228
|
+
3. Reviewer validates in Staging
|
|
229
|
+
4. Approver authorizes production deployment
|
|
230
|
+
5. **Different person** (not the developer) deploys to Production
|
|
231
|
+
6. Post-deployment verification by Operations
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Service Account Management
|
|
236
|
+
|
|
237
|
+
### Service Account Inventory
|
|
238
|
+
|
|
239
|
+
```json
|
|
240
|
+
{
|
|
241
|
+
"service_accounts": [
|
|
242
|
+
{
|
|
243
|
+
"name": "archival-service",
|
|
244
|
+
"purpose": "Monthly audit log archival to BigQuery",
|
|
245
|
+
"created_date": "2024-03-15",
|
|
246
|
+
"owner": "devops@cloudstreamsoftware.com",
|
|
247
|
+
"permissions": ["Creator API Read", "BigQuery Write"],
|
|
248
|
+
"key_rotation": "90 days",
|
|
249
|
+
"last_rotated": "2025-01-10",
|
|
250
|
+
"next_rotation": "2025-04-10"
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Service Account Rules
|
|
257
|
+
|
|
258
|
+
- Every service account must have a documented owner
|
|
259
|
+
- API keys rotated every 90 days minimum
|
|
260
|
+
- Permissions scoped to minimum required
|
|
261
|
+
- Usage monitored for anomalies
|
|
262
|
+
- Disabled immediately when no longer needed
|
|
263
|
+
- Never shared between environments (dev/staging/prod)
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## MFA Enforcement
|
|
268
|
+
|
|
269
|
+
### Requirements
|
|
270
|
+
|
|
271
|
+
- **All users**: MFA required for Zoho One login
|
|
272
|
+
- **Admin users**: Hardware key (FIDO2) preferred, TOTP acceptable
|
|
273
|
+
- **Portal users**: TOTP or SMS (SMS only if TOTP not feasible)
|
|
274
|
+
- **Service accounts**: IP restriction + API key (MFA not applicable)
|
|
275
|
+
|
|
276
|
+
### Configuration
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
Zoho One Admin → Security → Multi-Factor Authentication
|
|
280
|
+
→ Enable for all users
|
|
281
|
+
→ Set enforcement: "Mandatory"
|
|
282
|
+
→ Allowed methods: Authenticator App, Security Key
|
|
283
|
+
→ Grace period for setup: 7 days
|
|
284
|
+
→ Backup codes: Enabled (stored securely by IT)
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Access Revocation on Employee Departure
|
|
290
|
+
|
|
291
|
+
### Immediate Revocation Checklist (Within 4 Hours of Departure)
|
|
292
|
+
|
|
293
|
+
- [ ] Disable Zoho One account
|
|
294
|
+
- [ ] Revoke all API keys associated with the user
|
|
295
|
+
- [ ] Remove from all Creator applications
|
|
296
|
+
- [ ] Remove from all shared forms/reports
|
|
297
|
+
- [ ] Remove from all portal access
|
|
298
|
+
- [ ] Revoke GCP IAM permissions
|
|
299
|
+
- [ ] Rotate any shared credentials the user knew
|
|
300
|
+
- [ ] Remove from distribution lists/groups
|
|
301
|
+
- [ ] Document revocation in Access Review Log
|
|
302
|
+
- [ ] Verify revocation with login attempt test
|
|
303
|
+
|
|
304
|
+
### Offboarding Workflow
|
|
305
|
+
|
|
306
|
+
```deluge
|
|
307
|
+
// Triggered by HR when employee status changes to "Terminated"
|
|
308
|
+
// This initiates the access revocation workflow
|
|
309
|
+
|
|
310
|
+
if (input.Employment_Status == "Terminated") {
|
|
311
|
+
// Create revocation task
|
|
312
|
+
revocation_task = insert into Access_Revocation [
|
|
313
|
+
Employee_Email = input.Email,
|
|
314
|
+
Departure_Date = zoho.currentdate,
|
|
315
|
+
Urgency = "Immediate",
|
|
316
|
+
Assigned_To = "it-admin@cloudstreamsoftware.com",
|
|
317
|
+
SLA_Hours = 4,
|
|
318
|
+
Status = "Pending"
|
|
319
|
+
];
|
|
320
|
+
|
|
321
|
+
// Alert IT Admin
|
|
322
|
+
sendmail [
|
|
323
|
+
to: "it-admin@cloudstreamsoftware.com",
|
|
324
|
+
subject: "URGENT: Access Revocation Required - " + input.Full_Name,
|
|
325
|
+
message: "Employee departure. Revoke all access within 4 hours."
|
|
326
|
+
];
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Access Matrix Documentation Template
|
|
333
|
+
|
|
334
|
+
### Per-Client Access Matrix
|
|
335
|
+
|
|
336
|
+
Maintain this document for each client engagement and update with every access change:
|
|
337
|
+
|
|
338
|
+
| User | Role | Forms Accessible | Field Restrictions | Record Scope | Granted Date | Approved By | Last Reviewed |
|
|
339
|
+
|---|---|---|---|---|---|---|---|
|
|
340
|
+
| admin@client.com | Admin | All | None | All | 2024-03-01 | CEO | 2025-01-15 |
|
|
341
|
+
| user1@client.com | User | Orders, Products | No cost fields | Own department | 2024-06-15 | Dept Mgr | 2025-01-15 |
|
|
342
|
+
| portal@vendor.com | Portal | PO_Submissions | Limited fields | Own records | 2024-09-01 | Procurement Mgr | 2025-01-15 |
|
|
343
|
+
|
|
344
|
+
> **WARNING**: This matrix must be stored in the client's compliance folder and presented during SOC 2 audits. Missing or outdated access matrices are audit findings.
|