Zoho One puts dozens of business applications behind one Zoho Directory identity, so a single over-privileged admin, a loose security policy or a forgotten OAuth refresh token can reach CRM, finance and HR data at once. This guide explains how to secure the two layers most organisations care about first: Zoho Directory (the identity and policy layer for Zoho One) and Zoho CRM (profiles, roles, data sharing, Marketplace extensions and API access). Product facts come from Zoho's own help and developer documentation, checked on 8 November 2026; hardening stances, alerts and metrics are NHI Mgmt Group guidance. These are customer-side settings under the shared responsibility model. It is written for Zoho administrators, identity teams and security engineers who own a Zoho One or Zoho CRM tenant. For the wider SaaS programme around it, see the SaaS Security Guide.
This is an independent guide from NHI Mgmt Group, based on Zoho's public documentation as of November 2026. It is not sponsored or reviewed by Zoho. Product features change, so confirm settings against Zoho's current documentation.
Key takeaways
- Directory is the front door. Security policies in Zoho Directory combine password policy, MFA, allowed IPs and session management, and apply to every Zoho One app a user signs in to.
- Use the delegated admin roles. Zoho One separates Organization Owner, Organization Admin, Application Admin, Helpdesk Admin, Security Admin and Space Admin, so most people who administer something need far less than full admin.
- CRM access has two axes. Profiles decide what features and modules a user can use; roles in the hierarchy decide whose records they see. Data sharing rules and record sharing widen both.
- Refresh tokens are long-lived non-human credentials. Zoho documents a refresh token as valid until revoked, so every Self Client and integration needs an owner, narrow scopes and a revocation path.
- Two audit trails, one picture. The Directory audit log covers admin and account activity; the CRM audit log covers record, export and setup changes for three years, with login history kept separately.
How identity and access work in Zoho One and Zoho CRM
Zoho One users live in Zoho Directory. Directory holds users, groups, applications and security configuration, and its Admin Panel is where policies, admins and audit logs are managed. Inside each application, such as Zoho CRM, a second layer of application permissions decides what the signed-in user can do with data. Integrations and scripts reach the APIs through OAuth 2.0 clients registered in the Zoho developer console.
| Layer | What it controls | Where it is managed | What to get right |
|---|---|---|---|
| Security policy (Directory) | Password policy, MFA, allowed IPs, session management | Admin Panel > Security > Security Policies | Strong default policy for all users, stricter policy for admins |
| Conditional Access Policy (Directory) | IP-based restrictions and device-related conditions on app access (plan dependent) | Admin Panel > Security | Restrict admin and finance app access to managed networks or devices |
| Identity providers and custom authentication (Directory) | Sign-in through an external identity provider; SSO to connected apps | Security Admin settings | One authoritative identity provider, MFA enforced there or in Directory |
| Application assignment (Directory) | Which users can open which apps; automated provisioning for supported apps | Admin Panel > Applications | Assign by group, remove on leaver |
| CRM profile | Module and feature permissions | CRM Setup > Security Control > Profiles | Few custom profiles cloned from Standard, not Administrator |
| CRM role | Record visibility through the hierarchy | CRM Setup > Security Control > Roles | Hierarchy mirrors real reporting lines |
| OAuth client and tokens | API access by integrations and scripts | Zoho developer console; connected apps | Narrow scopes, owner per client, tokens in a vault |
Security policies and MFA
A Directory security policy has four components: password policy, MFA, allowed IPs and session management. To set MFA, go to Admin Panel > Security > Security Policies, select the policy, open Multi-factor Authentication, click Setup, choose the allowed modes and click Update Policy. Zoho documents these modes:
| MFA mode (Zoho label) | How it works | Suggested use |
|---|---|---|
| Yubikey | Hardware authenticator connected to the sign-in device | Required for Organization Owner, Organization Admin and Security Admin |
| Face ID/Touch ID | Biometric verification in Zoho OneAuth | Strong default for staff on managed phones |
| Push Notification | Approve a prompt in Zoho OneAuth | Acceptable for general users; train them to deny unexpected prompts |
| Time-based OTP and QR Code | Code or QR scan through Zoho OneAuth | General users, fallback |
| Google Authenticator (or similar authentication apps) | Third-party TOTP app | Fallback where OneAuth is not used |
| SMS | One-time password to a registered number | Remove from admin policies; keep only where no other mode is possible |
Once MFA is enabled for a user, Zoho requires them to set up a mode before they can sign in. Create a separate, stricter security policy for administrators and use Add User to Policy to place every admin in it; use Exclude User from Policy only for documented exceptions. See the Phishing-Resistant MFA Guide.
Single sign-on
Directory can act as the identity provider for connected applications, exchanging identity provider and service provider details per app, and it can also sign users in through an external identity provider using Custom Authentication. Decide which system is authoritative. If an external identity provider signs users in, enforce MFA and conditional access there and keep the Directory admin accounts on a Directory policy with hardware keys, so an outage or compromise of the external provider does not lock you out or hand over admin access. See the Identity Provider and SSO Security Guide.
Admin roles and privileged access
Zoho One documents a set of system roles plus custom roles and per-application service admins.
| Role | Documented scope | Hardening stance |
|---|---|---|
| Organization Owner | Full administrative access; the only role that can transfer ownership | Held by one named person, hardware key MFA, used rarely; ownership transfer documented |
| Organization Admin | Users, applications, other admins, domains, directory stores, subscriptions, organisation info | Two or three people at most; reviewed quarterly |
| Application Admin | Add applications, edit details, assign and unassign users | Give to app owners instead of Organization Admin |
| Helpdesk Admin | User information, MFA and password resets | Pair with a caller verification procedure; log every MFA reset |
| Security Admin | Conditional Access Policies, Routing Policies, Identity Providers, Security Policies | Separate from Helpdesk Admin; changes alerted |
| Space Admin | User assignment and app roles within one space | Use for business units instead of org-wide roles |
| Custom role | Selected permissions only | Prefer over system roles for narrow tasks such as HR user updates |
| CRM Administrator profile | All features in the Zoho CRM account | Only CRM system administrators; everyone else on custom profiles |
- MFA resets are privileged: Disable MFA and Reset MFA require the Organization Owner or Organization Admin role and password verification. A reset forces the user to enrol again at next sign-in, which is exactly what a social engineer wants, so require a verified ticket before any reset. See the Vishing and Help Desk Social Engineering Awareness Guide.
- Keep admin identities separate: give admins a dedicated administrative account where practical, so daily email and browsing do not run with admin rights.
- Break-glass: keep one documented emergency admin path that does not depend on the external identity provider, protected by a hardware key and tested twice a year. See the Break-Glass Account Guide.
CRM profiles, roles and sharing
Zoho CRM ships default Administrator (all features) and Standard (limited features) profiles, plus a Team User Profile when team users exist; only the org module permissions of default profiles can be changed. Create custom profiles under Setup > Security Control > Profiles > New Profile by cloning an existing profile; this needs the Manage Profiles permission. Clone from Standard and add what the job needs, rather than cloning Administrator and removing rights.
- Profiles: set module and feature permissions per job family. Pay particular attention to export, mass update, mass delete and data administration features, which turn a single account into a bulk data channel.
- Roles: build the hierarchy to match reporting lines. Users see their own records and those of subordinates, so a role placed too high quietly grants wide visibility.
- Data sharing rules and record sharing: these extend access to peers, management and subordinates. List every rule, give it a business reason and remove rules nobody can explain.
- Territories: segment accounts by region, product or industry where ownership alone is not enough.
- Allowed IPs: restrict CRM sign-in to known networks for administrator and finance profiles where your workforce model allows it.
See the Least Privilege Techniques Guide.
Integrations, API tokens and service accounts
OAuth clients and the Self Client
Zoho APIs use OAuth 2.0. Zoho documents that an access token is valid for one hour (expires_in 3600) and that a refresh token has an unlimited lifetime until it is revoked. The web-based grant token is valid for two minutes. A Self Client, created in the developer console by choosing the Self Client type and clicking Create Now, suits back-end jobs with no redirect URL: the developer generates a short-lived code for chosen scopes and exchanges it for tokens. Tokens are refreshed with a POST to {Accounts_URL}/oauth/v2/token on the data centre's accounts domain, such as accounts.zoho.com, accounts.zoho.eu or accounts.zoho.in, and Zoho documents that a refresh token generated for one organisation or environment cannot be used for another, for example production versus sandbox.
| Credential | Documented lifetime | Risk if mishandled | Control |
|---|---|---|---|
| Grant token (web flow) | Two minutes | Low; short-lived | Exchange immediately; never log it |
| Access token | One hour | Data access within scope for the hour | Keep out of client-side code and logs |
| Refresh token | Until revoked | Standing API access with the granting user's rights and scopes | Store in a secrets manager; owner per token; revoke on leaver or role change |
| Client ID and client secret | Until regenerated | Lets a holder of a refresh token mint access tokens | Secrets manager; rotate when people with access leave |
- Scope narrowly: scopes follow
service.scope.operation.ZohoCRM.modules.ALLgrants every module;ZohoCRM.modules.leads.READgrants read on one module. Zoho's documentation notes that separate, narrower scopes improve security. - Who grants matters: API calls run with the rights of the user who authorised the client. Authorise integrations from a dedicated integration user on a custom profile, not from a personal administrator account, so the token's reach is bounded and does not vanish or widen when a person changes role.
- Revocation path: Zoho documents that users can revoke delegated access at any time. Record how each integration is revoked and test it, so a leaked token can be killed in minutes.
- Keep tokens out of code: Zoho states that access tokens must not appear in public repositories, forums or client-side code. Scan repositories for Zoho tokens and client secrets.
See the OAuth Refresh Token Rotation Guide and the Service Account Security Guide.
Marketplace extensions
Extensions add code and connections inside CRM. They are installed from Setup > Marketplace > All, and the install dialog offers Install for admin only, Install for all users or Choose profiles, followed by an authorisation step for any connected third-party service. Public extensions go through a Zoho review before listing; private extensions are shared by URL. Treat every extension as a third-party integration:
- Require a request and an owner before install, with the data the extension will read or write written down.
- Install to selected profiles, not all users, unless every user genuinely needs it.
- Prefer public, reviewed extensions; treat privately shared extension URLs with extra scrutiny.
- Review installed extensions quarterly and uninstall unused ones. Zoho documents that uninstalling can delete the extension's related data, so export anything you need first.
See the Consent Phishing and Illicit OAuth Grants Guide.
Logging and detection
Zoho Directory's audit log is at Admin Panel > Audit > Audit Logs, visible to Organization Owners and Organization Admins, and groups activity by type with the affected user and timestamp. The Directory getting-started guidance also points admins to authentication activity, security events and anomaly detection. The Zoho CRM audit log, at Setup > Security Control > Audit Log, records record additions, updates and deletions, imports, exports, lead conversions, restores, mass actions and setup changes such as workflow rules, webhooks, roles, profiles, users and webforms. Zoho keeps CRM audit entries for three years and then deletes them; Export Audit Log produces a CSV. CRM sign-ins are in Setup > Security Control > Login History, not the audit log. Administrators and users with the CEO role see all users' entries; others see their own and their subordinates'.
| Signal | Source | Why it matters | Suggested response |
|---|---|---|---|
| New admin or role change | Directory audit log | Privilege escalation, persistence (ATT&CK T1098) | Alert on every change; confirm with a change ticket |
| Security policy, conditional access or identity provider change | Directory audit log | Loosened sign-in controls | Alert Security Admin owners; reverse if unplanned |
| MFA disabled or reset | Directory audit log | Common step in account takeover | Confirm with the user out of band within the hour |
| Large or unusual export | CRM audit log | Bulk collection of customer data (T1213) | Review who exported what and why |
| Webhook or workflow rule created | CRM audit log | Silent data forwarding to an external URL | Check destination against approved list |
| Sign-in from new country or unknown IP | CRM Login History; Directory authentication activity | Use of stolen credentials (T1078.004) | Verify with user; revoke sessions and tokens |
Because CRM entries age out after three years, export both Directory and CRM logs on a schedule to your SIEM or archive and keep them for the period your policy requires. See the SaaS Audit Log Retention and Licensing Guide and the SIEM Guide.
Metrics: percentage of admins on hardware key MFA (target 100); number of Organization Admins (target three or fewer); OAuth clients with a named owner (target 100 percent); extensions installed for all users versus selected profiles; days since last audit log export; MFA resets without a matching ticket (target zero).
Hardening baseline
Roll out in this order, testing each step on a pilot group before the whole organisation, and keep the previous policy settings recorded so you can roll back.
- Inventory: export users, admins (all roles and service admins), groups, applications, CRM profiles, roles, sharing rules, extensions and OAuth clients.
- Admin policy first: create an admin security policy with Yubikey or OneAuth biometric MFA only, short sessions and allowed IPs, and add every admin to it. Pilot with two admins, then the rest.
- Organisation policy: enable MFA for all users with SMS removed where possible, set password requirements and session controls. Announce, pilot one department, then enforce.
- Conditional access: restrict high-value apps by IP or device conditions where your plan includes Conditional Access Policy.
- Delegate: move people from Organization Admin to Application, Helpdesk, Security or Space Admin or a custom role.
- CRM: rebuild profiles from Standard, review export and mass-action rights, align the role hierarchy, prune sharing rules.
- Integrations: re-authorise integrations from dedicated integration users with narrow scopes, move tokens into a secrets manager, revoke the old ones.
- Logging: schedule exports of both audit logs and CRM login history, and build the alerts above.
Common misconfigurations
- Everyone who administers anything is an Organization Admin: use the delegated system roles and custom roles instead.
- One security policy for all: admins share the general policy, SMS included. Put admins in their own stricter policy.
- Integrations authorised by a personal admin account: the refresh token carries full admin reach and breaks or persists unpredictably when that person changes role. Use a dedicated integration user.
- Broad scopes:
ZohoCRM.modules.ALLrequested by default when the integration reads one module. Request module and operation scopes. - Extensions installed for all users: choose profiles, record an owner and review quarterly.
- Audit logs never exported: CRM entries are deleted after three years and are often needed for investigations and audits. Export on a schedule.
Framework mapping
| Control area | NIST SP 800-53 Rev 5 | NIST CSF 2.0 | CIS Controls v8.1 |
|---|---|---|---|
| Admin roles, profiles, sharing rules | AC-2, AC-6 | PR.AA-05 | 5.4, 6.8 |
| MFA and security policies | IA-2 | PR.AA-01 | 6.3, 6.5 |
| OAuth clients and refresh tokens | IA-5 | PR.AA-01 | 6.8 |
| Audit logs and retention | AU-2, AU-6, AU-11 | DE.CM-03 | 8.2 |
| Extensions and least functionality | CM-7 | PR.AA-05 | 2.5 |
Practitioner checklist
- Keep one Organization Owner and three or fewer Organization Admins, all on hardware key MFA.
- Create a dedicated admin security policy with strong MFA modes, short sessions and allowed IPs.
- Enforce MFA for all users and remove SMS wherever another mode works.
- Delegate through Application, Helpdesk, Security and Space Admin or custom roles.
- Require a verified ticket before any MFA reset and alert on every reset.
- Build CRM custom profiles from Standard and restrict export and mass actions.
- Authorise every integration from a dedicated integration user with module-level scopes, and store refresh tokens and client secrets in a secrets manager.
- Install Marketplace extensions to selected profiles with a named owner; review quarterly.
- Export Directory and CRM audit logs and CRM login history to your SIEM on a schedule.
- Test the break-glass admin path and an OAuth token revocation twice a year.
Standards and references
- Zoho: Admins and Roles Overview, Zoho One Admin Guide
- Zoho: Security Policies, Configure MFA, Zoho Directory Admin Guide
- Zoho: View Audit Logs, Zoho Directory
- Zoho: CRM API OAuth 2.0 Overview
- Zoho: CRM API Scopes
- Zoho: FAQs on Audit Logs, Zoho CRM
- Zoho: Managing Profiles, Zoho CRM
- NIST: SP 800-53 Rev. 5 Security and Privacy Controls
Related NHI Mgmt Group resources: SaaS Security Guide · Identity Provider and SSO Security Guide · OAuth Scope Design Guide · Service Account Security Guide