Editing basic settings of a security profile
-
In the management console
, select the folder containing the security profile. -
Navigate
to Smart Web Security. -
In the left-hand panel, select
Security profiles. -
Open the required profile.
-
Click Edit.
-
In the window that opens, edit the following parameters:
- Name.
- Description.
- Labels. To add a new label, click Add label.
- Action for the default base rule:
DenyorAllow. - ARL profile: Select or create an ARL profile.
- Select or create a SmartCaptcha to verify suspicious requests.
-
Optionally, select or create a response template that will be returned to the client whenever any rule triggers in the profile. The standard Yandex Cloud template is used by default.
-
Optionally, configure the Analyze request body (maximum size: 8 KB) option by selecting an action after the maximum size is exceeded:
Do not analyze bodyBlock request
-
The protection mode determines which profile rules apply to traffic. For each rule, you need to select the modes it will apply in. By default, rules apply in all modes.
Modes in ascending order of protection:
- Normal: Rules for standard load.
- Elevated protection: Rules for suspicious increase in load.
- Under attack: Rules for an attack or critical load.
Under Protection mode, select how to switch between protection modes:
-
Automatic: The service will select a mode based on the incoming load.
The mode used by default is Normal. For the Elevated protection and Under attack modes, configure the following:
- Activation threshold: In the Activation threshold field, specify the number of incoming requests and select the counting interval. The mode will get activated if the number of requests during this interval exceeds the threshold.
- Mode retention time: In the Keep the mode after the load decreases field, specify the delay before going back to normal mode after the load falls below the threshold. This helps avoid frequent mode changes during load fluctuations.
To set thresholds:
- Analyze your typical traffic peaks on the Inbound total RPS chart which plots incoming requests per second. Select an attack-free period that includes weekdays, weekends, and peak hours. Allow for expected traffic growth, e.g., during promo campaigns.
- For the Elevated protection mode, set a threshold above normal peaks with a margin for acceptable spikes.
- For the Under attack mode, set a higher threshold but keep it below the load level where the application starts to slow down or throw errors. Find this level based on the application metrics or load testing results.
-
Manual: Select the preferred mode. It will remain active regardless of the load until you select a different mode or enable automatic management.
-
Enable or disable the use of HTTP request info to improve your machine learning models under Fine-tuning ML models.
-
Click Save.
If you do not have the Yandex Cloud CLI yet, install and initialize it.
The folder used by default is the one specified when creating the CLI profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also specify a different folder for any command using --folder-name or --folder-id.
If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.
-
View the description of the CLI command for editing security profile basic settings:
yc smartwebsecurity security-profile update --help -
To view a list of current security profiles in the default folder, run this command:
yc smartwebsecurity security-profile listResult:
+----------------------+-------------------+---------------------+----------------+------------+-------------+ | 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 | +----------------------+-------------------+---------------------+----------------+------------+-------------+ -
To edit basic settings of a security profile, run this command:
yc smartwebsecurity security-profile update \ --name <security_profile_name> \ --new-name <new_security_profile_name> \ --description "<profile_description>" \ --labels <label_1_key>=<label_1_value>,<label_2_key>=<label_2_value>,...,<label_n_key>=<label_n_value> \ --default-action <action> \ --captcha-id <captcha_ID> \ --security-rules-file <path_to_file_with_security_rules>Where:
-
--name: Security profile name. This is a required setting. Instead of the security profile name, you can provide its ID in the--idparameter. -
--new-name: New name for the security profile. Skip it if the profile name remains unchanged. -
--description: Text description of the security profile. This is an optional setting. -
--labels: List of labels to add to the profile inKEY=VALUEformat. This is an optional setting. For example,--labels foo=baz,bar=baz. -
--default-action: Action to apply to traffic that does not match any other rule. This is an optional setting. The default value isallow, which allows all requests to Yandex Smart Web Security. To block requests, set the parameter todeny. -
--captcha-id: ID of the CAPTCHA in SmartCaptcha to verify suspicious requests. This is an optional setting. -
--security-rules-file: Path to the YAML file with security rule description. This is an optional setting. Here is an example:security-rules.yaml
- name: rule-condition-deny description: My first security rule. This rule it's just example to show possibilities of configuration. priority: "11111" dry_run: true rule_condition: action: DENY condition: authority: authorities: - exact_match: example.com - exact_match: example.net http_method: http_methods: - exact_match: GET - exact_match: POST request_uri: path: prefix_match: /search queries: - key: firstname value: pire_regex_match: .ivan. - key: lastname value: pire_regex_not_match: .petr. headers: - name: User-Agent value: pire_regex_match: .curl. - name: Referer value: pire_regex_not_match: .bot. source_ip: ip_ranges_match: ip_ranges: - 1.2.33.44 - 2.3.4.56 ip_ranges_not_match: ip_ranges: - 8.8.0.0/16 - 10::1234:1abc:1/64 geo_ip_match: locations: - ru - es geo_ip_not_match: locations: - us - fm - gb - name: rule-condition-allow description: Let's show how to whitelist IP. priority: "2" rule_condition: action: ALLOW condition: source_ip: ip_ranges_match: ip_ranges: - 44.44.44.44-44.44.44.45 - 44.44.44.77 - name: smart-protection-full description: Enable smart protection. Allow to show captcha on /search prefix. priority: "11" smart_protection: mode: FULL condition: request_uri: path: prefix_match: /search - name: smart-protection-api description: Enable smart protection with mode API. We are not expect to see captcha on /api prefix. priority: "10" smart_protection: mode: API condition: request_uri: path: prefix_match: /apiWhere
priorityis the rule priority.
Result:
id: fev6q4qqnn2q******** folder_id: b1g07hj5r6i******** cloud_id: b1gia87mbaom******** name: my-sample-profile new-name: my-update-profile description: "my update description" labels: label1=value1,label2=value2 default_action: DENY created_at: "2024-07-25T19:21:05.039610Z" -
For more information about the yc smartwebsecurity security-profile update command, see the CLI reference.
With Terraform
Terraform is distributed under the Business Source License
For more information about the provider resources, see the guides on the Terraform
If you do not have Terraform yet, install it and configure the Yandex Cloud provider.
To manage infrastructure using Terraform under a service account or user accounts (a Yandex account, a federated account, or a local user), authenticate using the appropriate method.
To update the settings of a Yandex Smart Web Security profile created with Terraform:
-
Open the Terraform configuration file and edit the fragment describing the profile.
Example of a security profile description in the Terraform configuration
resource "yandex_sws_security_profile" "demo-profile-simple" { name = "<security_profile_name>" default_action = "DENY" captcha_id = "<captcha_ID>" advanced_rate_limiter_profile_id = "<ARL_profile_ID>" # Smart Protection rule security_rule { name = "smart-protection" priority = 99999 smart_protection { mode = "API" } } #Basic rule security_rule { name = "base-rule-geo" priority = 100000 rule_condition { action = "ALLOW" condition { source_ip { geo_ip_match { locations = ["ru", "kz"] } } } } } # WAF profile rule security_rule { name = "waf" priority = 88888 waf { mode = "API" waf_profile_id = "<WAF_profile_ID>" } } }For more on the properties of the
yandex_sws_security_profileresource, see this provider guide. -
Apply the changes:
-
In the terminal, navigate to the configuration file directory.
-
Make sure the configuration is correct using this command:
terraform validateIf the configuration is valid, you will get this message:
Success! The configuration is valid. -
Run this command:
terraform planYou will see a list of resources and their properties. No changes will be made at this step. Terraform will show any errors in the configuration.
-
Apply the configuration changes:
terraform apply -
Type
yesand press Enter to confirm the changes.
-
You can check the update using the management console
yc smartwebsecurity security-profile get <security_profile_ID>
Use the update REST API method for the SecurityProfile resource or the SecurityProfileService/Update gRPC API call.