# File Access Policy Type

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FN3yIVcvNHCyU00hnaZlO%2FPEDM-%20File%20Access%20Policy%20Type.jpg?alt=media&#x26;token=f7acaee2-847d-45d6-9c42-bd161f7efe9a" alt=""><figcaption></figcaption></figure>

### Overview

File Access policies control access to specific files, implementing fine-grained access control for sensitive data, configuration files and system files.

The file access policy restricts access to **executable files** and **non-executable** files.

File Access policies may operate within broader default-deny enforcement models, requiring explicit authorization or policy approval before sensitive files can be accessed or executed.

#### How it works

* Executable files are restricted at the point of execution, similar to the elevation policy.
* Non-executable file enforcement, which leverages the native operating system's ACLs, (e.g. text file, database file, configuration file, etc) will deny `READ/WRITE/DELETE` of the file without adhering to the enforcement (MFA, justification, approval).
* The File Access policy will apply to **any user** of the system, not just a standard user.
* File Access requests can be initiated from both the Keeper Client and command-line interface, ensuring consistent enforcement and workflow parity across user interaction models.

#### Special Considerations

* If you have file access and elevation policy on the same executable, the file access policy won't apply and Keeper will **only** apply the elevation policy.
* File Access policy evaluation may incorporate contextual risk signals as part of enforcement decisions, supporting organizations that align file governance with broader risk management strategies.
* Keeper supports [Path Variables](#path-variables) for assigning policy to a common folder or path on the endpoint.
* Keeper modifies the ACL of a target file explicitly to a user that the policy has been applied to. Keeper will explicitly add the user, then apply the ACL. When a user requests access to a file, and the file access is approved, Keeper modifies the ACL for that user read/write permission to "allow". On Linux systems, if the user is a member of a group which already has "allow" permissions, the user will be able to access the file based on their group membership, regardless of what Keeper enforces.

***

{% stepper %}
{% step %}

### Create an Application Collection

Before creating the policy, the target files must be organized into an **Application Collection**. Navigate to **Collections → Applications** and click on the <mark style="color:blue;">**New Collection**</mark> button.  This will bring up the **New Collection** modal form.  Select **Applications** from the Type select box, give your collection a recognizable descriptive name, and click the <mark style="color:blue;">**Next**</mark> button.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2F4L81iEwiMzpZWZuNbRKq%2Fimage.png?alt=media&#x26;token=99f0d856-7375-416e-aece-daf27b6a99c3" alt="" width="375"><figcaption></figcaption></figure>

You sholud now see the **Add Item to Collection** modal form.  You can either Type object to add and select from the objects that match the string that you type, or you can check the **Manually define resource** checkbox and manually define your resources.&#x20;

Add each target file as a custom resource, using [Path Variables](https://docs.keeper.io/en/keeperpam/endpoint-privilege-manager/policies/policy-types/broken-reference) where applicable to avoid hardcoded paths (e.g. `{system32}\powershell.exe`).  Once you have selected or entered the resource that you want to add to your collection, click the **Add** button and repeat the process until youhave all of the resources that you would like to see in your application collection added.

<div><figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2F2sN0HpnwLHu7K21ULNhx%2Fimage.png?alt=media&#x26;token=602431d2-2cdd-4ab2-9ff8-09c2a52a5fe5" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2F9rHWw2Wrz6aQGJfL9HBs%2Fimage.png?alt=media&#x26;token=1fbf88e2-a7a7-490c-80bf-a177b6c019a5" alt="" width="375"><figcaption></figcaption></figure></div>

> **Tip:** Give the collection a descriptive name that reflects its purpose — for example, "Restricted System Tools" or "Protected Config Files" — to make it easy to identify when assigning it to a policy.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FaFZeT73TfocRqLQp5WoI%2Fimage.png?alt=media&#x26;token=c8e6ca7a-d9e7-4dc6-b628-23911f936557" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Open the Policy Form

From the Keeper Admin Console, navigate to **Endpoint Privilege Manager → Policies** and click <mark style="color:blue;">**Create Policy**</mark>.  This will open the Create Policy modal form.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2F7A0YygBegNVlvSbVGloY%2Fimage.png?alt=media&#x26;token=e84ddf27-6b3c-4e77-88a3-a30503da5edb" alt="" width="375"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Configure the Policy

Fill in the policy details:

* **Policy Name** — Enter a descriptive name (e.g. `File Access – Restricted System Tools`, `File Access – Protected Config Files`)
* **Policy Type** — Select `File Access`
* **Status** — Select `Enforce` to apply the policy actively

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2F2xsadYTyOav8dqlqovRt%2Fimage.png?alt=media&#x26;token=33e407dd-873c-4145-a343-3a90329346e5" alt="" width="375"><figcaption></figcaption></figure>

> **Tip:** Consider starting with **Monitor** status to observe how frequently the policy would match before enabling enforcement.
> {% endstep %}

{% step %}

### Select a Control

Click **Add Control** and select the control to apply when a user triggers an elevation event:

* **Require Approval** — Elevation is blocked until an assigned approver grants the request
* **Require MFA** — User must verify their identity with a TOTP code before elevation proceeds
* **Require Justification** — User must provide a written reason before elevation proceeds

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FPFJeDJWhWMZGhd5UMjpD%2Fimage.png?alt=media&#x26;token=7d71248c-3a38-4e4d-8639-ace73d925277" alt="" width="375"><figcaption></figcaption></figure>

Multiple controls can be added to a single policy. When controls are stacked, all must be satisfied before the elevation is permitted.&#x20;
{% endstep %}

{% step %}

### Set Policy Filters

Below the **Add Control** button, define the scope of the policy by applying filters:

* **User Groups** — Select the user group collections to target, or choose **Select All** to apply to all users
* **Machines** — Select the machine collections to target, or choose **Select All** to apply to all enrolled endpoints
* **Applications** — Select the Application Collection created in Step 1
* **Date & Time Window** — Optionally restrict the policy to specific dates, days of the week, or time ranges

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FQC9PJrVGmrqJ7LmZZya1%2Fimage.png?alt=media&#x26;token=81a21841-af3d-434c-b4a7-37ec71e054c5" alt="" width="375"><figcaption></figcaption></figure>

> Selecting **Select All** on any filter dimension creates a wildcard that automatically includes new users, machines, or applications added to those collections in the future.
> {% endstep %}

{% step %}

### Save and Deploy

Once the form has been sufficiently filled in per the previous steps, the <mark style="color:blue;">**Save**</mark> button will be changed from an inactive to an active state. Click on the <mark style="color:blue;">**Save**</mark> button.

<div align="right"><figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FbknoaYLYtDqubMgpY115%2Fimage.png?alt=media&#x26;token=0d24784b-31b1-4a6e-a6ce-3038b182ed35" alt="" width="44"><figcaption></figcaption></figure></div>

The policy will be pushed to all in-scope endpoints within approximately **30 minutes**. Users on affected endpoints can also trigger an immediate sync via the **Refresh Policies** option in the Keeper agent.

When the policy is applied, affected users will receive an on-screen notification informing them that they have been removed from the local Administrators group.
{% endstep %}
{% endstepper %}

### Example 1: File Access Policy on Executables

As an example, let's say you want to restrict users from executing specific applications that are typically only used by IT team members. This may prevent threats such as "living off the land" where malware takes advantage of common tools. A list of tools that fall into this category might look like this:

```
{system32}\cmd.exe
{system32}\certutil.exe
{system32}\cscript.exe
{system32}\PATHPING.EXE
{system32}\PING.EXE
{system32}\NDKPing.exe
{system32}\RpcPing.exe
{system32}\WMIC.exe
{system32}\WindowsPowerShell\v1.0\powershell.exe
{system32}\WindowsPowerShell\v1.0\powershell_ise.exe
```

{% stepper %}
{% step %}

#### Create Collection

In the **Collections** > **Applications**, create a new Collection. For example, this one is called "Restricted Files on Windows". Add the files to the collection as custom resources.

Note: the `{system32}` variable is defined in our list of [Path Variables](#path-variables).

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FtIUYM2NXESJa4v4XrU4p%2FScreenshot%202025-10-23%20at%205.53.35%E2%80%AFPM.png?alt=media&#x26;token=b306fed8-dadd-48e1-b455-e6b248f20b73" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Create File Access Policy

From the Policies screen, create a "File Access" policy that has specific controls. The application collection assigned is the "Restricted Files on Windows" collection.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FwKaMH8VxGPORKNTq2HqV%2FScreenshot%202025-10-23%20at%205.57.02%E2%80%AFPM.png?alt=media&#x26;token=b2c994a4-6a81-444e-97c4-7a1cf4579683" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### User Experience

When the user (in this case, the "standard" user) attempts to execute any of the applications listed, they will receive a prompt from Keeper that requests justification and approval.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2Fu133wAn1bhEe3TL7IcAv%2Fimage.png?alt=media&#x26;token=46ecffa1-1cd7-41f4-a6cb-f4ce4e3fbf7e" alt="" width="184"><figcaption></figcaption></figure>

After the request is approved, the Keeper Client application will display the request. The user can then launch it directly from the user interface.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2Ffaq73tP1P0r2U4stHJq8%2Fimage.png?alt=media&#x26;token=bf0b1978-e810-4de8-bca4-3fd9ca2982e1" alt="" width="180"><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

***

### Example 2: Protection of a System File

In this example, we will require approval to access a protected file called "netlogon.inf" on all Windows machines.

{% stepper %}
{% step %}

#### Create Collection

Create a "Protected Files" collection which will hold the protected file resources.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FkaALIwBoJ5IW0GP2ye3p%2FScreenshot%202025-05-23%20at%2012.31.46%E2%80%AFPM.png?alt=media&#x26;token=a519ab54-4600-44fd-8f23-70e07c213fba" alt=""><figcaption><p>Create a new Collection of Protected Files</p></figcaption></figure>
{% endstep %}

{% step %}

#### Add Item to Collection

Click on "Manually define resource" and add the `netlogon.inf` file to the collection.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FmaD8JBOxcBeDFm0i8IfX%2FScreenshot%202025-05-23%20at%2012.35.18%E2%80%AFPM.png?alt=media&#x26;token=80e0028f-7560-4067-b697-2b7d655c07ca" alt=""><figcaption><p>Add Item to Collection</p></figcaption></figure>
{% endstep %}

{% step %}

#### Create a Policy

From the Policy tab, click on Create Policy and select:

**Policy Type**: File Access

**Status**: Enforce

**Add Control**: Select MFA, Justification or Approval

**User Groups**: Select the users or groups affected, or All Users and Groups

**Machines**: Select which machines to apply the policy, or All Machines

**Applications**: Select the "Protected Files" collection as defined above.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FrSR2gyoWOVKpUkYfx47y%2FScreenshot%202025-05-23%20at%2012.36.00%E2%80%AFPM.png?alt=media&#x26;token=7da36b4d-3947-427f-bb0d-af0916e40ec8" alt=""><figcaption><p>Create Policy</p></figcaption></figure>

To require approval by an admin for accessing the file resource, select "Requires Approval" and then select the approver(s).

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2F6JoxfaEwDhTgbYafec2n%2FScreenshot%202025-05-23%20at%201.44.12%E2%80%AFPM.png?alt=media&#x26;token=c573bc16-d8cb-4108-9247-d0de2fc2353d" alt=""><figcaption><p>Require Approval on File Access</p></figcaption></figure>

After saving the policy, it will apply to all affected machines within a few minutes.
{% endstep %}
{% endstepper %}

***

### Path Variables

When defining a File Access policy, variables can be used to simplify the policy creation process, and to avoid hard-coded paths.

#### Built-in Path Variables

**Windows Variables**

* `{windows}` → `C:\Windows` (Windows directory)
* `{system32}` → `C:\Windows\System32` (System32 directory)
* `{syswow64}` → `C:\Windows\SysWOW64` (32-bit system directory)
* `{systemdrive}` → `C:\` (System drive root)
* `{userprofile}` → `C:\Users\username` (User profile directory)
* `{programdata}` → `C:\ProgramData` (Program data directory)
* `{programfiles}` → `C:\Program Files` (Program Files directory)
* `{programfilesx86}` → `C:\Program Files (x86)` (32-bit Program Files)
* `{temp}` → `C:\Users\username\AppData\Local\Temp` (Temp directory)
* `{appdata}` → `C:\Users\username\AppData\Roaming` (Application data)
* `{localappdata}` → `C:\Users\username\AppData\Local` (Local application data)

**macOS Variables**

* `{system}` → `/System` (System directory)
* `{library}` → `/Library` (Library directory)
* `{home}` → `/Users/username` (User home directory)
* `{applications}` → `/Applications` (Applications directory)
* `{volumes}` → `/Volumes` (Volumes directory)
* `{temp}` → `/tmp` (Temporary directory)

**Linux Variables**

* `{usr}` → `/usr` (User directory)
* `{home}` → `/home/username` (User home directory)
* `{temp}` → `/tmp` (Temporary directory)
* `{root}` → `/` (Root directory)

**Cross-Platform Variables**

* `{userdocuments}` → User Documents directory
* `{userdesktop}` → User Desktop directory

***

### Protected Paths

Keeper Endpoint Privilege Manager maintains a comprehensive list of protected paths across all supported platforms. These paths represent critical system directories and files that should not be modified by standard users and are excluded from ACL enforcement to maintain system integrity.

### Protection Categories

#### 1. Protected Directories

System directories that are automatically protected from ACL modifications.

#### 2. High-Risk Paths

Critical system files that should never be modified and are blocked from storage operations.

#### 3. Critical System Paths

Virtual filesystems and problematic paths that are avoided during inventory scanning.

### Platform-Specific Protected Paths

#### Windows Protected Directories

The following directories are protected on Windows systems:

```
C:\Windows\System32
C:\Windows\SysWOW64
C:\Windows\WinSxS
C:\Program Files\Windows NT
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
```

**Variable-Based Protected Paths** (resolved at runtime):

```
{system32}
{systemroot}\SysWOW64
{systemroot}\WinSxS
{programfiles}\Windows Defender
{systemroot}\System32\config
{systemroot}\System32\drivers
```

#### Windows High-Risk Paths

Critical system files that should never be modified:

```
C:\Windows\System32\config
C:\Windows\System32\drivers
```

#### Linux Protected Directories

Critical system directories and files on Linux systems:

```
/bin
/sbin
/usr/bin
/usr/sbin
/boot
/dev
/proc
/sys
/etc/passwd
/etc/shadow
/etc/sudoers
```

#### Linux High-Risk Paths

Critical system files on Linux:

```
/etc/passwd
/etc/shadow
/bin/sh
/sbin/init
```

#### macOS Protected Directories

System directories and critical files on macOS:

```
/System
/bin
/sbin
/usr/bin
/usr/sbin
/private/etc
/Library/Security
/Applications/Utilities
```

#### macOS High-Risk Paths

Critical system paths on macOS:

```
/System/Library/CoreServices
/private/etc (and /etc)
```

#### Generic Unix Protected Directories

Fallback protected directories for unknown Unix variants:

```
/bin
/sbin
/usr/bin
/usr/sbin
/etc
/dev
/proc
/sys
```

***

### Mac and Linux Policy Enforcement

On macOS and Linux devices, the File Access policy currently requires the use of the Keeper Client application user interface. To request file access, the user has to request it via the system tray "**Request Access**" feature.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FSNkZhdblJrfYdchVek6Q%2FScreenshot%202025-10-24%20at%208.06.07%E2%80%AFPM.png?alt=media&#x26;token=f29fdfec-acee-49b4-9080-e2874f3a770b" alt="" width="375"><figcaption></figcaption></figure>
