Enclave November 2021 Release

Access Control Rules, Ephemeral systems and more!

We’re excited for a big Enclave Agent release today, v2021.11.02, which comes with a broad set of new features, both in the installed Enclave Agent, and in the overall Enclave platform.

You can update to the new version of the Enclave Agent now; how you do that depends on your platform:

  • On Windows: To update to the latest version on Windows, you can click the upgrade prompt in the Enclave Tray app, or you can download v2021.11.02 directly from https://release.enclave.io/enclave_setup-2021.11.2.0.exe.

  • On Linux: To update on Linux check out our documentation pages for upgrade instructions.

  • On macOS: On macOS, run brew upgrade enclave to get the latest version.

This release has involved a huge amount of effort across the team for a few months, and we’re super proud of what we’ve built. I had to write a blog post just to go through all of the features!

No idea what Enclave is? We create zero-fuss, zero-trust network connectivity between systems anywhere on the internet, without opening any of your firewalls, adding edge devices, or changing your infrastructure. It’s also free to try out at https://enclave.io

Receiver Access Controls

Before v2021.11.02, when you created a policy in Enclave, you could define a Sender and Receiver in the policy to control who can talk to each other:

Creating a policy before Access Controls
Creating a policy before Access Controls

However, as of today, you can now also specify what traffic is allowed to flow by specifying rules for Protocols/Ports you want to allow in the policy:

Creating a Policy with Access Controls
Creating a Policy with Access Controls

Enclave always applies Access Controls at the Receiver side of a policy which makes the entire system much easier to reason about. You can set up traffic rules in a similar way to setting up firewall rules to allow access to a service. The way rules are applied should feel pretty intuitive, but fundamentally:

  1. If you don’t specify any rules on your policy, no traffic will flow (default deny)
  2. Each ACL rule only applies to connections between the senders and receivers of the policy where it was defined.
  3. Different rules on different policies affecting the same systems are combined, but still respecting rule #2.

Access Controls take effect just as quickly as other policy changes, so traffic will be allowed or denied as soon as policy is changed.

Don’t forget, as with everything else in Enclave, you can configure Access Controls via the API:

1
2
3
4
5
6
# Update a policy to only permit HTTP traffic to be received.
$ curl --oauth2-bearer $token \
       -X PATCH
       -H 'Content-Type: application/json' \
       -d  '{"acls": [ { protocol: "Tcp", ports: "80" } ]}' \
       https://api.enclave.io/org/{orgId}/policies/{policyId}

Ephemeral Enrolment Keys

For some time, Enclave has supported Kubernetes and Docker use-cases ‘out-of-the-box’, through the use of our docker container, enclavenetworks/enclave.

1
2
3
4
5
$ docker run --rm \
             --cap-add NET_ADMIN \
             --device /dev/net/tun \
             -e ENCLAVE_ENROLMENT_KEY='XXXXX-XXXXX-XXXXX-XXXXX-XXXXX' \
             enclavenetworks/enclave:latest

However, up until now, once the pod/container stopped, that system would continue to remain enrolled and use up a seat in your account until you removed it. This wasn’t ideal for automation scenarios where you might want to spin up and terminate containers without having to manually remove those containers afterwards.

By their very nature, containers are temporary, or Ephemeral. So, their enrolment in your Enclave organisation should behave in the same way.

As of now, you can define Ephemeral Enrolment Keys in your Enclave Organisation which will cause containers to be automatically removed from your account once terminated.

Creating an Ephemeral Key
Creating an Ephemeral Key

Now, when you enrol a system, pod or container using an Ephemeral Enrolment Key, that system will only remain enrolled to your Enclave Organisation until the container stops running.

In practical terms, when the container stops gracefully and disconnects from our platform, it will be immediately revoked from the Organisation, freeing up space for new systems.

Why did I put gracefully in italics? Well, if you’re running Kubernetes in a home-lab scenario, and someone trips over a network cable, your systems will disconnect (time out) from our perspective, but because this is an unexpected disconnection, we don’t remove the system instantaneously (otherwise when network connectivity was restored your containers wouldn’t connect to the Enclave network again).

Instead, each enrolment has a “grace period” defined for systems (configured per Enrolment Key) that determines how long after an unexpected disconnect we should allow the ephemeral system to remain enrolled to your account.

In practice we recommend 30 minutes as a good default, but you should align the interval to your use-case and availability expectations of your system.

Ephemeral Key Retention
Ephemeral Key Retention

In-Memory Profiles

When running Enclave interactively or inside a docker container and using an ephemeral Enrolment Key, the profile for that system (including private key material and certificate) is no longer written to disk but remains solely in-memory.

This is preferable to persisting a profile file to disk (i.e. /etc/enclave/profiles). By acknowledging that a system isn’t intended to have a sense of permeance, persistent storage of the profile is also no longer required, even for systems which are only enrolled temporarily. Depending on the threat model you’re working with, you may find that in-memory profiles can also help to reduce the risk of key material being exfiltrated from a compromised system.

Notes Everywhere!

When we released our Managed DNS feature earlier in the year, we included a free-text notes field with every DNS Zone and DNS Record. We got feedback that having a free-text field like this is super useful for recording any associated reasoning and change control notes for a variety of entities in your Enclave Organisation, so we’ve added ‘notes’ fields to:

  • Enrolment Keys
  • Systems
  • Unapproved Systems
  • Policies

Notes can hold up to 1024 characters of free text and as well as adding notes in the portal, you can of course also set notes via the API, just like any other field:

1
2
3
4
5
6
# Set a note describing why this policy was created and who requested it
$ curl --oauth2-bearer $token \
       -X PATCH
       -H 'Content-Type: application/json' \
       -d  '{"notes": "Some free text"}' \
       https://api.enclave.io/org/{orgId}/policies/{policyId}

API Docs Improvements

We’ve made some improvements to our API docs too, both to make them more consistent with the rest of our visual styling, but also to make it easier to interact with our APIs.

You can now authenticate with our API using your existing Enclave Portal account and try out the APIs using those credentials. You can still use a Personal Access Token to try the APIs if you wish.

Authenticating with Enclave Portal Login
Authenticating with Enclave Portal Login

The login you get only lasts a limited time, so if you get 401 responses after a while, just open the Authorize dialog to log out and back in again.

Windows Tray Information

We have introduced a minor update into the Enclave Tray application on Windows to make it easier to figure out why your Enclave instance may not be operational.

If you enrol a system via the Windows Tray application, but that system requires manual approval in the Enclave Portal, a warning will now be displayed, with a link to the portal.

Equally, if you remove a system from your account in the portal or via the API, this will be reflected in the tray of that system.

CLI Updates

We’ve made several updates to the Enclave CLI to make it easier to use Enclave:

Log File Info

The enclave status command now prints out the log file which Enclave is currently writing to.

enclave status
enclave status

Status Verb accepts –json argument

You can now pass --json to enclave status to collect status output in JSON.

enclave status --json
enclave status --json

Get-IP verb

We’ve added a new verb to the Enclave CLI, get-ip. This allows you to either get the Enclave IP of the local system (handy for configuring DNS nameservers), or to resolve the IP of a remote peer (by specifying the peer DNS name or system ID as an argument).

enclave get-ip
enclave get-ip

Enclave Restart

Last, but certainly not least, we’ve added the enclave restart verb, which is the equivalent of running enclave stop, then enclave start, but in a single command.

The restart verb also has more resilience in it to retry the start operation should the first attempt fail for any reason.

This means should you need to restart Enclave on a remote system when you’re connected in over RDP or SSH running over an Enclave tunnel, you have a predictable mechanism to restart the Enclave service without accidentally stopping the service and then losing the connection to the server which you would have used to restart it.

Support

If you have any questions/issues with the new features, please head over to our community forums at community.enclave.io or join us on Slack at https:/enclave.io/slack.

Happy networking!

Ready to try Enclave?

Create a Free Account

Request a Demo

Connect all of your computers, servers, cloud instances and containers across any infrastructure with secure private networks that just work. We'll show you how to use Enclave to:
  • Introduce a zero-trust network access model.
  • Avoid ACLs and VPNs to secure network access.
  • Leverage your firewalls to darken your network.
  • Protect against discovery, targeting and attack.
After completing this form, a member of our team will contact you to arrange a short product demo at a time of your choosing.

Request a Demo

Connect all of your computers, servers, cloud instances and containers across any infrastructure with secure private networks that just work. We'll show you how to use Enclave to:
  • Introduce a zero-trust network access model.
  • Avoid ACLs and VPNs to secure network access.
  • Leverage your firewalls to darken your network.
  • Protect against discovery, targeting and attack.
After completing this form, a member of our team will contact you to arrange a short product demo at a time of your choosing.