[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for GitLab](../index.md) > [Пошаговые инструкции](index.md) > Настройка групп безопасности

# Настройка групп безопасности

## Группы безопасности и ограничение доступа к инстансу Managed Service for GitLab {#sg-instance}

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

* для каких IP-адресов доступен инстанс, в том числе доступен ли он из интернета;
* по какому протоколу можно работать с Git-репозиториями в инстансе GitLab: [SSH](../../glossary/ssh-keygen.md) или HTTPS;
* какой сертификат можно использовать при работе по HTTPS: [сертификат Let's Encrypt](https://docs.gitlab.com/omnibus/settings/ssl/#enable-the-lets-encrypt-integration) (по умолчанию) или собственный сертификат (через запрос в [техническую поддержку](https://kz.center.yandex.cloud/support));
* выделен ли доступ к [GitLab Container Registry](https://docs.gitlab.com/ee/user/packages/container_registry/).

{% note warning %}

От настройки группы безопасности зависит работоспособность и доступность инстанса Managed Service for GitLab.

{% endnote %}

Чтобы настроить группу безопасности инстанса Managed Service for GitLab:
1. [Добавьте](../../vpc/operations/security-group-add-rule.md) в имеющуюся группу безопасности правила для [входящего](#ingress-rules-instance) и [исходящего](#egress-rules-instance) трафика или [создайте](../../vpc/operations/security-group-create.md) новую группу с указанными правилами.
1. Примените группу безопасности к инстансу GitLab при [создании](instance/instance-create.md) или [изменении](instance/instance-update.md).

Если к инстансу не привязать отдельную группу безопасности, к нему применится группа, созданная по умолчанию в сети инстанса. Правила этой группы безопасности, добавленные для других сервисов, влияют на доступ к инстансу GitLab.

Если у вас возникли проблемы с настройкой группы безопасности, обратитесь в [техническую поддержку](https://kz.center.yandex.cloud/support).

### Правила для входящего трафика {#ingress-rules-instance}

#|
|| **Зачем нужно правило** | **Настройки правила** ||
|| Для работы с Git-репозиториями по протоколу SSH. | 
* Диапазон портов — `22` и `2222`. Для каждого порта создайте отдельное правило.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — задайте диапазоны адресов подсетей внутри Yandex Cloud или публичные IP-адреса компьютеров в интернете, чтобы открыть доступ для подсетей и компьютеров. Примеры:

   * `172.16.0.0/12`.
   * `85.32.32.22/32`.

   Чтобы разрешить трафик с любых IP-адресов, укажите `0.0.0.0/0`.
||
|| Для работы с Git-репозиториями по протоколу HTTPS. |
* Диапазон портов — `443`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — задайте диапазоны адресов подсетей внутри Yandex Cloud или публичные IP-адреса компьютеров в интернете, чтобы открыть доступ для подсетей и компьютеров.
||
|| Для использования сертификата Let's Encrypt.

Такой сертификат [используется по умолчанию](https://docs.gitlab.com/omnibus/settings/ssl/#enable-the-lets-encrypt-integration) при работе с Git-репозиториями по протоколу HTTPS. Если вы не указываете это правило, то для работы по протоколу HTTPS добавьте собственный сертификат. Для его настройки обратитесь в [техническую поддержку](https://kz.center.yandex.cloud/support). |
* Диапазон портов — `80`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — `0.0.0.0/0`.
||
|| Для создания резервных копий инстанса. |
* Диапазон портов — `443`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — `213.180.193.243/32`.
||
|| Для [проверки доступности ресурсов](../../network-load-balancer/concepts/health-check.md) сетевым балансировщиком. |
* Диапазон портов — `80`.
* Протокол — `TCP`.
* Источник — `Проверки состояния балансировщика`.
||
|| Для подключения к GitLab Container Registry. |
* Диапазон портов — `5050`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — задайте диапазоны адресов подсетей внутри Yandex Cloud или публичные IP-адреса компьютеров в интернете, чтобы открыть доступ для подсетей и компьютеров.

   Чтобы разрешить трафик с любых IP-адресов, укажите `0.0.0.0/0`.
||
|#

### Правила для исходящего трафика {#egress-rules-instance}

Managed Service for GitLab использует для работы внешние ресурсы. Если в группе безопасности инстанса вы ограничили исходящий трафик, инстанс может работать некорректно. Чтобы избежать этого, добавьте в группу безопасности следующие правила:

#|
|| **Зачем нужно правило** | **Настройки правила** ||
|| Для использования сертификата Let's Encrypt. |
* Диапазон портов — `443`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — `0.0.0.0/0`.
||
|| Для создания резервных копий инстанса. |
* Диапазон портов — `443`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — `213.180.193.243/32`.
||
|| Для запросов в службу [метаданных](../../compute/concepts/vm-metadata.md) при обновлении инстанса. |
* Диапазон портов — `80`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — `169.254.169.254/32`.
||
|| Для запросов в службу DNS. |
* Диапазон портов — `53`.
* Протокол — `UDP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — `<второй_IP-адрес_в_подсети>/32`. Например для подсети `10.128.0.0/24` это будет CIDR `10.128.0.2/32`.
   
   Если в вашей подсети есть собственный DNS-сервер, также разрешите исходящий трафик к нему, например `IP-адрес_DNS_сервера/32`.
||
|| Для запросов к NTP-серверам для поддержки двухфакторной аутентификации. |
* Диапазон портов — `123`.
* Протокол — `UDP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — `0.0.0.0/0`.
||
|| Для доступа к воркерам под управлением раннера, [созданного с помощью консоли управления](../tutorials/install-gitlab-runner.md#create-runner). |
* Диапазон портов — `22`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — CIDR подсети, в которой находится инстанс Managed Service for GitLab (воркеры создаются в ней же). Например `10.128.0.0/24`.
||
|#

## Группы безопасности для управляемого раннера {#sg-runner}

Настройка сетевого взаимодействия между GitLab и управляемыми раннерами включает обязательные, рекомендуемые и опциональные настройки групп безопасности.

### Правила для входящего трафика {#ingress-rules-runner}

#|
|| **Зачем нужно правило** | **Настройки правила** ||
|| Для управления раннером с инстанса GitLab по протоколу SSH.
Обязательное правило. |
* Диапазон портов — `22`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — CIDR всех подсетей, где могут запускаться раннеры.
Вместо CIDR вы можете указать группу безопасности, созданную для раннеров.
||
|#

### Правила для исходящего трафика {#egress-rules-runner}

#|
|| **Зачем нужно правило** | **Настройки правила** ||
|| Для взаимодействия с публичным адресом инстанса GitLab по протоколу HTTPS (например, для клонирования репозиториев, загрузки артефактов).
Обязательное правило. |
* Диапазон портов — `443`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — публичный адрес GitLab.
||
|| Для доступа к реестру артефактов (например, Cloud Registry, dockerhub.io).
Рекомендуемое правило. |
* Диапазон портов — `443`, `5000` или другой.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — CIDR реестров, к которым предоставляется доступ. Чтобы разрешить трафик на любые IP-адреса, укажите `0.0.0.0/0`.
||
|| Для доступа к объектным хранилищам (например, LFS, Container Registry).
Рекомендуемое правило. |
* Диапазон портов — `443`.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — CIDR объектных хранилищ, к которым предоставляется доступ. Чтобы разрешить трафик на любые IP-адреса, укажите `0.0.0.0/0`.
||
|| Для доступа к внешним ресурсам.
Опциональное правило. |
* Диапазон портов — `443`, `80` или другой.
* Протокол — `TCP`.
* Источник — `Диапазон адресов`.
* IPv4 CIDR — CIDR внешних ресурсов.
Если список ресурсов не определен, можно разрешить исходящий трафик к любым адресам (CIDR — `0.0.0.0/0`) через все порты. В этом случае можно пропустить настройку рекомендуемых правил и настройку доступа из управляемого раннера к публичному адресу инстанса GitLab.
||
|#