Compliance: controls and the frameworks that switch them on
Compliance as controls, and the frameworks (ENS, ISO/IEC 27001, NIS2, CIS, SOC 2, GDPR) that switch them on, the clause each control serves and what stays organisational.
Noust does not ship a "compliant" mode. It ships controls, each one a technical thing a server can require, and frameworks, which are presets that turn on the controls that help with a standard and say which clause each serves. Nothing is on unless you choose it.
What a framework is, and is not
A framework turns on the technical controls that help with a standard: sessions that end, backups that are encrypted, a second person for a root-equivalent change. That is a part of what the standard asks, and never all of it. Every standard here also asks for things no setting can do - a risk analysis, a policy somebody approves, people who are trained, suppliers who are managed, an audit by somebody else. Each framework below lists what stays organisational, and what is technical but not enforced by Noust. Neither Noust nor this page says that a server, or an organisation, is compliant: only your auditor can.
A control appears in a framework only where Noust can name the clause it serves. Where a framework leaves a number to the organisation (how long a session may idle), the value is Noust's reading of a reasonable limit and the row says so; where the framework fixes the number (CIS 4.3's fifteen minutes) the row says that instead.
How they combine
- Controls are the unit. Each has its own setting. By default every one is as permissive as Noust has always been.
- Frameworks are presets over the controls. Enabling one turns on what it names.
- More than one at once. ENS together with ISO/IEC 27001 is common in Spain. The value of each control is the strictest any enabled framework asks.
- You may tighten, never loosen. A control's own setting counts on top of the frameworks: set it stricter and it is stricter; set it looser than an enabled framework asks and the framework's value applies. Disable the framework first to loosen it.
security.profile: ens-medium(and any spelling of it, failing strict as it always did) keeps working and means ENS MEDIA is enabled.
noust compliance status what is on, and what forces what
noust compliance frameworks the frameworks and what each turns on
noust compliance show iso-27001 one framework's clauses, in full
noust compliance enable ens-media iso-27001 turn frameworks on (shows what changes first)
noust compliance disable iso-27001 turn one off (sudo mode in the console, audited)
noust compliance controls every control, its value and who forces it
noust compliance set change_reasons on a control's own setting
noust compliance check [--framework X] per framework, clause by clauseThe console has the same under Settings > Compliance. Disabling a framework, or loosening a control, asks for sudo mode and is recorded in the audit trail; turning one on does not.
The controls
Access and accounts
| Control | What it does | Default | Setting | Stricter |
|---|---|---|---|---|
roles_split |
No role holds both governing the server (accounts, security settings, the audit trail) and running it. Nothing is cut from a role for it: the roles are judged as they are defined, and the one that joins them is reported until the operator splits it. | off | security.roles_split |
on is stricter |
separation_of_duties |
One person cannot hold the account that runs the server and the one that governs it, and an auditor holds nothing else, unless a documented exception is recorded. | off | security.separation_of_duties |
on is stricter |
single_role_per_account |
An account has one function: it may hold several roles as long as together they do not join governing the server with running it, and a person with two duties holds two accounts. | off | security.single_role_per_account |
on is stricter |
sso_no_admin |
An identity provider never hands out the admin role, by default or by group: a person grants it. | off | security.sso_no_admin |
on is stricter |
second_factor |
Every account enrols an authenticator or a passkey before it can do anything else. Where nothing asks for it, an account may set it up later, until the console is published on a public name. | off | security.second_factor |
on is stricter |
approvals |
Root-equivalent actions, servers and role changes wait for a second person to approve them. | off | approval.enabled |
on is stricter |
restricted_tokens |
An API token belongs to an account, cannot act in sudo mode and never holds root-equivalent, account or security permissions. | off | security.restricted_tokens |
on is stricter |
token_max_days |
The longest life of an API token, in days; an expiry becomes mandatory. | no limit | auth.tokens.max_days (its default is not a choice: noust compliance set token_max_days records one in auth.tokens.enforce_max_days, and it then limits without a framework) |
a smaller number is stricter |
master_token |
What the master token may do once accounts exist: the console as break-glass, or only get a person back in. | break_glass | security.master_token |
last choice is stricter |
sudo_password |
Confirming sudo mode asks for the account's password as well as a second factor. | off | auth.sudo.require_password |
on is stricter |
sudo_idle_minutes |
How long sudo mode stays open without an elevated action in it. | 15 minutes | auth.sudo.idle_minutes |
a smaller number is stricter |
sudo_max_minutes |
The longest sudo mode lasts from its confirmation, however busy the session. | 120 minutes | auth.sudo.max_minutes |
a smaller number is stricter |
session_idle_minutes |
A console session unused this long is over. | 30 minutes | auth.session.idle_minutes |
a smaller number is stricter |
session_absolute_hours |
A session ends this long after sign-in, however active it is. | 12 hours | auth.session.absolute_hours |
a smaller number is stricter |
lockout_threshold |
Consecutive refused sign-ins that lock an account. | 5 attempts | auth.lockout.threshold |
a smaller number is stricter |
lockout_minutes |
How long that lock lasts at least. | 15 minutes | auth.lockout.minutes |
a larger number is stricter |
password_min_length |
Shortest password accepted. | 12 characters | auth.password.min_length |
a larger number is stricter |
access_review_days |
How often accounts and roles must be reviewed; noust ens access-review records it. |
no limit | security.access_review_days (judged by noust compliance check, nothing refuses) |
a smaller number is stricter |
stale_account_days |
An account unused this long is reported as stale. | no limit | security.stale_account_days (judged by noust compliance check, nothing refuses) |
a smaller number is stricter |
Accountability and the audit trail
| Control | What it does | Default | Setting | Stricter |
|---|---|---|---|---|
change_reasons |
Every change from the command line, and every approval request, says why. | off | security.change_reasons |
on is stricter |
exception_reasons |
A decision that lowers protection - building as root, accepting a risk, a privileged container, an incident freeze - says why. | off | security.exception_reasons |
on is stricter |
audit_retention_days |
The least number of days audit events are kept. | 90 days | audit.retention_days |
a larger number is stricter |
audit_fail_closed |
A change is refused while the audit trail cannot be written. | off | audit.on_failure |
on is stricter |
external_audit_sink |
The audit trail is sent to a destination off the machine (syslog, or journald forwarded). | off | security.external_audit_sink (judged by noust compliance check, nothing refuses) |
on is stricter |
audit_review_days |
How often the audit log must be reviewed; noust audit review records it. |
no limit | security.audit_review_days (judged by noust compliance check, nothing refuses) |
a smaller number is stricter |
log_shipping_tls |
Logs leave the server only over TLS. | off | security.log_shipping_tls |
on is stricter |
Backups
| Control | What it does | Default | Setting | Stricter |
|---|---|---|---|---|
backup_encryption |
Backups leave the server only encrypted. | optional | backup.encryption |
last choice is stricter |
backup_verify_days |
How often a backup is proved restorable; 0 turns it off where no framework asks. | 7 days | backup.verify_days |
a smaller number is stricter |
backup_max_age_hours |
The newest backup of an application must be younger than this. | 26 hours | security.backup_max_age_hours (judged by noust compliance check, nothing refuses) |
a smaller number is stricter |
backup_offsite |
At least one backup is kept apart, in a different place from the server. | off | security.backup_offsite (judged by noust compliance check, nothing refuses) |
on is stricter |
Network and host
| Control | What it does | Default | Setting | Stricter |
|---|---|---|---|---|
tls_certificate |
The console serves a certificate of the organisation's PKI, not a self-signed one. | any | security.tls_certificate (judged by noust compliance check, nothing refuses) |
last choice is stricter |
certificate_min_days |
A certificate expiring sooner than this many days is a finding. | 30 days | security.certificate_min_days (judged by noust compliance check, nothing refuses) |
a larger number is stricter |
explicit_allowlist |
A console reachable beyond loopback names who may connect. | off | security.explicit_allowlist (judged by noust compliance check, nothing refuses) |
on is stricter |
console_exposure |
Whether noust console expose may publish the console on a public name. |
allowed | security.console_exposure |
last choice is stricter |
database_remote_listen |
Whether a database engine may listen beyond loopback. | allowed | security.database_remote_listen |
last choice is stricter |
server_terminal |
Whether Noust may open a root shell on the server in the browser. | allowed | security.server_terminal |
last choice is stricter |
terminal_idle_minutes |
A console terminal with nothing typed this long is ended. | 120 minutes | terminal.idle_minutes |
a smaller number is stricter |
terminal_max_minutes |
The longest a console terminal lasts in all. | 720 minutes | terminal.max_minutes |
a smaller number is stricter |
mounts_read_only |
A server path bound into an application is read-only. | off | security.mounts_read_only |
on is stricter |
db_write_root_equivalent |
Writing SQL from the console needs the root-equivalent permission. | off | security.db_write_root_equivalent |
on is stricter |
The frameworks
ENS BÁSICA
Spain's National Security Scheme, category BÁSICA: the measures of Annex II that apply to the lowest category.
Reference: Real Decreto 311/2022, Annex II.
Enable it with noust compliance enable ens-basica. It asks of 16 control(s); 12 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
single_role_per_account |
on | op.acc.1.2: A separate identifier for each profile of the same person | |
restricted_tokens |
on | op.acc.1.3: A unique identifier for every entity that accesses the system op.acc.4.2: Least privilege |
|
token_max_days |
90 days | op.acc.6.4: Credentials are changed periodically | The period is the organisation's; 90 days is Noust's. |
master_token |
recovery | op.acc.6.r8.1: Two factors from or through uncontrolled zones | |
lockout_threshold |
5 attempts | op.acc.6.8: Authentication attempts are limited, then the account locks | the default already; the floor cannot be lowered |
lockout_minutes |
15 minutes | op.acc.6.8: Authentication attempts are limited, then the account locks | the default already; the floor cannot be lowered |
password_min_length |
12 characters | op.acc.6.r1.2: Minimum password complexity and robustness | the default already; the floor cannot be lowered The same as the default; the floor cannot be lowered. |
access_review_days |
90 days | op.acc.4.4: Access rights are reviewed periodically | |
stale_account_days |
90 days | op.acc.1.4: Accounts are disabled when no longer needed | |
external_audit_sink |
on | op.mon.3.1: An automatic collection of security events | |
log_shipping_tls |
on | mp.com.2.1: Encrypted channels outside the security domain | |
backup_max_age_hours |
26 hours | mp.info.6.1: Backups allow recovering lost data | the default already; the floor cannot be lowered |
explicit_allowlist |
on | op.acc.4.5: A specific remote-access policy with express authorisation mp.com.1.1: A perimeter protection separates the internal network from outside |
|
console_exposure |
refused | mp.com.1.1: A perimeter protection separates the internal network from outside op.acc.4.5: A specific remote-access policy with express authorisation |
|
database_remote_listen |
refused | mp.com.1.1: A perimeter protection separates the internal network from outside | |
mounts_read_only |
on | op.acc.2.3: Access to operating-system components and configuration is controlled |
What stays organisational (no setting does it for you):
- The security policy and its approval (org.1, org.2), the security roles and the committee (org.3, org.4).
- The risk analysis and the categorisation of the system (op.pl.1, Annex I), and the declaration of applicability.
- People: duties, awareness and training (mp.per).
- Physical security of the premises and the equipment (mp.if), and the workstation (mp.eq).
- Service continuity: impact analysis, plan, tests, alternative means (op.cont).
- Suppliers and external services (op.ext) and certified components (op.pl.5).
- Incident management and notification to the CCN-CERT (op.exp.7, op.exp.9), and the periodic security audit (art. 31).
ENS MEDIA
Spain's National Security Scheme, category MEDIA: what Noust has called the ens-medium profile since 3.1.
Reference: Real Decreto 311/2022, Annex II.
Enable it with noust compliance enable ens-media. It asks of 39 control(s); 34 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
roles_split |
on | op.acc.3.1: Development and operation do not fall on the same person op.acc.3.2: Whoever authorises and whoever controls the use are different people |
|
separation_of_duties |
on | op.acc.3.1: Development and operation do not fall on the same person op.acc.3.2: Whoever authorises and whoever controls the use are different people |
|
single_role_per_account |
on | op.acc.1.2: A separate identifier for each profile of the same person | |
sso_no_admin |
on | op.acc.3.2: Whoever authorises and whoever controls the use are different people | |
second_factor |
on | op.acc.6.r8.1: Two factors from or through uncontrolled zones | Every account has held one since 3.1 under this category; the control keeps it. |
approvals |
on | op.acc.3.2: Whoever authorises and whoever controls the use are different people op.exp.5.4: Relevant changes are approved beforehand |
|
restricted_tokens |
on | op.acc.1.3: A unique identifier for every entity that accesses the system op.acc.4.2: Least privilege |
|
token_max_days |
90 days | op.acc.6.4: Credentials are changed periodically | The period is the organisation's; 90 days is Noust's. |
master_token |
recovery | op.acc.6.r8.1: Two factors from or through uncontrolled zones | |
sudo_password |
on | op.acc.6.r6.1: Points where authentication is renewed, not just the session | The measure asks for renewal points from category ALTA; MEDIA keeps what 3.1 decided. |
sudo_idle_minutes |
10 minutes | op.acc.6.r6.1: Points where authentication is renewed, not just the session | The number is Noust's. |
sudo_max_minutes |
30 minutes | op.acc.6.r6.1: Points where authentication is renewed, not just the session | The number is Noust's. |
session_idle_minutes |
15 minutes | mp.eq.2.1: Locks after a prudent time of inactivity | 'Prudent time' is the organisation's; 15 minutes is Noust's. |
session_absolute_hours |
8 hours | mp.eq.2.1: Locks after a prudent time of inactivity | |
lockout_threshold |
5 attempts | op.acc.6.8: Authentication attempts are limited, then the account locks | the default already; the floor cannot be lowered |
lockout_minutes |
15 minutes | op.acc.6.8: Authentication attempts are limited, then the account locks | the default already; the floor cannot be lowered |
password_min_length |
14 characters | op.acc.6.r1.2: Minimum password complexity and robustness | The number is Noust's. |
access_review_days |
90 days | op.acc.4.4: Access rights are reviewed periodically | |
stale_account_days |
90 days | op.acc.1.4: Accounts are disabled when no longer needed | |
change_reasons |
on | op.exp.5.1: Every change request is recorded with a reference | |
exception_reasons |
on | op.exp.5.2: A change request carries enough information to authorise it | |
audit_retention_days |
365 days | op.exp.8.r3.1: The retention time of the records is defined | The period is the organisation's; 365 days is Noust's. |
audit_fail_closed |
on | op.exp.8.1: An audit record of the activity is generated | |
external_audit_sink |
on | op.mon.3.1: An automatic collection of security events op.exp.8.r4.1: Records are accessible and deletable only by authorised staff |
|
audit_review_days |
7 days | op.exp.8.r1.1: Activity records are reviewed periodically | |
log_shipping_tls |
on | mp.com.2.1: Encrypted channels outside the security domain | |
backup_encryption |
required | mp.si.2.1: Cryptographic mechanisms for confidentiality and integrity | |
backup_verify_days |
7 days | mp.info.6.r1.1: Backup and restore procedures are tested regularly | the default already; the floor cannot be lowered The frequency is the organisation's; 7 days is Noust's. |
backup_max_age_hours |
26 hours | mp.info.6.1: Backups allow recovering lost data | the default already; the floor cannot be lowered |
tls_certificate |
operator | mp.com.2.r1.1: Algorithms and parameters authorised by the CCN mp.com.3.r2.1: Authenticity of the other end, with authorised parameters |
|
certificate_min_days |
30 days | mp.com.2.r1.1: Algorithms and parameters authorised by the CCN | the default already; the floor cannot be lowered |
explicit_allowlist |
on | op.acc.4.5: A specific remote-access policy with express authorisation mp.com.1.1: A perimeter protection separates the internal network from outside |
|
console_exposure |
refused | mp.com.1.1: A perimeter protection separates the internal network from outside op.acc.4.5: A specific remote-access policy with express authorisation |
|
database_remote_listen |
refused | mp.com.1.1: A perimeter protection separates the internal network from outside | |
server_terminal |
refused | op.acc.4.2: Least privilege | |
terminal_idle_minutes |
10 minutes | mp.eq.2.1: Locks after a prudent time of inactivity | |
terminal_max_minutes |
60 minutes | mp.eq.2.1: Locks after a prudent time of inactivity | |
mounts_read_only |
on | op.acc.2.3: Access to operating-system components and configuration is controlled | |
db_write_root_equivalent |
on | op.acc.4.2: Least privilege |
What stays organisational (no setting does it for you):
- The security policy and its approval (org.1, org.2), the security roles and the committee (org.3, org.4).
- The risk analysis and the categorisation of the system (op.pl.1, Annex I), and the declaration of applicability.
- People: duties, awareness and training (mp.per).
- Physical security of the premises and the equipment (mp.if), and the workstation (mp.eq).
- Service continuity: impact analysis, plan, tests, alternative means (op.cont).
- Suppliers and external services (op.ext) and certified components (op.pl.5).
- Incident management and notification to the CCN-CERT (op.exp.7, op.exp.9), and the periodic security audit (art. 31).
ENS ALTA
Spain's National Security Scheme, category ALTA: MEDIA plus a backup kept apart.
Reference: Real Decreto 311/2022, Annex II.
Enable it with noust compliance enable ens-alta. It asks of 40 control(s); 35 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
roles_split |
on | op.acc.3.1: Development and operation do not fall on the same person op.acc.3.2: Whoever authorises and whoever controls the use are different people |
|
separation_of_duties |
on | op.acc.3.1: Development and operation do not fall on the same person op.acc.3.2: Whoever authorises and whoever controls the use are different people |
|
single_role_per_account |
on | op.acc.1.2: A separate identifier for each profile of the same person | |
sso_no_admin |
on | op.acc.3.2: Whoever authorises and whoever controls the use are different people | |
second_factor |
on | op.acc.6.r8.1: Two factors from or through uncontrolled zones | Every account has held one since 3.1 under this category; the control keeps it. |
approvals |
on | op.acc.3.2: Whoever authorises and whoever controls the use are different people op.exp.5.4: Relevant changes are approved beforehand |
|
restricted_tokens |
on | op.acc.1.3: A unique identifier for every entity that accesses the system op.acc.4.2: Least privilege |
|
token_max_days |
90 days | op.acc.6.4: Credentials are changed periodically | The period is the organisation's; 90 days is Noust's. |
master_token |
recovery | op.acc.6.r8.1: Two factors from or through uncontrolled zones | |
sudo_password |
on | op.acc.6.r6.1: Points where authentication is renewed, not just the session | The measure asks for renewal points from category ALTA; MEDIA keeps what 3.1 decided. |
sudo_idle_minutes |
10 minutes | op.acc.6.r6.1: Points where authentication is renewed, not just the session | The number is Noust's. |
sudo_max_minutes |
30 minutes | op.acc.6.r6.1: Points where authentication is renewed, not just the session | The number is Noust's. |
session_idle_minutes |
15 minutes | mp.eq.2.1: Locks after a prudent time of inactivity | 'Prudent time' is the organisation's; 15 minutes is Noust's. |
session_absolute_hours |
8 hours | mp.eq.2.r1.1: Open sessions are cancelled after a longer time | |
lockout_threshold |
5 attempts | op.acc.6.8: Authentication attempts are limited, then the account locks | the default already; the floor cannot be lowered |
lockout_minutes |
15 minutes | op.acc.6.8: Authentication attempts are limited, then the account locks | the default already; the floor cannot be lowered |
password_min_length |
14 characters | op.acc.6.r1.2: Minimum password complexity and robustness | The number is Noust's. |
access_review_days |
90 days | op.acc.4.4: Access rights are reviewed periodically | |
stale_account_days |
90 days | op.acc.1.4: Accounts are disabled when no longer needed | |
change_reasons |
on | op.exp.5.1: Every change request is recorded with a reference | |
exception_reasons |
on | op.exp.5.2: A change request carries enough information to authorise it | |
audit_retention_days |
365 days | op.exp.8.r3.1: The retention time of the records is defined | The period is the organisation's; 365 days is Noust's. |
audit_fail_closed |
on | op.exp.8.1: An audit record of the activity is generated | |
external_audit_sink |
on | op.mon.3.1: An automatic collection of security events op.exp.8.r4.1: Records are accessible and deletable only by authorised staff |
|
audit_review_days |
7 days | op.exp.8.r1.1: Activity records are reviewed periodically | |
log_shipping_tls |
on | mp.com.2.1: Encrypted channels outside the security domain | |
backup_encryption |
required | mp.si.2.r2.1: Backups are encrypted | |
backup_verify_days |
7 days | mp.info.6.r1.1: Backup and restore procedures are tested regularly | the default already; the floor cannot be lowered The frequency is the organisation's; 7 days is Noust's. |
backup_max_age_hours |
26 hours | mp.info.6.1: Backups allow recovering lost data | the default already; the floor cannot be lowered |
backup_offsite |
on | mp.info.6.r2.1: One backup is kept apart, in a different place | |
tls_certificate |
operator | mp.com.2.r1.1: Algorithms and parameters authorised by the CCN mp.com.3.r2.1: Authenticity of the other end, with authorised parameters |
|
certificate_min_days |
30 days | mp.com.2.r1.1: Algorithms and parameters authorised by the CCN | the default already; the floor cannot be lowered |
explicit_allowlist |
on | op.acc.4.5: A specific remote-access policy with express authorisation mp.com.1.1: A perimeter protection separates the internal network from outside |
|
console_exposure |
refused | mp.com.1.1: A perimeter protection separates the internal network from outside op.acc.4.5: A specific remote-access policy with express authorisation |
|
database_remote_listen |
refused | mp.com.1.1: A perimeter protection separates the internal network from outside | |
server_terminal |
refused | op.acc.4.2: Least privilege | |
terminal_idle_minutes |
10 minutes | mp.eq.2.1: Locks after a prudent time of inactivity | |
terminal_max_minutes |
60 minutes | mp.eq.2.1: Locks after a prudent time of inactivity | |
mounts_read_only |
on | op.acc.2.3: Access to operating-system components and configuration is controlled | |
db_write_root_equivalent |
on | op.acc.4.2: Least privilege |
What stays organisational (no setting does it for you):
- The security policy and its approval (org.1, org.2), the security roles and the committee (org.3, org.4).
- The risk analysis and the categorisation of the system (op.pl.1, Annex I), and the declaration of applicability.
- People: duties, awareness and training (mp.per).
- Physical security of the premises and the equipment (mp.if), and the workstation (mp.eq).
- Service continuity: impact analysis, plan, tests, alternative means (op.cont).
- Suppliers and external services (op.ext) and certified components (op.pl.5).
- Incident management and notification to the CCN-CERT (op.exp.7, op.exp.9), and the periodic security audit (art. 31).
Technical, and not enforced by Noust:
- Suspending credentials after a period of non-use (op.acc.6.r7.1, from ALTA).
- Automatic correlation of events and automatic response (op.exp.8.r5, op.mon.3.r1, from ALTA).
- Qualified certificates as authentication (op.acc.6.r3, r4), where chosen instead of a second factor.
ISO/IEC 27001:2022
The international information security management standard: the technical controls of Annex A that a deployment tool can enforce.
Reference: ISO/IEC 27001:2022, Annex A.
Enable it with noust compliance enable iso-27001. It asks of 38 control(s); 33 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
roles_split |
on | A.5.3: Segregation of duties | |
separation_of_duties |
on | A.5.3: Segregation of duties | |
single_role_per_account |
on | A.8.2: Privileged access rights | |
sso_no_admin |
on | A.8.2: Privileged access rights | |
second_factor |
on | A.8.5: Secure authentication | A.8.5 leaves the method to the organisation; a second factor is Noust's reading. |
restricted_tokens |
on | A.5.17: Authentication information A.8.2: Privileged access rights |
|
token_max_days |
90 days | A.5.17: Authentication information | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
master_token |
recovery | A.8.2: Privileged access rights | |
sudo_password |
on | A.8.2: Privileged access rights A.8.5: Secure authentication |
|
sudo_idle_minutes |
10 minutes | A.8.2: Privileged access rights | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
sudo_max_minutes |
30 minutes | A.8.2: Privileged access rights | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
session_idle_minutes |
15 minutes | A.8.5: Secure authentication | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
session_absolute_hours |
8 hours | A.8.5: Secure authentication | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
lockout_threshold |
5 attempts | A.8.5: Secure authentication | the default already; the floor cannot be lowered ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
lockout_minutes |
15 minutes | A.8.5: Secure authentication | the default already; the floor cannot be lowered ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
password_min_length |
14 characters | A.5.17: Authentication information | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
access_review_days |
90 days | A.5.18: Access rights | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
stale_account_days |
90 days | A.5.18: Access rights | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
change_reasons |
on | A.8.32: Change management | |
exception_reasons |
on | 6.1.3: Information security risk treatment (acceptance of residual risk) | |
audit_retention_days |
365 days | A.8.15: Logging | ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
audit_fail_closed |
on | A.8.15: Logging | |
external_audit_sink |
on | A.8.15: Logging | |
audit_review_days |
7 days | A.8.15: Logging A.8.16: Monitoring activities |
ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
log_shipping_tls |
on | A.8.24: Use of cryptography | |
backup_encryption |
required | A.8.13: Information backup A.8.24: Use of cryptography |
|
backup_verify_days |
7 days | A.8.13: Information backup | the default already; the floor cannot be lowered ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
backup_max_age_hours |
26 hours | A.8.13: Information backup | the default already; the floor cannot be lowered ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
backup_offsite |
on | A.8.13: Information backup | |
certificate_min_days |
30 days | A.8.24: Use of cryptography | the default already; the floor cannot be lowered ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
explicit_allowlist |
on | A.8.20: Networks security | |
console_exposure |
refused | A.8.20: Networks security A.8.21: Security of network services |
|
database_remote_listen |
refused | A.8.20: Networks security A.8.22: Segregation of networks |
|
server_terminal |
refused | A.8.18: Use of privileged utility programs | |
terminal_idle_minutes |
10 minutes | A.8.5: Secure authentication A.8.18: Use of privileged utility programs |
ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
terminal_max_minutes |
60 minutes | A.8.5: Secure authentication A.8.18: Use of privileged utility programs |
ISO/IEC 27001 prescribes no number; this one is Noust's reading. |
mounts_read_only |
on | A.8.3: Information access restriction | |
db_write_root_equivalent |
on | A.8.2: Privileged access rights |
What stays organisational (no setting does it for you):
- The management system itself: context, scope, leadership, policy, risk assessment, the statement of applicability, internal audit and management review (clauses 4 to 10).
- People and physical controls (Annex A, themes 6 and 7).
- Supplier relationships (A.5.19 to A.5.23) and incident management (A.5.24 to A.5.28).
- Vulnerability and malware management on the hosts (A.8.7, A.8.8).
- Certification, which only an accredited body grants.
NIS2
The EU directive on the security of network and information systems: the risk-management measures of article 21(2) a server can help with.
Reference: Directive (EU) 2022/2555, article 21.
Enable it with noust compliance enable nis2. It asks of 21 control(s); 16 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
second_factor |
on | Art. 21(2)(j): The use of multi-factor authentication or continuous authentication solutions | |
restricted_tokens |
on | Art. 21(2)(i): Human resources security, access control policies and asset management | |
token_max_days |
90 days | Art. 21(2)(i): Human resources security, access control policies and asset management | Article 21 names areas, not settings; this number is Noust's reading. |
sudo_password |
on | Art. 21(2)(j): The use of multi-factor authentication or continuous authentication solutions | |
sudo_idle_minutes |
10 minutes | Art. 21(2)(j): The use of multi-factor authentication or continuous authentication solutions | Article 21 names areas, not settings; this number is Noust's reading. |
sudo_max_minutes |
30 minutes | Art. 21(2)(j): The use of multi-factor authentication or continuous authentication solutions | Article 21 names areas, not settings; this number is Noust's reading. |
lockout_threshold |
5 attempts | Art. 21(2)(g): Basic cyber hygiene practices and cybersecurity training | the default already; the floor cannot be lowered Article 21 names areas, not settings; this number is Noust's reading. |
lockout_minutes |
15 minutes | Art. 21(2)(g): Basic cyber hygiene practices and cybersecurity training | the default already; the floor cannot be lowered Article 21 names areas, not settings; this number is Noust's reading. |
password_min_length |
14 characters | Art. 21(2)(g): Basic cyber hygiene practices and cybersecurity training | Article 21 names areas, not settings; this number is Noust's reading. |
access_review_days |
90 days | Art. 21(2)(i): Human resources security, access control policies and asset management | Article 21 names areas, not settings; this number is Noust's reading. |
stale_account_days |
90 days | Art. 21(2)(i): Human resources security, access control policies and asset management | Article 21 names areas, not settings; this number is Noust's reading. |
audit_retention_days |
365 days | Art. 21(2)(b): Incident handling | Article 21 names areas, not settings; this number is Noust's reading. |
audit_fail_closed |
on | Art. 21(2)(b): Incident handling | Article 21 names areas, not settings; this number is Noust's reading. |
external_audit_sink |
on | Art. 21(2)(b): Incident handling | Article 21 names areas, not settings; this number is Noust's reading. |
audit_review_days |
7 days | Art. 21(2)(f): Policies and procedures to assess the effectiveness of cybersecurity risk-management measures | Article 21 names areas, not settings; this number is Noust's reading. |
log_shipping_tls |
on | Art. 21(2)(h): Policies and procedures regarding the use of cryptography and, where appropriate, encryption | |
backup_encryption |
required | Art. 21(2)(h): Policies and procedures regarding the use of cryptography and, where appropriate, encryption | |
backup_verify_days |
7 days | Art. 21(2)(c): Business continuity, such as backup management and disaster recovery, and crisis management | the default already; the floor cannot be lowered Article 21 names areas, not settings; this number is Noust's reading. |
backup_max_age_hours |
26 hours | Art. 21(2)(c): Business continuity, such as backup management and disaster recovery, and crisis management | the default already; the floor cannot be lowered Article 21 names areas, not settings; this number is Noust's reading. |
backup_offsite |
on | Art. 21(2)(c): Business continuity, such as backup management and disaster recovery, and crisis management | |
certificate_min_days |
30 days | Art. 21(2)(h): Policies and procedures regarding the use of cryptography and, where appropriate, encryption | the default already; the floor cannot be lowered Article 21 names areas, not settings; this number is Noust's reading. |
What stays organisational (no setting does it for you):
- Governance: management approves and answers for the measures (art. 20).
- Risk analysis and security policies (art. 21(2)(a)), supply-chain security (d), secure development and vulnerability handling (e), training (g).
- Reporting a significant incident: early warning in 24 hours, notification in 72, final report in a month (art. 23).
- Registration with the authority, and the national transposition that applies to you.
CIS Controls v8, IG1
The Center for Internet Security's essential cyber hygiene (Implementation Group 1): the safeguards of IG1 a deployment tool can enforce.
Reference: CIS Critical Security Controls v8.
Enable it with noust compliance enable cis-ig1. It asks of 7 control(s); 7 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
single_role_per_account |
on | 5.4: Restrict administrator privileges to dedicated administrator accounts | |
second_factor |
on | 6.5: Require MFA for administrative access | the framework fixes this number |
session_idle_minutes |
15 minutes | 4.3: Configure automatic session locking on enterprise assets | the framework fixes this number |
access_review_days |
90 days | 5.1: Establish and maintain an inventory of accounts | the framework fixes this number Validate the accounts at least quarterly. |
stale_account_days |
45 days | 5.3: Disable dormant accounts | the framework fixes this number |
backup_encryption |
required | 11.3: Protect recovery data | The safeguard says encryption or separation, based on requirements. |
backup_offsite |
on | 11.4: Establish and maintain an isolated instance of recovery data |
What stays organisational (no setting does it for you):
- Inventories of enterprise assets and software (controls 1 and 2).
- Malware defences, email and browser protections, vulnerability management (controls 7, 9, 10).
- Security awareness training (control 14), service-provider management (control 15).
- An incident response process (control 17).
CIS Controls v8, IG2
CIS Controls v8, Implementation Group 2: IG1 and the safeguards of IG2 a deployment tool can enforce.
Reference: CIS Critical Security Controls v8.
It contains everything cis-ig1 asks.
Enable it with noust compliance enable cis-ig2. It asks of 11 control(s); 10 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
single_role_per_account |
on | 5.4: Restrict administrator privileges to dedicated administrator accounts | |
second_factor |
on | 6.5: Require MFA for administrative access | the framework fixes this number |
session_idle_minutes |
15 minutes | 4.3: Configure automatic session locking on enterprise assets | the framework fixes this number |
access_review_days |
90 days | 5.1: Establish and maintain an inventory of accounts | the framework fixes this number Validate the accounts at least quarterly. |
stale_account_days |
45 days | 5.3: Disable dormant accounts | the framework fixes this number |
audit_retention_days |
90 days | 8.10: Retain audit logs | the framework fixes this number the default already; the floor cannot be lowered At least 90 days. |
external_audit_sink |
on | 8.9: Centralize audit logs | |
audit_review_days |
7 days | 8.11: Conduct audit log reviews | the framework fixes this number Weekly, or more often. |
log_shipping_tls |
on | 3.10: Encrypt sensitive data in transit | |
backup_encryption |
required | 11.3: Protect recovery data 3.11: Encrypt sensitive data at rest |
|
backup_offsite |
on | 11.4: Establish and maintain an isolated instance of recovery data |
What stays organisational (no setting does it for you):
- Everything IG1 leaves organisational, and penetration testing (control 18).
- Centralised account and access management beyond the server (5.6, 6.7).
- Network monitoring and defence (control 13).
SOC 2, Security
The AICPA Trust Services Criteria for Security (the common criteria): the logical access, monitoring and change-management criteria a server can help with.
Reference: AICPA Trust Services Criteria (2017, revised points of focus 2022), CC6, CC7, CC8.
Enable it with noust compliance enable soc2-security. It asks of 24 control(s); 22 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
roles_split |
on | CC6.3: Role-based access, least privilege and segregation of duties | |
separation_of_duties |
on | CC6.3: Role-based access, least privilege and segregation of duties | |
second_factor |
on | CC6.1: Logical access security software, infrastructure and architectures | The criteria name no method; a second factor is Noust's reading. |
approvals |
on | CC8.1: Change management | |
restricted_tokens |
on | CC6.1: Logical access security software, infrastructure and architectures CC6.3: Role-based access, least privilege and segregation of duties |
|
token_max_days |
90 days | CC6.1: Logical access security software, infrastructure and architectures | The criteria name no number; this one is Noust's reading. |
master_token |
recovery | CC6.1: Logical access security software, infrastructure and architectures | |
sudo_password |
on | CC6.1: Logical access security software, infrastructure and architectures | |
session_idle_minutes |
15 minutes | CC6.1: Logical access security software, infrastructure and architectures | The criteria name no number; this one is Noust's reading. |
lockout_threshold |
5 attempts | CC6.1: Logical access security software, infrastructure and architectures | the default already; the floor cannot be lowered The criteria name no number; this one is Noust's reading. |
lockout_minutes |
15 minutes | CC6.1: Logical access security software, infrastructure and architectures | the default already; the floor cannot be lowered The criteria name no number; this one is Noust's reading. |
password_min_length |
14 characters | CC6.1: Logical access security software, infrastructure and architectures | The criteria name no number; this one is Noust's reading. |
access_review_days |
90 days | CC6.2: Registration and authorisation of users, and removal when access is no longer authorised | The criteria name no number; this one is Noust's reading. |
stale_account_days |
90 days | CC6.2: Registration and authorisation of users, and removal when access is no longer authorised | The criteria name no number; this one is Noust's reading. |
change_reasons |
on | CC8.1: Change management | |
audit_retention_days |
365 days | CC7.2: Monitoring of system components for anomalies | The criteria name no number; this one is Noust's reading. |
audit_fail_closed |
on | CC7.2: Monitoring of system components for anomalies | |
external_audit_sink |
on | CC7.2: Monitoring of system components for anomalies | |
audit_review_days |
7 days | CC7.2: Monitoring of system components for anomalies | The criteria name no number; this one is Noust's reading. |
log_shipping_tls |
on | CC6.7: Restriction of transmission, movement and removal of information | |
backup_encryption |
required | CC6.1: Logical access security software, infrastructure and architectures | |
explicit_allowlist |
on | CC6.6: Logical access security measures against threats from outside the system boundaries | |
console_exposure |
refused | CC6.6: Logical access security measures against threats from outside the system boundaries | |
database_remote_listen |
refused | CC6.6: Logical access security measures against threats from outside the system boundaries |
What stays organisational (no setting does it for you):
- The audit: a SOC 2 report is an independent auditor's opinion, not a setting.
- The control environment, risk assessment and communication (CC1 to CC5).
- Vendor management (CC9.2), human resources, physical access (CC6.4) and disposal (CC6.5).
- Availability, confidentiality, processing integrity and privacy are other criteria; backups serve Availability (A1.2), so they are not part of this preset.
GDPR / RGPD, article 32
Security of processing under the General Data Protection Regulation: the technical measures of article 32(1) a server can help with.
Reference: Regulation (EU) 2016/679, article 32.
Enable it with noust compliance enable gdpr-32. It asks of 17 control(s); 13 of them ask for more than the default.
| Control | Value | Clause | Note |
|---|---|---|---|
restricted_tokens |
on | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | |
token_max_days |
90 days | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
session_idle_minutes |
15 minutes | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
session_absolute_hours |
8 hours | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
lockout_threshold |
5 attempts | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | the default already; the floor cannot be lowered Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
lockout_minutes |
15 minutes | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | the default already; the floor cannot be lowered Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
password_min_length |
14 characters | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
access_review_days |
90 days | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems Art. 32(1)(d): A process for regularly testing, assessing and evaluating the effectiveness of the measures |
Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
stale_account_days |
90 days | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
audit_review_days |
7 days | Art. 32(1)(d): A process for regularly testing, assessing and evaluating the effectiveness of the measures | Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
log_shipping_tls |
on | Art. 32(1)(a): Pseudonymisation and encryption of personal data | |
backup_encryption |
required | Art. 32(1)(a): Pseudonymisation and encryption of personal data | |
backup_verify_days |
7 days | Art. 32(1)(c): The ability to restore the availability of and access to personal data in a timely manner Art. 32(1)(d): A process for regularly testing, assessing and evaluating the effectiveness of the measures |
the default already; the floor cannot be lowered Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
backup_max_age_hours |
26 hours | Art. 32(1)(c): The ability to restore the availability of and access to personal data in a timely manner | the default already; the floor cannot be lowered Article 32 asks for measures appropriate to the risk, not for a number; this one is Noust's. |
backup_offsite |
on | Art. 32(1)(c): The ability to restore the availability of and access to personal data in a timely manner | |
console_exposure |
refused | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems | |
database_remote_listen |
refused | Art. 32(1)(b): Ongoing confidentiality, integrity, availability and resilience of processing systems |
What stays organisational (no setting does it for you):
- The lawful basis, purposes, records of processing (art. 30) and impact assessments (art. 35).
- Data-subject rights (art. 15 to 22), processor contracts (art. 28), the data protection officer (art. 37).
- Notifying a breach to the authority and to the people affected (art. 33, 34).
- Pseudonymisation of the data your applications hold (art. 32(1)(a)): Noust does not see inside them.
All of them side by side
What each framework asks of each control. A blank cell means it asks nothing.
| Control | ENS BÁSICA | ENS MEDIA | ENS ALTA | ISO/IEC 27001:2022 | NIS2 | CIS Controls v8, IG1 | CIS Controls v8, IG2 | SOC 2, Security | GDPR / RGPD, article 32 |
|---|---|---|---|---|---|---|---|---|---|
roles_split |
on | on | on | on | |||||
separation_of_duties |
on | on | on | on | |||||
single_role_per_account |
on | on | on | on | on | on | |||
sso_no_admin |
on | on | on | ||||||
second_factor |
on | on | on | on | on | on | on | ||
approvals |
on | on | on | ||||||
restricted_tokens |
on | on | on | on | on | on | on | ||
token_max_days |
90 days | 90 days | 90 days | 90 days | 90 days | 90 days | 90 days | ||
master_token |
recovery | recovery | recovery | recovery | recovery | ||||
sudo_password |
on | on | on | on | on | ||||
sudo_idle_minutes |
10 minutes | 10 minutes | 10 minutes | 10 minutes | |||||
sudo_max_minutes |
30 minutes | 30 minutes | 30 minutes | 30 minutes | |||||
session_idle_minutes |
15 minutes | 15 minutes | 15 minutes | 15 minutes | 15 minutes | 15 minutes | 15 minutes | ||
session_absolute_hours |
8 hours | 8 hours | 8 hours | 8 hours | |||||
lockout_threshold |
5 attempts | 5 attempts | 5 attempts | 5 attempts | 5 attempts | 5 attempts | 5 attempts | ||
lockout_minutes |
15 minutes | 15 minutes | 15 minutes | 15 minutes | 15 minutes | 15 minutes | 15 minutes | ||
password_min_length |
12 characters | 14 characters | 14 characters | 14 characters | 14 characters | 14 characters | 14 characters | ||
access_review_days |
90 days | 90 days | 90 days | 90 days | 90 days | 90 days | 90 days | 90 days | 90 days |
stale_account_days |
90 days | 90 days | 90 days | 90 days | 90 days | 45 days | 45 days | 90 days | 90 days |
change_reasons |
on | on | on | on | |||||
exception_reasons |
on | on | on | ||||||
audit_retention_days |
365 days | 365 days | 365 days | 365 days | 90 days | 365 days | |||
audit_fail_closed |
on | on | on | on | on | ||||
external_audit_sink |
on | on | on | on | on | on | on | ||
audit_review_days |
7 days | 7 days | 7 days | 7 days | 7 days | 7 days | 7 days | ||
log_shipping_tls |
on | on | on | on | on | on | on | on | |
backup_encryption |
required | required | required | required | required | required | required | required | |
backup_verify_days |
7 days | 7 days | 7 days | 7 days | 7 days | ||||
backup_max_age_hours |
26 hours | 26 hours | 26 hours | 26 hours | 26 hours | 26 hours | |||
backup_offsite |
on | on | on | on | on | on | |||
tls_certificate |
operator | operator | |||||||
certificate_min_days |
30 days | 30 days | 30 days | 30 days | |||||
explicit_allowlist |
on | on | on | on | on | ||||
console_exposure |
refused | refused | refused | refused | refused | refused | |||
database_remote_listen |
refused | refused | refused | refused | refused | refused | |||
server_terminal |
refused | refused | refused | ||||||
terminal_idle_minutes |
10 minutes | 10 minutes | 10 minutes | ||||||
terminal_max_minutes |
60 minutes | 60 minutes | 60 minutes | ||||||
mounts_read_only |
on | on | on | on | |||||
db_write_root_equivalent |
on | on | on |