[Yandex Cloud documentation](../../index.md) > [Yandex Smart Web Security](../index.md) > [Step-by-step guides](index.md) > ARL profiles > Creating a profile

# Creating an ARL profile

{% list tabs group=instructions %}

- Management console {#console}

  1. In the [management console](https://console.yandex.cloud), select the [folder](../../resource-manager/concepts/resources-hierarchy.md#folder) where you want to create an [ARL profile](../concepts/arl.md).
  1. Navigate to **Smart Web Security**.
  1. In the left-hand panel, select ![image](../../_assets/smartwebsecurity/arl.svg) **ARL profiles** and click **Create ARL profile**.
  1. Name the profile.
  1. Optionally, provide a description.
  1. Optionally, add [labels](../../resource-manager/concepts/labels.md) to your profile.
  1. Optionally, select or [create](template-create.md) 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.
  1. Select or [create](template-create.md) 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.
  1. [Add](arl-rule-add.md) ARL rules.
  1. Click **Create**.

- Terraform {#tf}

  With [Terraform](https://www.terraform.io/), you can quickly create a cloud infrastructure in Yandex Cloud and manage it using configuration files. These files store the infrastructure description written in HashiCorp Configuration Language (HCL). If you change the configuration files, Terraform automatically detects which part of your configuration is already deployed, and what should be added or removed.
  
  Terraform is distributed under the [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE). The [Yandex Cloud provider for Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) is distributed under the [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/) license.
  
  For more information about the provider resources, see the guides on the [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) website or [its mirror](../../terraform/index.md).

  If you do not have Terraform yet, [install it and configure the Yandex Cloud provider](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  To manage infrastructure using Terraform under a service account or user accounts (a Yandex account, a federated account, or a local user), [authenticate](../../terraform/authentication.md) using the appropriate method.

  To create an [ARL profile](../concepts/arl.md):

  1. In the Terraform configuration file, describe the resources you want to create:

      ```hcl
      # ARL profile

      resource "yandex_sws_advanced_rate_limiter_profile" "arl-profile" {
        name        = "<profile_name>"
        description = "<profile_description>"

        # Rule 1

        advanced_rate_limiter_rule {
          name        = "<rule_name>"
          priority    = <rule_priority>
          description = "<rule_description>"
          dry_run     = true

          static_quota {
            action = "DENY"
            limit  = <rule_limit>
            period = <rule_period>
            condition {
              request_uri {
                path {
                  exact_match = "/api"
                }
              }
            }
          }
        }
      }
      ```

      Where:
      * `name`: ARL profile name.
      * `description`: ARL profile description. This is an optional setting.
      * `labels`: ARL profile [labels](../../resource-manager/concepts/labels.md). This is an optional setting.
      * `advanced_rate_limiter_rule`: Rule section.
        * `name`: Rule name.
        * `priority`: Rule priority, a unique number from `1` to `999999`. Rules with smaller numerical values apply first.
        * `description`: Rule description. This is an optional setting.
        * `dry_run`: Dry run flag. Set it to `true` to test the rule and estimate the load on your web service. Requests will not be blocked in this mode. However, the system will log triggered rules. This is an optional setting.
        * `static_quota`: Request count mode where each request is counted individually without grouping. You can only specify either `static_quota` or `dynamic_quota`.
          * `action`: Action if the limit is exceeded. Always set it to `DENY`.
          * `limit`: Maximum number of allowed requests per period.
          * `period`: Time period in seconds during which the limit applies.
          * `condition`: [Condition](../concepts/conditions.md) for applying the rule. This is an optional setting. For more on conditions, see the `advanced_rate_limiter_rule.static_quota.condition` description in [this provider guide](../../terraform/resources/sws_advanced_rate_limiter_profile.md).
        * `dynamic_quota`: Request count mode where groups of requests sharing one or more properties are counted. You can only specify one section, either `static_quota` or `dynamic_quota`.
          * `action`: Action if the limit is exceeded. Always set it to `DENY`.
          * `limit`: Maximum number of allowed requests per period.
          * `period`: Time period in seconds during which the limit applies.
          * `condition`: Condition for applying the rule. This is an optional setting. For more on conditions, see the `advanced_rate_limiter_rule.dynamic_quota.condition` description in [this provider guide](../../terraform/resources/sws_advanced_rate_limiter_profile.md).
          * `characteristic`: Description of properties to group requests by. You can only specify either `simple_characteristic` or `key_characteristic`.
            * `case_insensitive`: Case insensitive, if `true`, or sensitive, if `false`.
            * `key_characteristic`: Section of parameters requiring a key (string) to group requests by.
              * `type`: Grouping type. The possible values are `COOKIE_KEY`, `HEADER_KEY`, and `QUERY_KEY`.
              * `value`: Key value (string) to group requests by.
            *  `simple_characteristic`: Section with parameters for autogrouping, i.e., requests are automatically grouped by the specified parameter.
               *  `type`: Grouping type. The possible values are `REQUEST_PATH`, `HTTP_METHOD`, `IP`, `GEO`, and `HOST`.

      For more information about `yandex_sws_advanced_rate_limiter_profile` properties, see [this provider guide](../../terraform/resources/sws_advanced_rate_limiter_profile.md).

  1. Create the resources:

       1. In the terminal, navigate to the configuration file directory.
       1. Make sure the configuration is correct using this command:
       
          ```bash
          terraform validate
          ```
       
          If the configuration is valid, you will get this message:
       
          ```bash
          Success! The configuration is valid.
          ```
       
       1. Run this command:
       
          ```bash
          terraform plan
          ```
       
          You 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.
       1. Apply the configuration changes:
       
          ```bash
          terraform apply
          ```
       
       1. Type `yes` and press **Enter** to confirm the changes.

       Terraform will create all the required resources. You can check the new resources using the [management console](https://console.yandex.cloud).

  Once your ARL profile is created, you can [add rules](arl-rule-add.md).

- API {#api}

  Use the [create](../advanced_rate_limiter/api-ref/AdvancedRateLimiterProfile/create.md) REST API method for the [AdvancedRateLimiterProfile](../advanced_rate_limiter/api-ref/AdvancedRateLimiterProfile/index.md) resource or the [AdvancedRateLimiterProfile/Create](../advanced_rate_limiter/api-ref/grpc/AdvancedRateLimiterProfile/create.md) gRPC API call.

{% endlist %}

### Useful links {#see-also}

* [Adding a rule to an ARL profile](arl-rule-add.md)
* [Editing basic settings of a security profile](profile-update.md)
* [Deleting an ARL profile](arl-profile-delete.md)