Category: Git

17
Май
2022

🔑 Чем полезен Git Credential Manager? Обзор менеджера аутентификации для новичков и профессионалов

Обзор популярного менеджера аутентификации Git Credential Manager (GCM), обеспечивающего безопасную и удобную аутентификацию к репозиторию.

Универсальная аутентификация Git

Аутентификация – это сложно. Сложно отлаживать, сложно тестировать, сложно получать доступ.
Matthew John Cheetham

Эти слова были правдой как в июле 2020 года, так и сегодня. Цель Git Credential Manager (GCM) – сделать аутентификацию к удаленному репозиторию Git легкой и безопасной, вне зависимости от того, где хранится код или как вы предпочитаете работать. Коротко: GCM хочет стать универсальной аутентификацией Git.

В предыдущей статье писалось о риске распространения универсальных стандартов и о том, что внедрение Git Credential Manager Core (GCM Core) будет означать появление еще одного помощника в работе с мандатами. Удалось заменить GCM для Windows, Mac и Linux на новый GCM! Исходный код старых проектов заархивирован и больше не поставляется с такими дистрибутивами как Git для Windows.

Поэтому моникер Core был убран из названия проекта, чтобы стать Git Credential Manager или сокращенно GCM.

GCM
GCM

У GCM появился новый дом на GitHub https://github.com/GitCredentialManager.

Размещение на github.com/microsoft или github.com/github не совсем соответствовало этике GCM как открытого, универсального и агностического проекта. Текущие проблемы и запросы на исправление были перенесены, и по-прежнему приветствуются желающие внести вклад в проект.

Страница GCM в GitHub
Страница GCM в GitHub

Взаимодействие с удаленными HTTP-серверами без помощника по учетным данным, такого как GCM, усложняется с удалением аутентификации по логину/паролю в GitHub и BitBucket. GCM упрощает эту задачу, а благодаря разработкам, таким как GitHub Mobile для двухфакторной аутентификации и поддержка потока кода устройства OAuth, аутентификация становится лучше.

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

Привет Linux!

GCM❤Linux
GCM❤Linux

В стремлении получить универсальное решение для аутентификации в Git, выполнена работа над тем, чтобы GCM одинаково работал на различных дистрибутивах Linux с упором на дистрибутивы на базе Debian.

Доступны пакеты Debian, которые можно загрузить со страницы выпусков GitHub, а также tar-архивы для других дистрибутивов (только для x64 версии Intel). Построение на платформе .NET облегчает сборку и запуск везде, где работает среда выполнения .NET. Со временем планируется расширить матрицу поддержки дистрибутивов и процессорных архитектур (например, добавить поддержку ARM64).

В связи с широкой и многообразной природой дистрибутивов Linux важно, что GCM предлагает много вариантов хранения учетных данных. В дополнение к зашифрованным GPG файлам добавлена поддержка Secret Service API через libsecret (также см. GNOME Keyring), которая дает опыт схожий с тем, что предоставляется в GCM на Windows и macOS.

Подсистема Windows для Linux

В дополнение к дистрибутивам Linux также реализована специальная поддержка GCM для подсистемы Windows для Linux (WSL). Использование GCM с WSL означает, что все ваши установленные WSL могут совместно использовать учетные данные Git друг с другом и с хостом Windows, что разрешает вам легко смешивать и сочетать среды разработки.

GCM для WSL
GCM для WSL

Смотрите больше о GCM для WSL здесь.

Привет, GitLab

Универсальность означает не только работу с большим количеством мест, но и любую службу хостинга Git. Благодаря активному сообществу, GCM постоянно становится лучше. И теперь GCM поддерживает GitLab.

GCM и Git хостинг
GCM и Git хостинг

Никаких терминалов!

Несмотря на любовь к терминалу, не всем удобно вводить команды и отвечать на подсказки с помощью клавиатуры. Кроме того, многие инструменты и IDE, предлагающие интеграцию с Git, делают это путем передачи исполняемого файла git, что означает, что GCM может быть вызван для аутентификации из GUI-приложения, где нет терминала.

GCM предлагает полноценные графические подсказки аутентификации в Windows, благодаря проекту Avalonia, предоставляющего кросс-платформенный .NET XAML фреймворк. Также предоставляются графические подсказки на macOS и Linux.

GCM интерфейс на разных платформах
GCM интерфейс на разных платформах

GCM продолжает поддерживать подсказки в терминале в качестве опции по умолчанию для подсказок. Известны среды, где нет графического интерфейса (например, при подключении по SSH без переадресации дисплея), и вместо этого представляются эквивалентные текстовые подсказки. При желании можно вручную отключить подсказки GUI.

Обеспечение безопасности цепочки поставок программного обеспечения

Обеспечение безопасности исходного кода – шаг в поддержании доверия к программному обеспечению, будь то хранение коммерчески важных исходных текстов вдали от посторонних глаз или защита от злоумышленников, вносящих изменения как в закрытые, так и в открытые проекты.

В 2020 году была раскрыта масштабная кибератака, затронувшая часть федерального правительства США, а также несколько крупных компаний-разработчиков программного обеспечения. Недавний указ президента США в ответ на эту кибератаку актуализирует важность таких механизмов, как многофакторная аутентификация, политика условного доступа и общая защита цепочки поставок программного обеспечения.

Храните ВСЕ учетные записи

Git Credential Manager создает и хранит учетные данные для доступа к репозиториям Git на множестве платформ. Учетные данные хранятся с помощью стандартных промышленных API шифрования и хранения.

GCM использует менеджер учетных данных Windows и связку ключей для входа в систему в macOS.

В дополнение к реализованным механизмам так же поддерживаются альтернативные варианты для платформ, предоставляя выбор того, как и где хранить сгенерированные учетные данные (например, зашифрованные GPG файлы учетных данных).

GCM для всех платформ
GCM для всех платформ

Также GCM теперь может использовать помощник Git git-credential-cache, который собирается и доступен во многих дистрибутивах Git. Этот вариант подходит для облачных оболочек или эфемерных сред, когда нет желания постоянно сохранять учетные данные на диске, но при этом избежать запроса при каждом git fetch или git push.

Современная проверка подлинности Windows (экспериментальная)

Еще один способ обеспечения безопасности учетных данных – поддержка на аппаратном уровне с помощью таких технологий, как Trusted Platform Module (TPM) или Secure Enclave. Кроме того, предприятия, желающие убедится в том, что устройство или учетные данные не скомпрометированы, могут использовать политики условного доступа.

Интеграция с модулями безопасности или применение политик, может быть трудной задачей и зависит от платформы. Приложениям часто проще передать ответственность за получение, хранение учетных данных и применение политик брокеру аутентификации.

Брокер проверки подлинности выполняя согласование учетных данных от имени приложения, упрощает эти проблемы и часто имеет дополнительное преимущество более глубокой интеграции с функциями операционной системы, такими как биометрия.

GCM и брокеры аутентификации
GCM и брокеры аутентификации

GCM получил экспериментальную поддержку брокерской аутентификации (пока только для Windows)!

В Windows брокер проверки подлинности – компонент, который впервые появился в Windows 10 и известен как Web Account Manager (WAM). WAM разрешает таким приложениям, как GCM поддерживать современные способы аутентификации, такие как, Windows Hello и применять политики условного доступа, установленные на работе или учебе.

Обратите внимание, что поддержка брокера Windows пока экспериментальна и ограничивается проверкой подлинности рабочих и учебных учетных записей Microsoft в Azure DevOps.

Больше о GCM и WAM рассказывается по этой ссылке, в том числе о том, как зарегистрироваться и о текущих известных проблемах.

Что такое условный доступ?

Условный доступ – это идея предоставления доступа к системе или ресурсу только при соблюдении критериев. Эти критерии могут включать такие вещи, как: проверка актуальности и работоспособности антивирусного программного обеспечения на устройстве, безопасное соединение через VPN, использование 2FA или динамическое обнаружение подозрительной активности из учетной записи пользователя.

Условный доступ
Условный доступ

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

Храня учетные данные репозитория Git, GCM имеет возможности для содействия внедрению методов для доступа к исходному коду. Вопросы использования новейших технологий и средств защиты активно и постоянно изучаются.

Еще больше улучшений

За последние 18 месяцев в GCM появилось много функций и улучшений. Вот краткое изложение дополнительных обновлений после публикации в июле 2020 года:

  • Автоматическое определение локальных/самостоятельно размещенных экземпляров.
  • Поддержка GitHub Enterprise Server и GitHub AE.
  • Общие кэши токенов Microsoft Identity с другими инструментами разработчика.
  • Улучшенная поддержка сетевых прокси.
  • Поддержка пользовательских корневых сертификатов TLS/SSL.
  • Установщик Windows без администратора.
  • Улучшенная обработка и вывод командной строки.
  • Поддержка корпоративных настроек по умолчанию в Windows.
  • Многопользовательская поддержка.
  • Улучшенная диагностика.

Планы на будущее

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

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

***

Материалы по теме

13
Май
2022

Организация хранения настроек с помощью переменных окружения

Подскажите, пожалуйста, как хранить конфиги (логин/пароль/url к бд) в переменных окружения?
Я сейчас разрабатываю приложение на Spring Boot. Приложение работает с базой данных, поэтому для локального тестирования в файле application.yml пр…

12
Май
2022

Переместить указатель пустой ветки на мастер без добавления коммитов

Есть ветка, которая не содержит в себе новых коммитов, но указывает на некий старый коммит мастера. Как перенести её указатель на текущий последний коммит мастера, не добавляя коммиты в ветку? Если делать ребейз/ресет ветки на мастер, то к…

02
Апр
2022

Удалились локальные файлы с remote ветки git

Работаю в VScode, при change изменения я решил проверить на какой ветке я нахожусь, оказался в origin/master, не подумал, переключился обратно на свою основную ветку, и все изменения, которые я делал, пропали. Переключился обратно на remot…

10
Мар
2022

Ошибка импорта файлов python после скачивания с github

Собрал проект, в котором скрипты из разных namespace импортируются по необходимости, после загрузил весь проект в GitHub.
Но когда я скачал проект архивом с GitHub, распаковал и запустил, получил ошибку импорта модулей. Но если соединять п…

17
Фев
2022

Как корректно перенести проект python с Windows на Linux [закрыт]

Как корректно перенести проект python?
Список библиотек перенес с помощью ‘pip freeze’, с помощью git перенес проект
Потом накатил venv, активировал его, после закачал библиотеки, запускаю скрипт в окружении
python3 SM_774.py

Выдает ошибк…

10
Фев
2022

Как сделать так, чтобы программа выдавала по одному слову? Т.е. выдает слово – я ввожу перевод, выдает следующее слово – я ввожу перевод и т.д

Не пойму почему при запуске программа выдает вначале сразу два слова?
https://github.com/Grauen1989/Anglijskij.git
int quantityWords = words.size();
System.out.println("Эта программа выводит случайные английские слова, начиная с 14.04…

29
Дек
2021

Работа с проектом на удаленном/виртуальном сервере из PHPStorm и других IDE

Народ, подскажите пожалуйста как лучше и правильнее работать. Раньше всегда работал с локальным проектом и через PHPStorm фиксировал изменения в GIT и т.п. Сейчас проекты все на виртуальном сервере (Ubuntu), доступ к нему по SSH. Как прави…

26
Дек
2021

Как запушить изменения одной ветки в другую не принимая изменения второй ветки, но иметь возможность модифицировать её?

У меня есть ветка main и ветка deploy. На деплое есть отдельные файлы для деплоя. Я сделал изменения в главной ветке и теперь хочу их запушить и в главную ветку, и в ветку деплой. Но проблема в том, что я должен принять сначало изменения в…

18
Окт
2021

В чем проблема выполнения git команды через php?

Не могу побороть одну проблемку.
В терминале делаю git clone [email protected]:xxx/yyy.git – все корректно клонируется (ssh ключи установлены, все ок.) в том же каталоге пробую это сделать через php:
passthru(‘git clone [email protected]:x…

17
Окт
2021

🛠 Всё, что нужно знать начинающему о Git: рассмотрим за 15 минут

Распределенная система контроля версий Git – популярный инструмент для координации параллельной работы и управления проектами в мире ИТ. Умение им пользоваться хотя бы на уровне основных команд необходимо даже начинающему разработчику.

17
Окт
2021

🛠 Всё, что нужно знать начинающему о Git: рассмотрим за 15 минут

Распределенная система контроля версий Git – популярный инструмент для координации параллельной работы и управления проектами в мире ИТ. Умение им пользоваться хотя бы на уровне основных команд необходимо даже начинающему разработчику.

16
Сен
2021

Как установить библиотеки в репозиторий GitHub Python?

Можно ли как то в гитхабе установить библиотеки, а то я запускаю через streamlit свой код и мне выдает это. Код не буду кидать, потому что проблема в импорте библиотек, а все импорты я делал просто как from import или просто import.

30
Авг
2021

TestCon Moscow 2021

Международная конференция по тестированию и обеспечению качества ПО. 3 дня докладов и мастер-классов от ведущих мировых специалистов.
— Читать дальше «TestCon Moscow 2021»

05
Авг
2021

composer update не создает папку .git

Есть проект, который есть в репе git`а, внутри есть composer.json, по которому подтягиваются доп. репы. Суть проблемы такова, когда я хочу править репы из одного окна в phpstorm, я иду в настройки version control и добавляю папку с клониро…

03
Авг
2021

Вебинар «GitHub: открытый урок для начинающих веб-разработчиков»

На открытом уроке расскажут, что такое GitHub и Git, как работать с GitHub Desktop и в чём отличие работы Git через консоль, а также поговорят про основы работы и базовые понятия Git.
— Читать дальше «Вебинар «GitHub: открытый урок для начинающих веб-р…

13
Июл
2021

Обучение Java-разработке с оплатой после трудоустройства

За 9 месяцев обучения освоите востребованный на IT-рынке стек на Java: ООП, Java Core, веб-технологии и Enterprise-разработку на Java с практикующими специалистами.
— Читать дальше «Обучение Java-разработке с оплатой после трудоустройства»

08
Июл
2021

требуется разработчик [закрыт]

В продуктивную команду крупных онлайн агрегаторов по недвижимости Restate.ru, автомобилей 110km.ru, афиши и СМИ Peterburg2.ru и др, необходим Middle BackEnd разработчик для новых задач и расширения проектов. В настоящий момент аудитория ре…

26
Июн
2021

Как хранить модификации (изменения) сущностей?

Есть задача оптимизировать работу реестра парковочных талонов. Есть куча параметров и текстовое наполнение. Задача: хранить "артефакт" изменений каждого пользователя (то есть видеть кто и какие параметры менял) И конечный вопрос …

16
Июн
2021

Курс «Веб-разработчик»

12 месяцев обучения разработке на JavaScript и PHP, 30 проектов для портфолио, 6 месяцев дополнительного обучения и помощь в трудоустройстве.
— Читать дальше «Курс «Веб-разработчик»»

15
Июн
2021

Курс «Python и инструменты машинного обучения»

Обучение работе с аналитическими инструментами в Python от Московского физико-технического института. 2 месяца практических онлайн-вебинаров и сертификат о повышении квалификации в финале.
— Читать дальше «Курс «Python и инструменты машинного обучения»…

09
Июн
2021

Курс «Веб-разработчик»

За 12 месяцев научат программировать на JavaScript и PHP, создавать сайты, приложения и интернет-магазины.
— Читать дальше «Курс «Веб-разработчик»»