У меня есть экземпляр обратного прокси-сервера в GCP, у которого есть внешний IP-адрес, но за ним есть множество экземпляров бэкэнда, у которых нет внешних IP-адресов, но находятся в том же VPC. Идея состоит в том, чтобы уменьшить поверхность атаки только до обратного прокси; довольно стандартный материал.
У меня проблема в том, что по-прежнему полезно использовать ssh для внутренних экземпляров (для устранения неполадок или для целей развертывания. Я использую ansible). Есть ли способ создать сетевой интерфейс на моем локальном компьютере разработчика, который будет иметь прямой доступ к частным экземплярам (в будущем компьютер CI также будет нуждаться в доступе)? Другими словами, ssh'ing на внутренний ip. На данный момент мне нужно было назначить внешние эфемерные IP-адреса всем экземплярам, чтобы иметь возможность напрямую обращаться к ним с помощью ansible, но, как я уже сказал, для следующего уровня безопасности я хочу только предоставить обратный прокси-сервер для Интернет
Я бы предпочел избежать создания экземпляра точки перехода, поскольку создание туннелей ssh для возможности доступа к каждому экземпляру серверной части кажется беспорядком. Обычно это звучит как работа VPN, но я новичок в VPC и не знаю, есть ли другой способ справиться с этим требованием в VPC в целом или в GCP в частности. Какова стандартная практика для этого варианта использования?
Существует четыре распространенных метода подключения к экземплярам Google Cloud Compute Engine, у которых есть только частные IP-адреса. Этот список идет от простого к более сложному.
Способ 1. Используйте Google Cloud Console
Консоль Google Cloud поддерживает SSH для экземпляров Compute Engine. Перейдите в Compute Engine. Для каждого экземпляра есть кнопка SSH.
Метод 2: используйте интерфейс командной строки Google Cloud SDK
gcloud compute ssh user@INSTANCE_NAME
Примечание. Поддерживается только Linux. Не работает под Windows.
Метод 3: Хост OpenVPN Bastion
Установите OpenVPN на небольшой экземпляр Compute Engine и клиент на своем рабочем столе. Это мой предпочтительный метод, так как мои инструменты могут легко подключаться к VPC. OpenVPN бесплатен, но экземпляр - нет. Я использую экземпляр f1-micro, если мне не нужна высокопроизводительная сеть.
Метод 4: перенаправление удаленного порта SSH
Вы можете создать туннель SSH, который затем сможет подключаться к любому экземпляру в вашем VPC. В Интернете есть множество примеров. Для этого метода также требуется небольшой экземпляр Compute Engine, но вы можете заблокировать этот экземпляр, чтобы он принимал только SSH-трафик из вашей сети (блокировка IP или CIDR).
Метод 5: запуск туннеля IAP (прокси-сервер с идентификацией)
gcloud beta compute start-iap-tunnel <OPTIONS>
В этом методе используется технология, лежащая в основе методов №1 и №2. Этот метод создает туннель с использованием вычислительного экземпляра, управляемого Google Cloud. У этого метода есть ограничения (неопубликованные) на пропускную способность. Для трафика SSH это нормально.