---
id: "bastion-host"
type: "kind"
category: "security"
url: "https://localhost:3000/catalogue/kinds/bastion-host"
---

# Bastion host

A hardened jump host that brokers administrative sessions into a network.

| | |
|---|---|
| Category | Security |
| Properties | 6 |
| Components | 18 |
| Rules | 0 |

## Properties

| property | type | values | required | default |
|---|---|---|---|---|
| `justInTimeAccess` | boolean | — | no | false |
| `managed` | boolean | — | no | false |
| `mfaRequired` | boolean | — | no | — |
| `protocols` | enum | `ssh`, `rdp`, `both` | no | — |
| `publicIp` | boolean | — | no | — |
| `sessionRecording` | boolean | — | no | — |

## Rules for this kind · 0

No rule selects this kind or its category.

## Components · 18

### vendor-neutral

- [Generic bastion host](https://localhost:3000/catalogue/components/bastion-host.md) `bastion-host` — the kind itself

### alibabacloud

- [Bastionhost](https://localhost:3000/catalogue/components/alibaba-bastionhost.md) `alibaba-bastionhost` — 3 defaults

### aws

- [EC2 Instance Connect Endpoint](https://localhost:3000/catalogue/components/aws-ec2-instance-connect-endpoint.md) `aws-ec2-instance-connect-endpoint` — 3 defaults
- [AWS Systems Manager Session Manager](https://localhost:3000/catalogue/components/aws-ssm-session-manager.md) `aws-ssm-session-manager` — 4 defaults
- [AWS Verified Access](https://localhost:3000/catalogue/components/aws-verified-access.md) `aws-verified-access` — 2 defaults

### azure

- [Azure Bastion](https://localhost:3000/catalogue/components/azure-bastion.md) `azure-bastion` — 5 defaults
- [Microsoft Entra Private Access](https://localhost:3000/catalogue/components/azure-entra-private-access.md) `azure-entra-private-access` — 1 defaults

### cloudflare

- [Cloudflare Access](https://localhost:3000/catalogue/components/cloudflare-access.md) `cloudflare-access` — 4 defaults
- [Cloudflare One RDP](https://localhost:3000/catalogue/components/cloudflare-rdp.md) `cloudflare-rdp` — 4 defaults

### default

- [HashiCorp Boundary](https://localhost:3000/catalogue/components/boundary.md) `boundary` — 4 defaults
- [ContainerSSH](https://localhost:3000/catalogue/components/containerssh.md) `containerssh` — 5 defaults
- [Paralus](https://localhost:3000/catalogue/components/paralus.md) `paralus` — 4 defaults
- [Pomerium](https://localhost:3000/catalogue/components/pomerium.md) `pomerium` — 2 defaults
- [OpenSSH jump host](https://localhost:3000/catalogue/components/ssh-jump-host.md) `ssh-jump-host` — 5 defaults
- [Teleport](https://localhost:3000/catalogue/components/teleport.md) `teleport` — 5 defaults

### gcp

- [Chrome Enterprise Premium](https://localhost:3000/catalogue/components/google-chrome-enterprise-premium.md) `google-chrome-enterprise-premium` — 1 defaults
- [Identity-Aware Proxy](https://localhost:3000/catalogue/components/google-identity-aware-proxy.md) `google-identity-aware-proxy` — 2 defaults

### oci

- [Bastion](https://localhost:3000/catalogue/components/oci-bastion.md) `oci-bastion` — 3 defaults

## Source (`kind` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../schema/kind.schema.json
# Holds the session and protocol properties access rules read, which app-server has none of. sessionRecording, mfaRequired and publicIp have no default so an unaudited or exposed jump host is catchable.
schemaVersion: "1"
type: "kind"
id: "bastion-host"
category: "security"
properties:
  protocols:
    type: "enum"
    values: ["ssh", "rdp", "both"]
  sessionRecording:
    type: "boolean"
  mfaRequired:
    type: "boolean"
  publicIp:
    type: "boolean"
  justInTimeAccess:
    type: "boolean"
    default: false
  managed:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/kinds/bastion-host
