1. Purpose
To ensure that access to production infrastructure and customer data is strictly controlled, time-bound, auditable, and granted only on a need-to-know basis.
2. Scope
Applies to all Cortena team members, contractors, and any third party requiring access to production systems, including:
- Kubernetes cluster (Rancher)
- Databases (MongoDB)
- Object storage (MinIO / S3)
- Monitoring and alerting systems (Grafana, Sentry)
- CI/CD runners and secrets
- Internal APIs and services
3. Core principles
| Principle | Description |
|---|---|
| Least privilege | Access is limited to the minimum required for the task |
| Just-in-time access | No standing permissions · access is granted per request |
| Dual approval | Every request requires sign-off from CTO or CEO |
| Time-bound | All access expires automatically (default: 30 days) |
| Fully auditable | Every request, approval, and revocation is logged in version control |
No direct access to production systems is permitted without completing this process.
4. Access request process
4.1 Submit request
Any team member requiring production access must:
- Create a Merge Request (MR) in the
infrastructureoropsrepository - Include in the MR description: name and role, asset(s) required, business justification, requested duration (maximum 30 days), and scope of access (for example read-only, specific collections)
4.2 Approval
- The MR must be approved by the CTO or CEO before any access is granted
- No access is provisioned without explicit written approval
- Approval is recorded in Git, creating a fully auditable trail
4.3 Provisioning
Upon approval, access is provisioned automatically via Ansible:
- User is added to OpenVPN (secure internal network access)
- RBAC role is granted in Kubernetes with the defined scope
- Expiry date is set in the access registry
Access provisioning is always automated and version-controlled, never manual.
4.4 Monitoring
- Active sessions are monitored via Grafana and OpenVPN logs
- Any anomalous activity triggers an internal review
4.5 Expiry and extension
- All access expires automatically after the approved duration
- Extensions require a new MR and re-approval. No silent renewals.
- Active access lists are reviewed quarterly by the CTO to ensure no stale permissions remain
4.6 Revocation
- Access can be revoked immediately via Ansible if a security risk is identified
- Revocation removes the user from all systems in a single automated operation
- The full audit trail is preserved in Git
5. Example access request
Access Request: Investigate Failed Sync Job
- Name: [Engineer Name], [Role]
- Asset: MongoDB (production), Grafana
- Reason: Investigate failed sync job reported in Sentry (ticket #123)
- Duration: 7 days
- Scope: Read-only access to MongoDB collections · users and jobs
Approval requested from CTO and CEO
6. Roles and responsibilities
| Role | Responsibility |
|---|---|
| CTO | Leads access control policy, approves requests, oversees infrastructure security |
| CEO | Co-approver for access requests, owns compliance implications |
| Engineering | Submits requests via MR, follows provisioning process, reports anomalies |
7. Contact
- Security / access control: compliance@cortena.ai
- DPO / Privacy (GDPR): dpo@cortena.ai