[Документация Yandex Cloud](../../index.md) > [Yandex Virtual Private Cloud](../index.md) > [Пошаговые инструкции](index.md) > Группы безопасности > Создать группу безопасности

# Создать группу безопасности

{% note warning %}

Группы безопасности действуют по принципу «запрещено все, что не разрешено». Если назначить сетевому интерфейсу ВМ группу безопасности без правил, ВМ не сможет передавать и принимать трафик. 

{% endnote %}

Чтобы создать новую [группу безопасности](../concepts/security-groups.md):

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, где требуется создать группу безопасности.
  1. [Перейдите](https://kz.console.yandex.cloud/link/vpc) в сервис **Virtual Private Cloud**.
  1. На панели слева выберите ![image](../../_assets/console-icons/shield.svg) **Группы безопасности**. 
  1. Нажмите кнопку **Создать группу безопасности**.
  1. Введите имя группы безопасности.
  1. В поле **Сеть** выберите сеть, которой будет назначена группа безопасности.
  1. В блоке **Правила** создайте правила для управления трафиком: 
     1. Выберите вкладку **Исходящий трафик** или **Входящий трафик**.
     1. Нажмите кнопку **Добавить правило**.
     1. В открывшемся окне в поле **Диапазон портов** укажите один порт или диапазон портов, куда или откуда будет поступать трафик.
     1. В поле **Протокол** укажите нужный протокол или оставьте `Любой`, чтобы разрешить передачу трафика по всем протоколам.
     1. В поле **Назначение** или **Источник** выберите назначение правила:
        1. `CIDR` — правило будет применено к диапазону IP-адресов. В поле **CIDR блоки** укажите CIDR и маски подсетей, в которые или из которых будет поступать трафик. Чтобы добавить несколько CIDR, нажимайте кнопку **Добавить CIDR**.
        1. `Группа безопасности` — альтернатива полю `CIDR`. Выберите:
           * `Текущая` — чтобы разрешить сетевое взаимодействие между ресурсами, на которые применена текущая группа безопасности.
           * `Из списка` — чтобы разрешить сетевое взаимодействие с ресурсами, на которые применена выбранная группа.
        1. `Проверки состояния балансировщика`.
  1. Нажмите кнопку **Сохранить**. Если требуется, добавьте другие правила.
  1. Нажмите кнопку **Сохранить**.

- CLI {#cli}
  
  Чтобы создать группу с правилом для IPv4 CIDR, выполните команду:

  ```bash
  yc vpc security-group create \
    --name test-sg-cli \
    --rule "direction=ingress,port=443,protocol=tcp,v4-cidrs=[10.0.0.0/24]" \
    --network-id c645mh47vscb********
  ```

  Где:

  * `name` — имя группы безопасности.
  * `rule` — описание правила:
    * `direction` — направление трафика. `ingress` — входящий трафик, `egress` — исходящий.
    * `port` — порт для получения или передачи трафика. Также можно указать диапазон портов с помощью параметров `from-port` и `to-port`.
    * `protocol` — протокол передачи данных. Возможные значения: `tcp`, `udp`, `icmp`, `esp`, `ah`, `any`.
    * `v4-cidrs` — список CIDR IPv4 и масок подсетей, откуда или куда будет поступать трафик.
    * `network-id` — идентификатор сети, к которой будет подключена группа безопасности.

  Чтобы создать группу с правилом разрешающим трафик от всех ресурсов другой группы безопасности, выполните команду:

  ```bash
  yc vpc security-group create \
    --name allow-connection-from-app \
    --rule "direction=ingress,port=5642,protocol=tcp,security-group-id=enp099cqehlfvabec36d" \
    --network-name infra2
  ```

  Где:

  * `name` — имя группы безопасности.
  * `rule` — описание правила:
    * `direction` — направление трафика. `ingress` — входящий трафик, `egress` — исходящий.
    * `port` — порт для получения или передачи трафика. Также можно указать диапазон портов с помощью параметров `from-port` и `to-port`.
    * `protocol` — протокол передачи данных. Возможные значения: `tcp`, `udp`, `icmp`, `esp`, `ah`, `any`.
    * `security-group-id` — идентификатор группы безопасности, для которой разрешен трафик в сторону создаваемой группы безопасности по порту 443.
  * `network-name` — имя сети, к которой будет подключена группа безопасности.

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

  Чтобы создать группу безопасности с несколькими правилами: 
    
  1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

     * `name` – имя группы безопасности.
     * `description` – опциональное описание группы безопасности.
     * `network_id` – идентификатор сети, которой будет назначена группа безопасности.
     * `ingress` и `egress` – параметры правил для входящего и исходящего трафика:
       * `protocol` – протокол передачи трафика. Возможные значения: `tcp`, `udp`, `icmp`, `esp`, `ah`, `any`.
       * `description` – опциональное описание правила.
       * `v4_cidr_blocks` — список CIDR и масок подсетей, откуда или куда будет поступать трафик.
       * `port` – порт для трафика.
       * `from-port` — первый порт из диапазона портов для трафика. 
       * `to-port` — последний порт из диапазона портов для трафика.

     Пример структуры конфигурационного файла:

     ```hcl
     resource "yandex_vpc_security_group" "test-sg" {
       name        = "Test security group"
       description = "Description for security group"
       network_id  = "<идентификатор_сети>"

       ingress {
         protocol       = "TCP"
         description    = "Rule description 1"
         v4_cidr_blocks = ["10.0.1.0/24", "10.0.2.0/24"]
         port           = 8080
       }
     
       ingress {
         protocol          = "ANY"
         description       = "Разрешает взаимодействие между ресурсами текущей группы безопасности"
         predefined_target = "self_security_group"
         from_port         = 0
         to_port           = 65535
       }

       ingress {
         protocol           = "TCP"
         description        = "Разрешает подключение по порту 27017 со стороны ресурсов с группой безопасности sg-frontend"
         security_group_id  = yandex_vpc_security_group.sg-frontend.id
         port               = 27017
       }

       egress {
         protocol       = "ANY"
         description    = "Rule description 2"
         v4_cidr_blocks = ["10.0.1.0/24", "10.0.2.0/24"]
         from_port      = 8090
         to_port        = 8099
       }
     }
     ```

     Подробнее о ресурсах, которые вы можете создать с помощью Terraform, в [документации провайдера](../../terraform/index.md).
     
  1. Проверьте корректность конфигурационных файлов.
     
     1. В командной строке перейдите в папку, где вы создали конфигурационный файл.
     1. Выполните проверку с помощью команды:
        ```
        terraform plan
        ```
     Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. 
        
  1. Разверните облачные ресурсы.

     1. Если в конфигурации нет ошибок, выполните команду:
        ```
        terraform apply
        ```
     1. Подтвердите создание ресурсов.
     
     После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в [консоли управления](https://kz.console.yandex.cloud).

- API {#api}

  Воспользуйтесь методом REST API [create](../api-ref/SecurityGroup/create.md) для ресурса [SecurityGroup](../api-ref/SecurityGroup/index.md) или вызовом gRPC API [SecurityGroupService/Create](../api-ref/grpc/SecurityGroup/create.md) и передайте в запросе:

  * Идентификатор каталога, в котором будет размещена группа безопасности, в параметре `folderId`.
  * Идентификатор сети, в которой будет размещена группа безопасности, в параметре `networkId`.
  * Настройки правил группы безопасности в массиве `ruleSpecs[]`:

    * Направление трафика, для которого задается правило, в параметре `ruleSpecs[].direction`. Возможные значения:

      * `ingress` — входящий трафик;
      * `egress` — исходящий трафик.

    * Имя протокола передачи трафика в параметре `ruleSpecs[].protocolName`. Возможные значения: `tcp`, `udp`, `icmp`, `esp`, `ah`, `any`.
    * Список CIDR и масок подсетей, откуда или куда будет поступать трафик, в параметре `ruleSpecs[].cidrBlocks.v4CidrBlocks[]`. Если правило задается для передачи трафика в группу безопасности, то вместо этого передайте идентификатор группы безопасности в параметре `ruleSpecs[].securityGroupId`.
    * Первый порт из диапазона портов для трафика в параметре `ruleSpecs[].ports.fromPort`. Возможные значения: от `0` до `65535`.
    * Последний порт из диапазона портов для трафика в параметре `ruleSpecs[].ports.toPort`. Возможные значения: от `0` до `65535`.

{% endlist %}