Подключить профиль безопасности к виртуальному хосту
Способ подключения профиля безопасности зависит от того, кто управляет балансировщиком Yandex Application Load Balancer:
-
Если балансировщик управляется вами, то используйте интерфейсы Yandex Cloud.
-
Если балансировщик управляется Ingress-контроллером Application Load Balancer, используйте аннотацию ресурса Ingress.
Важно
Аннотация — единственный способ подключения профиля безопасности для Ingress-контроллера.
Если вы подключите профиль через интерфейсы Yandex Cloud и затем обновите ресурс Ingress, из-за отсутствия аннотации Ingress-контроллер отключит поддержку профиля безопасности.
О настройке Ingress-контроллера читайте в документации Yandex Managed Service for Kubernetes.
Примечание
Для подключения профиля безопасности к виртуальному хосту Application Load Balancer у сервисного аккаунта, от имени которого работает Ingress-контроллер, должна быть роль smart-web-security.editor на каталог, в котором размещены ресурсы Application Load Balancer и Smart Web Security. Подробнее см. Назначение роли сервисному аккаунту.
Чтобы подключить профиль безопасности к виртуальному хосту:
-
В консоли управления
выберите каталог, в котором находится нужный профиль безопасности. -
В списке сервисов выберите Smart Web Security.
-
Выберите профиль безопасности, который вы хотите подключить к виртуальному хосту сервиса Yandex Application Load Balancer.
-
Нажмите кнопку
Подключить к хосту и в открывшемся окне выберите:-
Виртуальный хост. Вы можете подключить профиль безопасности сразу к нескольким хостам.
Чтобы подключить профиль к еще одному L7-балансировщику, нажмите кнопку Добавить балансировщик.
-
Нажмите кнопку Подключить. Если выбранные хосты уже подключены к другому профилю безопасности, подтвердите подключение.
На вкладке Подключенные хосты появятся подключенные виртуальные хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Чтобы посмотреть список имеющихся профилей безопасности в каталоге по умолчанию, выполните команду:
yc smartwebsecurity security-profile list
Результат:
+----------------------+-------------------+---------------------+----------------+------------+-------------+ | ID | NAME | CREATED | DEFAULT ACTION | CAPTCHA ID | RULES COUNT | +----------------------+-------------------+---------------------+----------------+------------+-------------+ | fev3s055oq64******** | my-new-profile | 2024-08-05 06:57:18 | DENY | | 1 | | fevlqk8vei9p******** | my-sample-profile | 2024-08-05 06:57:28 | DENY | | 2 | +----------------------+-------------------+---------------------+----------------+------------+-------------+
-
Чтобы посмотреть список HTTP-роутеров в каталоге по умолчанию, выполните команду:
yc application-load-balancer http-router list
Результат:
+----------------------+-------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+-------------------+-------------+-------------+ | ds7e9te73uak******** | my-first-router | 1 | 1 | +----------------------+-------------------+-------------+-------------+
-
Чтобы посмотреть список виртуальных хостов выбранного HHTP-роутера, выполните команду:
yc application-load-balancer http-router get <имя_или_идентификатор_HTTP-роутера>
Результат:
id: ds7e9te73uak******** name: my-first-router folder_id: b1gt6g8ht345******** virtual_hosts: - name: test-virtual-host routes: - name: test-route http: match: path: prefix_match: / route: backend_group_id: ds7a4niks9qv******** timeout: 60s auto_host_rewrite: false route_options: {} created_at: "2024-08-05T08:34:03.973000654Z"
Имена виртуальных хостов указаны в параметре
virtual_hosts.name
. В примере выше только один виртуальный хост —test-virtual-host
. -
Чтобы подключить профиль безопасности к виртуальному хосту, выполните команду:
yc application-load-balancer virtual-host update <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --security-profile-id <идентификатор_профиля_безопасности>
Где:
<имя_виртуального_хоста>
— имя виртуального хоста, полученное на предыдущем шаге.--http-router-name
— имя HTTP-роутера. Обязательный параметр. Вместо имени HTTP-роутера вы можете передать его идентификатор в параметре--http-router-id
.--security-profile-id
— идентификатор профиля безопасности. Обязательный параметр.
Результат:
done (1s) name: test-virtual-host routes: - name: test-route http: match: path: prefix_match: / route: backend_group_id: ds7a4niks9qv******** timeout: 60s auto_host_rewrite: false route_options: security_profile_id: fev3s055oq64********
Подробнее о команде yc application-load-balancer virtual-host update
читайте в справочнике CLI.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Профиль безопасности Yandex Smart Web Security подключается к балансировщику Yandex Application Load Balancer в настройках виртуального хоста.
-
В конфигурационном файле Terraform для ресурса
yandex_alb_virtual_host
в блокeroute_options
укажите параметрsecurity_profile_id
— идентификатор профиля безопасности.resource "yandex_alb_virtual_host" "my-virtual-host" { name = "<имя_виртуального_хоста>" ... route_options { security_profile_id = "<идентификатор_профиля_безопасности>" } }
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
Проверить изменение ресурсов можно в консоли управления
yc alb http-router get <идентификатор_HTTP-роутера>
Воспользуйтесь методом REST API update для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Update сервиса Application Load Balancer.
Совет
Чтобы обеспечить доступность вашего сервиса при высоких нагрузках, рекомендуем настроить автомасштабирование L7-балансировщика.