# Security and privacy design
This document serves as the relevant Annex to the [Terms of Service](https://www.netdata.cloud/service-terms/), the [Privacy Policy](https://www.netdata.cloud/privacy/) and
the Data Processing Addendum, when applicable. It provides more information regarding Netdata’s technical and organizational security and privacy measures.
We have given special attention to all aspects of Netdata, ensuring that everything throughout its operation is as secure as possible. Netdata has been designed with security in mind.
> When running Netdata in environments requiring Payment Card Industry Data Security Standard (**PCI DSS**), Systems and Organization Controls (**SOC 2**),
or Health Insurance Portability and Accountability Act (**HIPAA**) compliance, please keep in mind that
**even when the user uses Netdata Cloud, all collected data is always stored inside their infrastructure**.
Dashboard data a user views and alert notifications do travel
over Netdata Cloud, as they also travel over third party networks, to reach the user's web browser or the notification integrations the user has configured,
but Netdata Cloud does not store metric data. It only transforms them as they pass through it, aggregating them from multiple Agents and Parents,
to appear as one data source on the user's browser.
## Cloud design
### User identification and authorization
Netdata ensures that only an email address is stored to create an account and use the Service.
User identification and authorization is done
either via third parties (Google, GitHub accounts), or short-lived access tokens, sent to the user’s email account.
### Personal Data stored
Netdata ensures that only an email address is stored to create an account and use the Service. The same email
address is used for Netdata product and marketing communications (via Hubspot and Sendgrid).
Email addresses are stored in our production database on AWS and copied to Google BigQuery, our data lake,
for analytics purposes. These analytics are crucial for our product development process.
If the user accepts the use of analytical cookies, the email address is also stored in the systems we use to track the
usage of the application (Posthog and Gainsight PX)
The IP address used to access Netdata Cloud is stored in web proxy access logs. If the user accepts the use of analytical
cookies, the IP is also stored in the systems we use to track the usage of the application (Posthog and Gainsight PX).
### Infrastructure data stored
The metric data that a user sees in the web browser when using Netdata Cloud is streamed directly from the Netdata Agent
to the Netdata Cloud dashboard, via the Agent-Cloud link (see [data transfer](#data-transfer)). The data passes through our systems, but it isn’t stored.
The metadata we do store for each node connected to the user's Spaces in Netdata Cloud is:
- Hostname (as it appears in Netdata Cloud)
- Information shown in `/api/v1/info`. For example: [https://frankfurt.my-netdata.io/api/v1/info](https://frankfurt.my-netdata.io/api/v1/info).
- Metric metadata information shown in `/api/v1/contexts`. For example: [https://frankfurt.my-netdata.io/api/v1/contexts](https://frankfurt.my-netdata.io/api/v1/contexts).
- Alarm configurations shown in `/api/v1/alarms?all`. For example: [https://frankfurt.my-netdata.io/api/v1/alarms?all](https://frankfurt.my-netdata.io/api/v1/alarms?all).
- Active alarms shown in `/api/v1/alarms`. For example: [https://frankfurt.my-netdata.io/api/v1/alarms](https://frankfurt.my-netdata.io/api/v1/alarms).
The infrastructure data is stored in our production database on AWS and copied to Google BigQuery, our data lake, for
analytics purposes.
### Data transfer
All infrastructure data visible on Netdata Cloud has to pass through the Agent-Cloud link (ACLK) mechanism, which
securely connects a Netdata Agent to Netdata Cloud. The Netdata agent initiates and establishes an outgoing secure
WebSocket (WSS) connection to Netdata Cloud. The ACLK is encrypted, safe, and is only established if the user connects their node.
Data is encrypted when in transit between a user and Netdata Cloud using TLS.
### Data retention
Netdata may maintain backups of Netdata Cloud Customer Content, which would remain in place for approximately ninety
(90) days following a deletion in Netdata Cloud.
### Data portability and erasure
Netdata will, as necessary to enable the Customer to meet its obligations under Data Protection Law, provide the Customer
via the availability of Netdata Cloud with the ability to access, retrieve, correct and delete the Personal Data stored in
Netdata Cloud. The Customer acknowledges that such ability may from time to time be limited due to temporary service outages
for maintenance or other updates to Netdata Cloud, or technically not feasible.
To the extent that the Customer, in its fulfillment of its Data Protection Law obligations, is unable to access, retrieve,
correct or delete Customer Personal Data in Netdata Cloud due to prolonged unavailability of Netdata Cloud due to an issue
within Netdata’s control, Netdata will where possible use reasonable efforts to provide, correct or delete such Customer Personal Data.
If a Customer is unable to delete Personal Data via the self-services functionality, then Netdata deletes Personal Data upon
the Customer’s written request, within the timeframe specified in the DPA and in accordance with applicable data protection law.
#### Delete all personal data
To remove all personal info we have about a user (email and activities) they need to delete their cloud account by logging into https://app.netdata.cloud and accessing their profile, at the bottom left of the screen.
## Agent design
### User data is safe with Netdata
Netdata collects raw data from many sources. For each source, Netdata uses a plugin that connects to the source (or reads the
relative files produced by the source), receives raw data and processes them to calculate the metrics shown on Netdata dashboards.
Even if Netdata plugins connect to the user's database server, or read user's application log file to collect raw data, the product of
this data collection process is always a number of **chart metadata and metric values** (summarized data for dashboard visualization).
All Netdata plugins (internal to the Netdata daemon, and external ones written in any computer language), convert raw data collected
into metrics, and only these metrics are stored in Netdata databases, sent to upstream Netdata servers, or archived to external
time-series databases.
The **raw data** collected by Netdata does not leave the host when collected. **The only data Netdata exposes are chart metadata and metric values.**
This means that Netdata can safely be used in environments that require the highest level of data isolation (like PCI Level 1).
### User systems are safe with Netdata
We are very proud that **the Netdata daemon runs as a normal system user, without any special privileges**. This is quite an
achievement for a monitoring system that collects all kinds of system and application metrics.
There are a few cases, however, that raw source data are only exposed to processes with escalated privileges. To support these
cases, Netdata attempts to minimize and completely isolate the code that runs with escalated privileges.
So, Netdata **plugins**, even those running with escalated capabilities or privileges, perform a **hard coded data collection job**.
They do not accept commands from Netdata. The communication is **unidirectional** from the plugin towards the Netdata daemon, except
for Functions (see below). The original application data collected by each plugin do not leave the process they are collected, are
not saved and are not transferred to the Netdata daemon. The communication from the plugins to the Netdata daemon includes only chart
metadata and processed metric values.
Child nodes use the same protocol when streaming metrics to their parent nodes. The raw data collected by the plugins of
child Netdata servers are **never leaving the host they are collected**. The only data appearing on the wire are chart
metadata and metric values. This communication is also **unidirectional**: child nodes never accept commands from
parent Netdata servers (except for Functions).
[Functions](https://github.com/netdata/netdata/blob/master/docs/cloud/netdata-functions.md) is currently
the only feature that routes requests back to origin Netdata Agents via Netdata Parents. The feature allows Netdata Cloud to send
a request to the Netdata Agent data collection plugin running at the
edge, to provide additional information, such as the process tree of a server, or the long queries of a DB.
### Netdata is read-only
Netdata **dashboards are read-only**. Dashboard users can view and examine metrics collected by Netdata, but cannot
instruct Netdata to do something other than present the already collected metrics.
Netdata dashboards do not expose sensitive information. Business data of any kind, the kernel version, O/S version,
application versions, host IPs, etc. are not stored and are not exposed by Netdata on its dashboards.
### Protect Netdata from the internet
Users are responsible to take all appropriate measures to secure their Netdata agent installations and especially the Netdata web user interface and API against unauthorized access. Netdata comes with a wide range of options to
[secure user nodes](https://github.com/netdata/netdata/blob/master/docs/category-overview-pages/secure-nodes.md) in
compliance with the user organization's security policy.
### Anonymous statistics
#### Netdata registry
The default configuration uses a public [registry](https://github.com/netdata/netdata/blob/master/registry/README.md) under registry.my-netdata.io.
If the user uses that public registry, they submit the following information to a third party server:
- The URL of the agent's web user interface (via http request referrer)
- The hostnames of the user's Netdata servers
If sending this information to the central Netdata registry violates user's security policies, they can configure Netdata to
[run their own registry](https://github.com/netdata/netdata/blob/master/registry/README.md#run-your-own-registry).
#### Anonymous telemetry events
Starting with v1.30, Netdata collects anonymous usage information by default and sends it to a self hosted PostHog instance within the Netdata infrastructure. Read
about the information collected and learn how to opt-out, on our
[anonymous telemetry events](https://github.com/netdata/netdata/blob/master/docs/anonymous-statistics.md) page.
### Netdata directories
The agent stores data in 6 different directories on the user's system.
| path|owner|permissions|Netdata|comments|
|:---|:----|:----------|:------|:-------|
| `/etc/netdata`|user `root`
group `netdata`|dirs `0755`
files `0640`|reads|**Netdata config files**
may contain sensitive information, so group `netdata` is allowed to read them.|
| `/usr/libexec/netdata`|user `root`
group `root`|executable by anyone
dirs `0755`
files `0644` or `0755`|executes|**Netdata plugins**
permissions depend on the file - not all of them should have the executable flag.
there are a few plugins that run with escalated privileges (Linux capabilities or `setuid`) - these plugins should be executable only by group `netdata`.|
| `/usr/share/netdata`|user `root`
group `netdata`|readable by anyone
dirs `0755`
files `0644`|reads and sends over the network|**Netdata web static files**
these files are sent over the network to anyone that has access to the Netdata web server. Netdata checks the ownership of these files (using settings at the `[web]` section of `netdata.conf`) and refuses to serve them if they are not properly owned. Symbolic links are not supported. Netdata also refuses to serve URLs with `..` in their name.|
| `/var/cache/netdata`|user `netdata`
group `netdata`|dirs `0750`
files `0660`|reads, writes, creates, deletes|**Netdata ephemeral database files**
Netdata stores its ephemeral real-time database here.|
| `/var/lib/netdata`|user `netdata`
group `netdata`|dirs `0750`
files `0660`|reads, writes, creates, deletes|**Netdata permanent database files**
Netdata stores here the registry data, health alarm log db, etc.|
| `/var/log/netdata`|user `netdata`
group `root`|dirs `0755`
files `0644`|writes, creates|**Netdata log files**
all the Netdata applications, logs their errors or other informational messages to files in this directory. These files should be log rotated.|
## Organization processes
### Employee identification and authorization
Netdata operates technical and organizational measures for employee identification and authentication, such as logs, policies,
assigning distinct usernames for each employee and utilizing password complexity requirements for access to all platforms.
The COO or HR are the primary system owners for all platforms and may designate additional system owners, as needed. Additional
user access is also established on a role basis, requires the system owner’s approval, and is tracked by HR. User access to each
platform is subject to periodic review and testing. When an employee changes roles, HR updates the employee’s access to all systems.
Netdata uses on-boarding and off-boarding processes to regulate access by Netdata Personnel.
Second-layer authentication is employed where available, by way of multi-factor authentication.
Netdata’s IT control environment is based upon industry-accepted concepts, such as multiple layers of preventive and detective
controls, working in concert to provide for the overall protection of Netdata’s computing environment and data assets.
### Systems security
Netdata maintains a risk-based assessment security program. The framework for Netdata’s security program includes administrative,
organizational, technical, and physical safeguards reasonably designed to protect the services and confidentiality, integrity,
and availability of user data. The program is intended to be appropriate to the nature of the services and the size and complexity
of Netdata’s business operations.