Защита сайта и API

Для защиты сайта и API нужно:

Создание Keycloak-сервера для аутентификации пользователей

Чтобы настроить аутентификацию на сайте, нужно создать провайдера, который будет удостоверять пользователей. В качестве примера будет настроен экземпляр Keycloak.

Для этого понадобится виртуальная машина, на которую будет установлен провайдер аутентификации Keycloak.

Создание виртуальной машины

Создайте виртуальную машину с публичным IP-адресом, по которому пользователи смогут перейти и выполнить аутентификацию:

  1. В списке сервисов выберите Elastic Cloud Server.

  2. Нажмите Create ECS в правом верхнем углу.

  3. В поле AZ выберите Random.

  4. Выберите конфигурацию с 2 vCPUs и 4 GiB. Например, «s6.large.2» или «s7n.large.2».

  5. В поле Image выберите Public Image → Ubuntu → Ubuntu 20.04 server.

  6. Нажмите Next: Configure Network.

  7. В поле Network выберите виртуальную сеть и подсеть, в которой будет находиться виртуальная машина.

  8. В поле Security Group нажмите Create Security Group.

  9. На новой вкладке нажмите Create Security Group.

  10. В поле Name введите keycloak.

  11. В поле Template выберите Custom — шаблон без дополнительных настроек.

  12. Нажмите OK.

  13. Нажмите Manage Rule.

  14. Перейдите во вкладку Inbound Rule.

  15. Нажмите Add Rule.

  16. В поле Priority введите 1.

  17. В поле Protocol & Port введите 8443. По этому порту будет открыт доступ к серверу из интернета.

  18. Нажмите OK.

  19. Вернитесь на предыдущую вкладку, в которой создавали виртуальную машину.

  20. Обновите список групп безопасности и выберите keycloak.

  21. В поле EIP выберите Auto assign.

  22. Нажмите Next: Configure Advanced Settings.

  23. В поле ECS Name укажите название виртуальной машины.

  24. Введите и повторите пароль для подключения к серверу.

  25. Нажмите Next: Confirm.

  26. Проверьте конфигурацию виртуальной машины.

  27. Нажмите Apply Now.

Сервер создан, настроен и готов к работе.

Установка Keycloak

Чтобы установить Keycloak на сервер:

  1. В списке сервисов выберите Elastic Cloud Server.

  2. Напротив виртуальной машины, которую вы создали ранее, нажмите Remote Login.

  3. В консоли введите:

    • root — имя пользователя;

    • пароль, указанный при создании сервера.

  4. Скачайте Docker:

    curl -fsSL https://get.docker.com -o get-docker.sh
    
  5. Установите Docker:

    sh get-docker.sh
    
  6. Сгенерируйте самоподписанный сертификат:

    openssl req -newkey rsa:2048 -nodes -keyout server.key.pem -x509 -days 3650 -out server.crt.pem
    
  7. Смените права доступа к файлу server.key.pem:

    chmod 755 server.key.pem
    
  8. Запустите контейнер с Keycloak:

    docker run -d --name keycloak -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -e KC_HTTPS_CERTIFICATE_FILE=/opt/keycloak/conf/server.crt.pem -e KC_HTTPS_CERTIFICATE_KEY_FILE=/opt/keycloak/conf/server.key.pem -v $PWD/server.crt.pem:/opt/keycloak/conf/server.crt.pem -v $PWD/server.key.pem:/opt/keycloak/conf/server.key.pem -p 8443:8443 quay.io/keycloak/keycloak:19.0.1 start-dev
    

Keycloak установлен.

Настройка Keycloak

  1. В списке сервисов выберите Elastic Cloud Server.

  2. Скопируйте EIP — публичный IP-адрес виртуальной машины, на которую вы установили Keycloak.

  3. Чтобы попасть в консоль управления Keycloak, перейдите по адресу:

    https://ip-адрес-сервера:8443/admin
    

    Например, если IP-адрес сервера 203.0.113.1, нужно перейти по:

    https://203.0.113.1:8443/admin
    
  4. Так как на сервере установлен самоподписанный SSL-сертификат, при переходе возникнет уведомление «Подключение не защищено». Чтобы попасть в Keycloak, нажмите Дополнительные → Перейти на сайт.

  5. Войдите в Keycloak:

    • Username or emailadmin;

    • Passwordadmin.

  6. Перейдите в раздел Clients в левом меню.

  7. Нажмите Create Client.

  8. В поле Client Type выберите OpenID Connect.

  9. Придумайте и введите в поле Client ID идентификатор для сайта, который находится в OBS.

  10. Нажмите Next.

  11. Активируйте параметр Client authentication.

  12. Активируйте опцию Implicit flow.

  13. Нажмите Save.

  14. Введите адрес сайта, который загружен в OBS, в следующие поля:

    • Root URL

    • Home URL

    • Valid redirect URIs

    Чтобы узнать адрес сайта, откройте страницу сервиса OBS и нажмите на название бакета, в котором находится сайт. Затем перейдите в раздел Basic Configurations → Static Website Hosting.

  15. Нажмите Save.

Сервер аутентификации Keycloak создан.

Запустили Evolution free tier
для Dev & Test
Получить