INTEGRITY Документация

Добавьте инфраструктурное приложение

Доступность функций

Режимы клиента планы Zero Trust
  • Режим трафика и DNS
  • Режим только трафика
Все тарифы
Система Доступность
Windows
macOS
Linux
iOS
Android
ChromeOS

Access for Infrastructure обеспечивает детальный контроль над тем, как пользователи получают доступ к отдельным серверам, кластерам или базам данных. Добавив инфраструктурное приложение в Cloudflare Access, вы можете настроить способ аутентификации пользователей для ресурса, а также контролировать и разрешать порты, протоколы и имена пользователей, с которыми они могут подключаться. Журналы доступа и команд обеспечивают соответствие нормативным требованиям и позволяют проводить аудит действий пользователей в случае нарушения безопасности.

Предварительные требования

1. Добавьте целевой объект

Цель представляет собой отдельный ресурс вашей инфраструктуры (например, сервер, кластер Kubernetes, базу данных или контейнер), к которому пользователи будут подключаться через Cloudflare.

Цели не зависят от протокола: не нужно определять отдельную цель для каждого протокола, работающего на сервере. Чтобы создать новую цель:

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Контроль доступа > Цели.
  2. Выберите Добавьте цель.
  3. В Имя хоста цели, введите понятное для пользователя имя для цель. Рекомендуем использовать имя хоста сервера, например production-server. Имя хоста цели не обязательно должно быть уникальным: его можно использовать повторно для нескольких целей. Имена хостов используются для определения целей, защищённых приложением Access; они не используются для разрешения DNS-адресов.

    Ограничения формата имени хоста

    • Без учёта регистра
    • Содержать не более 253 символов
    • Содержать только буквенно-цифровые символы, -, или . (пробелы не допускаются)
    • Начинаться и заканчиваться буквенно-цифровым символом
  4. В IP-адреса, введите IPv4- и (или) IPv6-адрес целевого ресурса. Раскрывающееся меню не заполнится, пока вы не введете полный IP-адрес.
  1. В раскрывающемся меню выберите IP-адрес и виртуальная сеть где расположен ресурс. Эта пара из IP-адреса и виртуальной сети теперь назначена этой цели и по замыслу не может быть повторно использована для другой цели.
  2. Выберите Добавить целевой объект.

Сделайте POST запрос к Целевые объекты Infrastructure Access конечная точка:

Создать новую цель
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/infrastructure/targets" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"hostname": "infra-access-target",
		"ip": {
				"ipv4": {
						"ip_addr": "187.26.29.249",
						"virtual_network_id": "c77b744e-acc8-428f-9257-6878c046ed55"
				},
				"ipv6": {
						"ip_addr": "64c0:64e8:f0b4:8dbf:7104:72b0:ec8f:f5e0",
						"virtual_network_id": "c77b744e-acc8-428f-9257-6878c046ed55"
				}
		}
	}'
  1. Добавьте следующее разрешение в свой cloudflare_api_token:

    • Zero Trust Write
  2. Настройте cloudflare_zero_trust_infrastructure_access_target ресурс:

    resource "cloudflare_zero_trust_infrastructure_access_target" "infra-ssh-target" {
    	account_id = var.cloudflare_account_id
    		hostname   = "infra-access-target"
    		ip = {
    			ipv4 = {
    				ip_addr = "187.26.29.249"
    				virtual_network_id = "c77b744e-acc8-428f-9257-6878c046ed55"
    			}
    			ipv6 = {
    				ip_addr = "64c0:64e8:f0b4:8dbf:7104:72b0:ec8f:f5e0"
    				virtual_network_id = "c77b744e-acc8-428f-9257-6878c046ed55"
    			}
    		}
    }

Далее создайте приложение Access, чтобы защитить целевой ресурс.

2. Добавьте инфраструктурное приложение

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Контроль доступа > Приложения.

  2. Выберите Создать новое приложение.

  3. Выберите Infrastructure.

  4. Введите любое имя для приложения.

  5. В Критерии цели, выберите имена хостов цели, которые вы хотите защитить. Это определение приложения будет применяться ко всем целям с выбранным именем хоста, включая цели, добавленные в будущем. Аналогично, если впоследствии вы решите изменить имя хоста для цели, переименованная цель больше не будет попадать под действие этого приложения.

  6. Введите Протокол и Порт который будет использоваться для подключения к серверу.

  7. (Необязательно) Если протокол работает на нескольких портах, выберите Добавить новые критерии цели и перенастройте то же имя целевого хоста и протокол с другим номером порта.

  8. Выберите Далее.

  9. Чтобы защитить свои цели, настройте политику, определяющую, кто может подключаться и каким образом:

    1. Введите любое имя для вашей политики.

    2. Создайте правило, которое соответствует пользователям, которым разрешён доступ к целям. Дополнительную информацию см. в Политики доступа и просмотрите список селекторы инфраструктурных политик.

    3. В Контекст подключения, настройте следующие параметры:

      • Пользователь SSH: Введите имена пользователей UNIX, под которыми пользователи могут входить в систему (например, root или ec2-user).
      • Разрешить пользователям входить под алиасом электронной почты: (Необязательно) Если этот параметр включён, пользователи, соответствующие определению вашей политики, смогут получать доступ к цели, используя префикс своего адреса электронной почты в нижнем регистре. Например, [email protected] могла войти в систему как jdoe.
  10. Выберите Добавить приложение.

Сделайте POST запрос к Приложения Access конечная точка:

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • Access: Apps and Policies Write
Добавьте приложение Access
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "Example infrastructure app",
		"type": "infrastructure",
		"target_criteria": [
				{
						"target_attributes": {
								"hostname": [
										"infra-access-target"
								]
						},
						"port": 22,
						"protocol": "SSH"
				}
		],
		"policies": [
				{
						"name": "Allow a specific email",
						"decision": "allow",
						"include": [
								{
										"email": {
												"email": "[email protected]"
										}
								}
						],
						"connection_rules": {
								"ssh": {
										"usernames": [
												"root",
												"ec2-user"
										]
								}
						}
				}
		]
	}'
  1. Добавьте следующее разрешение в свой cloudflare_api_token:

    • Access: Apps and Policies Write
  2. Используйте cloudflare_zero_trust_access_application ресурс, чтобы создать инфраструктурное приложение:

    resource "cloudflare_zero_trust_access_application" "infra-app" {
    	account_id = var.cloudflare_account_id
    	name       = "Example infrastructure app"
    	type       = "infrastructure"
    
    	target_criteria {
    		port     = 22
    		protocol = "SSH"
    		target_attributes {
    			name = "hostname"
    			values = ["infra-access-target"]
    		}
    	}
    }
  3. Используйте cloudflare_zero_trust_access_policy ресурс, чтобы добавить в приложение инфраструктурную политику:

    resource "cloudflare_zero_trust_access_policy" "infra-app-policy" {
    	application_id = cloudflare_zero_trust_access_application.infra-app.id
    	account_id = var.cloudflare_account_id
    	name       = "Allow a specific email"
    	decision   = "allow"
    	precedence = 1
    
    	include {
    		email = ["[email protected]"]
    	}
    
    	connection_rules {
    		ssh {
    			usernames = ["root", "ec2-user"]
    		}
    	}
    }

Теперь цели в этом приложении защищены вашими политиками инфраструктуры.

По умолчанию Cloudflare оценивает политики приложений Access только после оценки всех Политики Network Gateway. Чтобы оценивать приложения Access до или после определенных политик Gateway:

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Политики трафика > Политики Firewall. В Сеть, создать политику Network со следующей конфигурацией:

    Селектор Оператор Значение Действие
    Access Infrastructure Target является Present Allow
  2. Обновите в политике порядок приоритета с помощью панели управления или API.

Эта политика Gateway будет применяться ко всем целям Access for Infrastructure, включая RDP и SSH.

4. (Необязательно) Требуйте независимую MFA

Перед подключением по SSH можно потребовать от пользователей отдельную MFA. Конфигурация приложения определяет, какие инфраструктурные аутентификаторы поддерживаются: ключ PIV (piv_key), ключ FIDO2 (ssh_fido2_key), или оба варианта.

Настройки на уровне приложения определяют аутентификаторы и длительность сеанса по умолчанию. Политика может задавать собственные настройки для конкретных пользователей или имён пользователей.

Инструкции по настройке см. в Принудительно применять MFA для инфраструктурных приложений.

5. Настройте сервер

Для некоторых протоколов необходимо настроить сервер так, чтобы он доверял подключениям через Access for Infrastructure. Подробнее см. в руководстве для соответствующего протокола:

Для SSH это включает доверие к Cloudflare SSH CA и, если ваш сервер ограничивает участников сертификата (principals), авторизация имён пользователей SSH которые вы настроили в целевом объекте.

6. Подключитесь как пользователь

Пользователи подключаются к IP-адресу целевого узла с помощью предпочитаемого клиентского ПО. Пользователь должен быть авторизован в Cloudflare One Client на своём устройстве, но никакой другой настройки системы не требуется. При желании вы можете настроить частный DNS-резолвер чтобы разрешить подключения к приватному имени хоста цели.

Подключение к другой сети VNET

Чтобы подключаться к целевым объектам, находящимся в разных VNET, пользователям потребуется переключить подключённую виртуальную сеть в Cloudflare One Client.

Отображает доступные цели

Доступность функций

Система Доступность Минимальная версия клиента
Windows 2024.9.346.0
macOS 2024.9.346.0
Linux 2024.9.346.0
iOS
Android
ChromeOS

Пользователи могут использовать warp-cli чтобы отобразить список целевых объектов, к которым у них есть доступ. На устройстве откройте терминал и выполните следующую команду:

warp-cli target list
╭──────────────────────────────────────┬──────────┬───────┬───────────────────────┬──────────────────────┬────────────╮
│ Target ID                            │ Protocol │ Port  │ Attributes            │ IP (Virtual Network) │ Usernames  │
├──────────────────────────────────────┼──────────┼───────┼───────────────────────┼──────────────────────┼────────────┤
│ 0193f22a-9df3-78e3-b5bb-7ab631903306 │ SSH      │ 22    │ hostname: do-target   │ 10.116.0.3 (a1net)   │ alice      │
├──────────────────────────────────────┼──────────┼───────┼───────────────────────┼──────────────────────┼────────────┤
│ 0193f22a-9df3-78e3-b5bb-7ab631903306 │ SSH      │ 23    │ hostname: do-target   │ 10.116.0.3 (a1net)   │ root       │
├──────────────────────────────────────┼──────────┼───────┼───────────────────────┼──────────────────────┼────────────┤
│ 01943cff-6130-7989-8bff-cbc02b59a2b1 │ SSH      │ 80    │ hostname: az-target   │ 172.16.0.0 (b1net)   │ alice, bob │
╰──────────────────────────────────────┴──────────┴───────┴───────────────────────┴──────────────────────┴────────────╯

При желании можно добавить флаги для фильтрации вывода. Например:

warp-cli target list --attribute hostname=do-target --username root

Чтобы просмотреть все доступные фильтры, введите warp-cli target list --help.

Отозвать сессию пользователя

Чтобы отозвать доступ пользователя ко всем целям инфраструктуры, можно либо Отозвать доступ пользователя в Zero Trust или отозвать их устройство. Cloudflare пока не поддерживает отзыв сессии пользователя для конкретной цели.

Подробные разрешения на целевые объекты

Infrastructure Access поддерживает детализированные права на чтение через Управление доступом на основе ролей (RBAC) от Cloudflare. Администраторы могут назначать роли только для чтения, ограниченные конкретными целевыми объектами, вместо предоставления доступа на уровне всего аккаунта. Когда пользователь с ограниченной ролью обращается к API списка целевых объектов, ответ автоматически фильтруется и включает только те объекты, которые ему разрешено просматривать.

Это полезно организациям, которые хотят дать командам видимость их собственных целей инфраструктуры, не раскрывая при этом полный перечень целей.

Селекторы политик Infrastructure

Следующие Селекторы политик Access доступны для защиты инфраструктурных приложений: