vicigeeksimple guides
Browse
All guides

Running your system · Media security design

Secure VICIdial recordings with authenticated storage, encryption, and retention

Protect recordings as sensitive media: authenticate every access path, encrypt in transit and at rest, minimize metadata, and make deletion follow a reviewed retention workflow.

Reader setup

Before you evaluate

Use this to set expectations, limits and implementation boundaries before changing anything.

  1. Named data and retention owners
  2. Approved media access policy
  3. Inventory of copies and playback paths
What you will prove
A testable design for protected recording access and lifecycle control.
Safety boundary
Do not delete data or rely on opaque URLs without a reviewed retention and authorization process.

Reader path

How to use this article

  • Use it when: You are designing a change and want reliable limits before implementation.
  • Expected result: Separate what is known, unknown, and unsafe before you execute.
  • Start here: Use it as an evidence review before changing architecture, security, or reporting behavior.

Fast answer and untested boundaries

Fast answer: keep VICIdial recording media behind an authenticated, audited service or protected object store; encrypt transit and storage, issue least-privilege (only the access needed for the job), and delete only through a retention workflow that accounts for metadata, replicas, and legal holds.

Prerequisites are a named data owner, retention owner, incident owner, approved retention policy, and an inventory of playback, export, backup, and archive paths. This August 4, 2026 design analysis does not claim a legacy exact-file URL, lab mapping, cloud vendor, key-management system, backup, legal policy, or existing deployment is penetration-tested or compliant; those are non-goals.

Terms are defined in vicidial-terminology-for-complete-beginners.

  • Prerequisite: classify recordings and metadata as sensitive.
  • Prerequisite: name a data owner, retention owner, and incident owner.
  • Non-goal: do not treat opaque URLs or encryption alone as authorization.
  • Inventory every playback, export, backup, and archive path.
Trace path · read left to right
01Recording lifecycle02Authenticated media service03Retention + deletion proof

Visual walkthrough

Follow three real demo screens

Captured on an isolated VICIdial demo: Administration screens on September 24, 2026, and the idle Agent screen on August 11, 2026. Each caption states its own capture time, and every sanitized image helps you recognize a related screen; none proves that this article's call, command, or result occurred.
Step 1 · Find system administration

Use the Administration map

Sanitized VICIdial Administration menu showing phones, carriers, servers, system settings, and system statuses
Captured September 24, 2026 at 21:34:11 UTC on the authorized isolated demo. This menu is a navigation map only; it does not show that any system-wide setting was changed or verified.
Step 2 · Check permission scope

Review user-group boundaries

Sanitized VICIdial User Groups Listings page showing the fixture user group
Captured September 24, 2026 at 21:53:04 UTC on the authorized isolated demo. This page shows group structure only; it does not prove that an account has a particular permission or that access was changed.
Step 3 · Read global settings

Inspect system-wide security and API context

Sanitized VICIdial Modify System Settings page showing revision, schema, interface, SIP-stack, and API-related controls
Captured August 11, 2026 at 16:22:08 UTC on the authorized isolated demo. This is a read-only view of system-wide settings with no credentials or addresses; it does not prove that a setting was changed or that an API request succeeded.

Authenticate the media path

Opaque filenames or blocked directory listings are not authorization. Put playback and download behind application authentication that checks the caller's role, campaign/resource scope, purpose, and time-bound entitlement; log access events without logging the media URL or customer identifiers.

Separate Agent, supervisor, QA, export worker, backup, and administrator permissions. A service account should retrieve only the objects and metadata required for its job, and an SFTP delivery worker should not inherit interactive playback or broad storage credentials.

Access decision inputs
principal: authenticated service or userresource: recording metadata + storage objectpolicy: role, campaign scope, purpose, expirationaudit: opaque event ID, decision, timestamp
Not executed · worksheet or reference text

This sample is a template or reading aid, not a terminal command. There is no output to show.

Before you run it
Use this as a design-review worksheet; each label is a category, never a real user, recording, URL, or storage-object value.
Success looks like
Success means every requested access can be tied to a scoped principal, policy decision, and sanitized audit event.
Stop if
Stop rollout if any access path cannot enforce or audit the stated scope.

Encrypt in transit and at rest

Use TLS for browser/service access and SSH transport for SFTP; verify server identity rather than accepting arbitrary certificates or host keys. At rest, use storage encryption with keys separated from routine application access, documented rotation, and recovery procedures tested without exposing media.

Encryption does not remove the need for authorization: a decrypted object delivered to an over-privileged account remains exposed. Protect database credentials, object credentials, and key references in a secret system; never place them in scripts, query strings, process arguments, tickets, JSONL, or source control.

  • Require approved TLS/SSH identity verification.
  • Limit key use by workload and environment.
  • Test key-rotation recovery on synthetic media only.

Make retention a lifecycle, not a cron guess

Define when recordings become eligible for archival and deletion, how legal holds override that schedule, and how call metadata, derived formats, exports, caches, backups, and replicas are handled. A database row disappearing does not prove its associated media and replicas were deleted.

Use a two-person or reviewed workflow for destructive retention actions, with an inventory, scoped dry run, and post-action reconciliation. Preserve a minimal deletion/audit proof according to policy, but do not retain filenames, caller data, or recordings merely to make the audit convenient.

  • Test retention with synthetic recording objects.
  • Reconcile primary storage and approved replicas.
  • Stop deletion if the scope cannot be proven.

Failure modes, rollback, and independent verification

Failure modes include unauthenticated exact-file access, overbroad bucket/share permissions, broken key rotation, orphaned derivatives, retention jobs that exceed scope, and backups that outlive policy. Stop affected access or deletion jobs narrowly and preserve evidence for incident response; do not make storage public to restore playback quickly.

Independently test an allowed and denied user, scoped export worker, expired entitlement, encrypted transport, restore of synthetic media, and retention reconciliation. Evidence state remains architecture guidance until each deployed storage, identity, backup, and legal-control path is authorized and tested.

Review recording controls with synthetic data

Use this worksheet in a security review, populated only with control outcomes for a synthetic object. The labels identify policy checks; they are not places to paste storage paths, accounts, encryption keys, recordings, or caller information.

All checks passing supports a design review, not a compliance certification. A failed authorization, transport, retention, or restore check means stop that path and remediate it before enabling real recordings.

Recording-control worksheet
access: allowed and denied synthetic checkstransport: approved identity verifiedretention: scope and legal-hold checkrestore: synthetic object reconciliationaudit: sanitized decision only
Not executed · worksheet or reference text

This sample is a template or reading aid, not a terminal command. There is no output to show.

Before you run it
Copy into a reviewed synthetic-media test record; the labels are control categories, not secret or recording placeholders.
Success looks like
Success means each control has a scoped, independently observed synthetic result.
Stop if
Stop real-media rollout if any authorization, identity, retention, or restore control cannot be proven.

Evidence ledger

Verification basis

  • VICIdial ships recording/media lifecycle functions; their presence in a build is not proof they are configured or used safely here.
  • Local SFTP guidance explicitly distinguishes exact-file reachability from authenticated recording authorization.

Primary references

Sources

  1. OpenSSH sftp manualOpenBSD · accessed August 4, 2026
  2. OpenSSH client configurationOpenBSD · accessed August 4, 2026
  3. VICIdial product overviewVICIdial Group · accessed August 4, 2026

Follow without guesswork

Get the next article

RSS is live now. Email delivery below is an explicit local preview and sends nothing.Open the RSS feed
Email preview only. The address stays in this browser and is never transmitted.