Подключить профиль безопасности к ресурсу
Подключить к виртуальному хосту
Способ подключения профиля безопасности зависит от того, кто управляет балансировщиком Yandex Application Load Balancer:
-
Если балансировщик управляется вами, то используйте интерфейсы Yandex Cloud.
-
Если балансировщик управляется Ingress-контроллером Application Load Balancer, используйте аннотацию ресурса Ingress.
Важно
Аннотация — единственный способ подключения профиля безопасности для Ingress-контроллера.
Если вы подключите профиль через интерфейсы Yandex Cloud и затем обновите ресурс Ingress, из-за отсутствия аннотации Ingress-контроллер отключит поддержку профиля безопасности.
О настройке Ingress-контроллера читайте в документации Yandex Managed Service for Kubernetes.
Совет
Вместо Ingress-контроллера Application Load Balancer рекомендуется использовать новый контроллер Yandex Cloud Gwin.
Примечание
Для подключения профиля безопасности к виртуальному хосту Application Load Balancer у сервисного аккаунта, от имени которого работает Ingress-контроллер, должна быть роль smart-web-security.editor на каталог, в котором размещены ресурсы Application Load Balancer и Smart Web Security. Подробнее см. Назначение роли сервисному аккаунту.
Для работы с профилем безопасности, который подключается к балансировщику, потребуется сервисный аккаунт с ролями monitoring.editor, smart-web-security.admin, certificate-manager.admin и logging.writer. Подробнее см. Назначение роли сервисному аккаунту.
Чтобы подключить профиль безопасности к виртуальному хосту:
-
В консоли управления
выберите каталог, в котором находится нужный профиль безопасности. -
В списке сервисов выберите Smart Web Security.
-
Выберите профиль безопасности, который вы хотите подключить к виртуальному хосту сервиса Yandex Application Load Balancer.
-
Нажмите кнопку
Подключить к хосту и в открывшемся окне выберите:-
Виртуальный хост. Вы можете подключить профиль безопасности сразу к нескольким хостам.
Чтобы подключить профиль к еще одному L7-балансировщику, нажмите кнопку Добавить балансировщик.
-
Нажмите кнопку Подключить. Если выбранные хосты уже подключены к другому профилю безопасности, подтвердите подключение.
На вкладке Подключенные хосты появятся подключенные виртуальные хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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-балансировщика.
Профиль безопасности подключается к определенному виртуальному хосту L7-балансировщика, при этом анализируется весь трафик, поступающий на хост. Если трафик к некоторым маршрутам хоста анализировать не требуется, отключите профиль безопасности от этого маршрута. Это можно сделать при добавлении или изменении маршрута через CLI, API или Terraform с помощью параметра --disable-security-profile (disableSecurityProfile).
При добавлении маршрутов учитывайте их порядок: запрос будет направлен по первому маршруту, предикату которого он соответствует. Наиболее специфичные маршруты располагайте первыми в списке. Иначе общий маршрут может перехватить запросы и специфичные правила не будут применяться.
Подключить к домену
- В консоли управления
выберите каталог, в котором находится нужный профиль безопасности. - В списке сервисов выберите Smart Web Security.
- Выберите раздел Защита доменов → Домены.
- Выберите домен.
- Нажмите Подключить профиль безопасности и выберите профиль.
Подключить к API-шлюзу
- В консоли управления
выберите каталог, в котором находится нужный профиль безопасности. - В списке сервисов выберите Smart Web Security.
- Скопируйте идентификатор нужного профиля.
- В списке сервисов выберите API Gateway.
- При создании API-шлюза или в спецификации уже созданного API-шлюза задайте расширение x-yc-apigateway:smartWebSecurity.
- Укажите в расширении скопированный идентификатор.