Подключить профиль безопасности к виртуальному хосту
Способ подключения профиля безопасности зависит от того, кто управляет балансировщиком 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. Подробнее см. Назначение роли сервисному аккаунту.
Чтобы подключить профиль безопасности с помощью интерфейсов Yandex Cloud:
-
В консоли управления
выберите каталог, в котором находится нужный профиль безопасности. -
В списке сервисов выберите 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.
Воспользуйтесь методом REST API update для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Update сервиса Application Load Balancer.
Совет
Чтобы обеспечить доступность вашего сервиса при высоких нагрузках, рекомендуем настроить автомасштабирование L7-балансировщика.