Вопрос или проблема
У меня есть сервер Windows, который находится в VPC без доступа в интернет. Но у него есть VPC конечные точки для SSM, ec2messages, ssmmessages и ec2 api.
Когда я пытаюсь подключить его к домену, используя ssm api,
aws ssm create-association --instance-id <id> --name <ssm document>
процесс завершается с ошибкой.
1 из 1 плагинов обработано, 0 успешно, 1 с ошибкой, 0 таймаутов, 0 пропущено. Операция aws:domainJoin не удалась, так как не удалось создать учетную запись домена для компьютера 'Servername', Сообщение=Было выброшено исключение WebException со статусом ConnectFailure, ErrorCode=, ErrorType=Sender, StatusCode=0 Amazon.Runtime.AmazonServiceException: Бросается исключение WebException со статусом ConnectFailure. ---> System.Net.WebException: Не удается подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: Ошибка подключения --вывод усечен--
Этот сервер имеет соединение с AD. На самом деле, если я пробую подключить его к домену вручную, это тоже работает.
С другой стороны, у меня есть другой сервер, который может подключиться к тому же домену. Единственное отличие в том, что у него есть подключение к интернету. Но так как у нового сервера также есть конечная точка SSM, я не понимаю, почему это происходит. Роли IAM тоже точно такие же. Буду признателен за любую помощь.
Публикую ответ здесь, на случай, если кто-то столкнется с этой проблемой.
Присоединение к домену также требует подключения к конечной точке службы каталога (ds..amazonaws.com), и на данный момент для этой службы нет конечной точки VPC. Это означает, что если у сервера нет исходящего интернет-доступа, присоединение к домену с использованием SSM невозможно.
Необходимо создать конечную точку VPC для конечной точки службы каталога. Найдите ds
в разделе Services в мастере создания конечной точки VPC. Она появится как com.amazonaws.<region>.ds
Конечная точка доступна только в виде интерфейса. Ей потребуется группа безопасности. Это можно настроить следующим образом:
- Входящий трафик HTTPS/443 из VPC_CIDR
- Исходящий трафик HTTPS/443 в VPC_CIDR
Ответ или решение
Когда возникает необходимость присоединения Windows-сервера в Amazon EC2 к управляемому AWS Active Directory, могут возникнуть определенные сложности, особенно если ваш сервер размещен в виртуальной частной сети (VPC) без доступа к интернету. Однако в вашем случае, вы уже предприняли некоторые шаги для обеспечения связи, такие как настройка VPC endpoints для служб SSM (AWS Systems Manager), ec2messages, ssmmessages и ec2 API.
Теория
AWS Managed Microsoft AD представляет собой служебный каталог, полностью совместимый с локальной службой Microsoft Active Directory. Он облегчает управление доменными подключениями и предоставляет различные функции Active Directory в облаке. Однако, чтобы Windows-сервер в AWS мог успешно подключиться к этому управляемому каталогу без прямого интернет-доступа, требуется обеспечение определённой сетевой архитектуры, позволяющей установление соединений с необходимыми сервисами.
При использовании SSM для автоматизации процесса присоединения к домену часто возникают ошибки, такие как «ConnectFailure» или проблемы с созданием учётной записи компьютера в домене. Это связано с тем, что SSM, взаимодействуя с AD, также нуждается в доступе к определённым сервисам, таким как AWS Directory Service через специфические точки подключения.
Пример
Как вы уже упоминали, если попытаться вручную подключить сервер к домену, это работает, что свидетельствует о базовой сетевой связности с AD. Однако, когда автоматизация через SSM терпит неудачу, следует учитывать требования для доступа к определённым API и сервисам AWS, которые необходимы для выполнения полного цикла доменного присоединения.
На практике это означает, что вам необходимо правильно настроить интерфейсные VPC endpoints. В частности, необходимо добавить VPC endpoint для службы Directory Service (ds.amazonaws.com), так как без этого server не сможет выполнить все необходимые вызовы API для успешного присоединения к домену через SSM.
Применение
Для решения проблемы вам необходимо выполнить следующие шаги:
-
Создание VPC Endpoint для Directory Service:
- Перейдите в консоль Amazon VPC.
- Выберите «Endpoints» и нажмите «Create Endpoint».
- В разделе «Service Name» введите
ds
и выберитеcom.amazonaws.<регион>.ds
. - Выберите тип интерфейса, так как endpoint Directory Service доступен только в этом виде.
-
Настройка правил безопасности:
- Убедитесь, что endpoint защищен соответствующей группой безопасности.
- Настройте входящие и исходящие правила:
- Входящие: Разрешите HTTPS (443) от вашего VPC CIDR.
- Исходящие: Разрешите HTTPS (443) к вашему VPC CIDR.
-
Проверка IAM роли:
- Убедитесь, что IAM роль, связанная с EC2-инстансом, имеет все необходимые разрешения для взаимодействия с SSM и Directory Service.
-
Использование AWS CLI и SSM API:
- Теперь снова попробуйте выполнить команду
aws ssm create-association
для доменного присоединения. Убедитесь в правильности указания инстанса и документа SSM.
- Теперь снова попробуйте выполнить команду
Убедившись в наличии всех перечисленных шагов, ваш сервер должен успешно подключиться к AWS Managed AD без необходимости в непосредственном интернет-доступе. Это настройка позволяет использовать встроенные сетевые возможности AWS для обеспечения безопасности и доступности всех необходимых компонентов и сервисов, требуемых для бесперебойного функционирования доменных присоединений.
Заключение
Решение задач в сложных распределенных сетевых системах требует глубинного понимания взаимодействий между различными компонентами инфраструктуры. В ситуациях, подобных описанной, важно обеспечить, чтобы каждый необходимый сервис был доступен через интерфейсы VPC endpoints, особенно когда решение предполагает безинтернетный доступ. Такое решение не только повышает безопасность, но и позволяет достичь высокой степени автоматизации и отказоустойчивости операций в облачной среде AWS.