1) Список часто используемых команд Git
https://github.com/joshnh/Git-Commands
2) Книга по Git
https://git-scm.com/book/en/v2
3) Git simple guide no deep shit!
https://rogerdudler.github.io/git-guide/
4) Intro to Git and GitHub for Beginners
https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners
5) Понимание потока GitHub
https://docs.github.com/en/get-started/quickstart/github-flow
6) Руководство для начинающих по внесению вклада в проект GitHub
https://akrabat.com/the-beginners-guide-to-contributing-to-a-github-project/
7) Ё**** Git!!!
https://ohshitgit.com/ru
8)LearnGitBranching
https://learngitbranching.js.org/
Делитесь в комментариях свои полезные ресурсы по работе с Git и GitHub
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Это репо содержит примеры переписанных на Golang инструментов и утилит кибербезопасности, которые могут быть использованы в работе "
Red Team
".Главная задача
Red Team
– оценить скорость реагирования, а также эффективность процедур, систем и средств защитRed Teaming — это имитация реальных кибератак с целью тренировки и оценки эффективности людей, процессов и технологий, используемых для защиты информационной инфраструктуры заказчика.
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация приоритетной очереди, основанная на container/heap.
Этот пакет построен поверх стандартной функциональности, уже предоставляемой container/heap и добавляет различные удобные методы для создания новых приоритетных очередей, предикаты для проверки того, пуста ли очередь, синхронизацию для безопасного использования несколькими горутинами и другое.
go get -v gopkg.in/dnaeon/go-priorityqueue.v1
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Как я реверс-инженерил китайский блютуз контроллер
— Лучшие практики Golang (20 лучших)
— Собираем статистику по телеграм-каналу и строим кастомные графики
— Здоровая конкуренция в GO. Главное не перехитрить самого себя
— Как использовать ресурсы Kubernetes по максимуму для работы с Go-приложениями
— Pushing SQLite to its limits with Go while having fun
— Partitioned S3 Bucket from DynamoDB
— Build a Cybersecurity Link-Analyzer with Go
— How to setup ZeptoMail in Golang
— Your Microservices are probably not Type-Safe 🐘
— Building a TypeScript Simple Channel (Like Golang)
— Setting Up the Go Programming Environment on Windows 11
— O poder do CLI com Golang e Cobra CLI
— Goroutines por baixo dos panos
— How to build a desktop markdown editor
— Add context to errors
Посмотреть:
🌐 Попробуем сделать vpn на websocket. заодно tcp/ip подучим. (golang)
🌐 Пишем генератор Shorts видео на Python для заработка на YouTube. (⏱ 11:50)
🌐 Distributed CAS Storage In Golang - RPC Networking (⏱ 26:01)
🌐 This Is Why You Are Stuck In Tutorial Hell (⏱ 04:30)
🌐 Streaming Large Files In Golang But Distributed (⏱ 33:48)
🌐 Coding TCP Transport For My P2P Distributed Storage In GO (⏱ 26:01)
🌐 Message Queue From Scratch In Golang With Only STD LIB (⏱ 01:55:49)
Хорошего дня!
#digest #golang
@Golang_google
Почитать:
— Как я реверс-инженерил китайский блютуз контроллер
— Лучшие практики Golang (20 лучших)
— Собираем статистику по телеграм-каналу и строим кастомные графики
— Здоровая конкуренция в GO. Главное не перехитрить самого себя
— Как использовать ресурсы Kubernetes по максимуму для работы с Go-приложениями
— Pushing SQLite to its limits with Go while having fun
— Partitioned S3 Bucket from DynamoDB
— Build a Cybersecurity Link-Analyzer with Go
— How to setup ZeptoMail in Golang
— Your Microservices are probably not Type-Safe 🐘
— Building a TypeScript Simple Channel (Like Golang)
— Setting Up the Go Programming Environment on Windows 11
— O poder do CLI com Golang e Cobra CLI
— Goroutines por baixo dos panos
— How to build a desktop markdown editor
— Add context to errors
Посмотреть:
🌐 Попробуем сделать vpn на websocket. заодно tcp/ip подучим. (golang)
🌐 Пишем генератор Shorts видео на Python для заработка на YouTube. (⏱ 11:50)
🌐 Distributed CAS Storage In Golang - RPC Networking (⏱ 26:01)
🌐 This Is Why You Are Stuck In Tutorial Hell (⏱ 04:30)
🌐 Streaming Large Files In Golang But Distributed (⏱ 33:48)
🌐 Coding TCP Transport For My P2P Distributed Storage In GO (⏱ 26:01)
🌐 Message Queue From Scratch In Golang With Only STD LIB (⏱ 01:55:49)
Хорошего дня!
#digest #golang
@Golang_google
Uber широко использует Go в качестве основного языка программирования для реализации внутренних сервисов и библиотек благодаря его высокой производительности.
Моно репо Go является самой большой кодовой базой в Uber, насчитывающей
90 млн. строк кода
(и продолжает расти). Это делает инструментарий для написания надежного кода на Go критически важной частью нашей инфраструктуры разработки.Указатели (переменные, хранящие в памяти адреса других переменных, а не их реальные значения) являются неотъемлемой частью языка программирования Go и способствуют эффективному управлению памятью и эффективному манипулированию данными.
Поэтому программисты широко используют указатели при написании программ на языке Go для различных целей, таких как модификация данных, параллельное программирование, обмен данными, оптимизация использования памяти, облегчение работы с интерфейсами и полиморфизм.
Несмотря на то, что указатели являются мощным и широко используемым инструментом, необходимо использовать их аккуратно и разумно, чтобы избежать распространенных ошибок, связанных с nil-паниками в коде.
В этой статье описаны практики решения, а так же о интсрменте от команды Uber NilAway — библиотеке статического анализа для обнаружения возможных nil-паник в коде на Go, который позволяет ловить их во время компиляции, а не во время выполнения.
NilAway похож на nilness, но является гораздо более продвинутым инструментом и содержит мощные методы статического анализа для отслеживания потоков nil как внутри пакета, так и между пакетами.
📌 Читать статью
📌 Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
scdb - это легкий и быстрый механизм хранения данных типа "ключ-значение", отличающийся простотой и скоростью работы, написанная на Go.
Инструмент создан по образцу архитектуры хранения Bitcask, известной своей эффективностью при операциях записи.
▪Основной принцип построения scdb (и Bitcask) основан на файловых системах с лог-структурой. При таком подходе все изменения добавляются в конец журнала, что делает запись исключительно быстрой, поскольку она осуществляется последовательно. Такая конструкция не только обеспечивает быстродействие, но и гарантирует целостность данных: даже в случае сбоя системы можно легко восстановить данные благодаря этому методу, основанному только на приложении.
▪Кроме того, в scdb реализован процесс, известный как объединение файлов журнала. Со временем, когда ваше приложение записывает все больше данных, количество файлов журнала естественным образом увеличивается. Объединение лог-файлов - это техника, которая объединяет файлы для предотвращения фрагментации и поддержания производительности. Это похоже на домашнюю уборку, обеспечивающую организованность и эффективность хранения данных.
▪Таким образом, если вы разрабатываете приложение, требующее быстрой записи данных и простого, но надежного решения для хранения данных, scdb может оказаться именно тем механизмом, который вы ищете. Он создан для того, чтобы обеспечить разработчикам, подобным вам, удобство хранения и извлечения пар ключ-значение.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Балансировщики нагрузки буквально в 100 раз лучше, чем старый добрый светофор.
Они могут обрабатывать миллионы входящих запросов, распределять трафик между серверами и вообще поддерживать бесперебойную работу при минимальной настройке.
Почему?
Потому что балансировщики нагрузки могут использовать некоторые действительно мощные алгоритмы на лету.
В общем случае существует две категории таких алгоритмов:
✅ Статические
✅ Динамический
- Наименьшее количество соединений
- Наименьшее время отклика
Рассмотрим каждый алгоритм чуть более подробно
👉 Round Robin
- Запросы последовательно распределяются между группой серверов.
- Нет гарантии, что несколько запросов от пользователя попадут к одному и тому же экземпляру.
👉Sticky Round Robin
- Лучшая альтернатива round-robin
- Различные запросы от одного и того же пользователя поступают на один и тот же эндпоинт.
👉 Hash-Based
- Алгоритм распределяет запросы на основе хэша значения ключа.
- В качестве ключа может выступать IP-адрес или URL-адрес запроса
👉 Weighted Round Robin
- Каждый сервер получает значение веса.
- Это значение определяет долю трафика.
- Серверы с большим весом получают больше трафика. Хорошо подходит для систем с серверами разной мощности
👉 Наименьшее количество соединений
- Новый запрос отправляется на тот экземпляр сервера, который имеет наименьшее количество соединений.
- Количество подключений определяется исходя из относительной вычислительной мощности сервера
👉 Наименьшее время отклика
- Новый запрос отправляется на сервер с наименьшим временем отклика, чтобы минимизировать общее время отклика.
- Хорошо подходит для случаев, когда время отклика критично.
Протестируйте балансировку нагрузки телеграм с помощью кнопки LIKE👍.
@Golang_google
Они могут обрабатывать миллионы входящих запросов, распределять трафик между серверами и вообще поддерживать бесперебойную работу при минимальной настройке.
Почему?
Потому что балансировщики нагрузки могут использовать некоторые действительно мощные алгоритмы на лету.
В общем случае существует две категории таких алгоритмов:
✅ Статические
- Round Robin
- Sticky Round Robin
- Хэш
- Weighted Round Robin
✅ Динамический
- Наименьшее количество соединений
- Наименьшее время отклика
Рассмотрим каждый алгоритм чуть более подробно
👉 Round Robin
- Запросы последовательно распределяются между группой серверов.
- Нет гарантии, что несколько запросов от пользователя попадут к одному и тому же экземпляру.
👉Sticky Round Robin
- Лучшая альтернатива round-robin
- Различные запросы от одного и того же пользователя поступают на один и тот же эндпоинт.
👉 Hash-Based
- Алгоритм распределяет запросы на основе хэша значения ключа.
- В качестве ключа может выступать IP-адрес или URL-адрес запроса
👉 Weighted Round Robin
- Каждый сервер получает значение веса.
- Это значение определяет долю трафика.
- Серверы с большим весом получают больше трафика. Хорошо подходит для систем с серверами разной мощности
👉 Наименьшее количество соединений
- Новый запрос отправляется на тот экземпляр сервера, который имеет наименьшее количество соединений.
- Количество подключений определяется исходя из относительной вычислительной мощности сервера
👉 Наименьшее время отклика
- Новый запрос отправляется на сервер с наименьшим временем отклика, чтобы минимизировать общее время отклика.
- Хорошо подходит для случаев, когда время отклика критично.
Протестируйте балансировку нагрузки телеграм с помощью кнопки LIKE👍.
@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
An interactive study of common retry methods
Для написания надежного программного обеспечения необходимо обрабатывать сетевые сбои, иначе приложение не будет эффективно работать. Одним из наиболее распространенных методов обработки неудачного запроса является повтор запросов.
В этом интерактивном гайде наглядно показаын различные методы повторных попыток запросов, показано, почему некоторые распространенные подходы опасны, и, объянено, что является наилучшей практикой.
После прочтения этой статьи вы будете иметь четкое представление о том, что хорошей практикой для использования повторных запросов.
Советы, приведенные в этой статье, в равной степени относятся как к запросам к собственным внутренним сервисам, так и к сторонним.
https://encore.dev/blog/retries
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Архитектура, основанная на событиях (EDA):
В архитектуре, основанной на событиях, поток системы определяется событиями.
Слоистая архитектура:
Слоистая архитектура организует систему на отдельные слои, где каждый слой имеет свою конкретную ответственность.
Монолит:
Монолитная архитектура - это традиционный подход, при котором все компоненты и модули программного приложения тесно интегрированы в одну кодовую базу и развертываются как единое целое.
Архитектура микросервисов:
Микросервисы разбивают программное приложение на небольшие, независимо развертываемые сервисы.
Модель-Представление-Контроллер (MVC):
MVC - это шаблон проектирования, поделенный на три компонента: Модель, Представление и Контроллер
Архитектура Мастер-Ведомый:
В архитектуре Мастер-Ведомый один центральный узел контролирует и управляет одним или несколькими подчиненными узлами.
📌 Самые важные архитектурные шаблоны, которые нужно знать
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Расширение для стандартных модулей управления конфигурациями в Go
— Сервисы дружитес. Как платформа упрощает создание интеграций без ошибок
— Из Go в Rust или ад generics
— Эффективность на максимум: Микрооптимизации в Golang
— Корутины для Go
— Как устроены DDoS-атаки (и как их предотвратить) Часть 1 .
— Milvus Adventures Nov 24, 2023
— Create Production-Ready SDKs with Goa
— spectest: 'go test' output only FAIL results and statistics
— Using a Transactional Pub/Sub Outbox to Guarantee Consistency
— A gopher’s journey to the center of container images
— Full stack monolith experiment with Golang
— The fastest way to deploy a Go app to Kubernetes
— 🔥 Frontend update: the Gowebly CLI now supports daisyUI components library
— WebAssembly: using Go code in the browser
— Understanding Go Interfaces: A Guide for Beginners
Посмотреть:
🌐Пишем gRPC сервис на Go - Сервис авторизации / УЛЬТИМАТИВНЫЙ гайд
🌐GoLang #380 - практика "Пишем gRPC сервис на Go — сервис авторизации"
🌐 Golang Channels Or Wait Groups? Let Me Explain. (⏱ 18:32)
🌐 Message Queue From Scratch In Golang (⏱ 02:29:49)
🌐 Writing Tests For My Distributed File Storage In Golang (⏱ 31:03)
🌐 Message Queue From Scratch In Golang With Only STD LIB (⏱ 01:59:06)
🌐 System Design - теория кэширования | Как кэшировать данные (⏱ 01:12:31)
🌐 TobenONE UDS019 Dock | Perfect Framework Laptop Pair? (⏱ 05:39)
🌐 THIS is how you SHOULD Structure your Golang Applications!? (⏱ 06:25)
Хорошего дня!
@Golang_google
Почитать:
— Расширение для стандартных модулей управления конфигурациями в Go
— Сервисы дружитес. Как платформа упрощает создание интеграций без ошибок
— Из Go в Rust или ад generics
— Эффективность на максимум: Микрооптимизации в Golang
— Корутины для Go
— Как устроены DDoS-атаки (и как их предотвратить) Часть 1 .
— Milvus Adventures Nov 24, 2023
— Create Production-Ready SDKs with Goa
— spectest: 'go test' output only FAIL results and statistics
— Using a Transactional Pub/Sub Outbox to Guarantee Consistency
— A gopher’s journey to the center of container images
— Full stack monolith experiment with Golang
— The fastest way to deploy a Go app to Kubernetes
— 🔥 Frontend update: the Gowebly CLI now supports daisyUI components library
— WebAssembly: using Go code in the browser
— Understanding Go Interfaces: A Guide for Beginners
Посмотреть:
🌐Пишем gRPC сервис на Go - Сервис авторизации / УЛЬТИМАТИВНЫЙ гайд
🌐GoLang #380 - практика "Пишем gRPC сервис на Go — сервис авторизации"
🌐 Golang Channels Or Wait Groups? Let Me Explain. (⏱ 18:32)
🌐 Message Queue From Scratch In Golang (⏱ 02:29:49)
🌐 Writing Tests For My Distributed File Storage In Golang (⏱ 31:03)
🌐 Message Queue From Scratch In Golang With Only STD LIB (⏱ 01:59:06)
🌐 System Design - теория кэширования | Как кэшировать данные (⏱ 01:12:31)
🌐 TobenONE UDS019 Dock | Perfect Framework Laptop Pair? (⏱ 05:39)
🌐 THIS is how you SHOULD Structure your Golang Applications!? (⏱ 06:25)
Хорошего дня!
@Golang_google
Процесс выполнения
SQL-запросов
в базе данных включает в себя несколько компонентов, взаимодействующих между собой. Хотя конкретная архитектура различных систем баз данных может отличаться, ниже описана общая последовательность действий.1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.
2. Когда сервер базы данных получает SQL-оператор, реляционный движок начинает его обработку. Сначала синтаксический анализатор проверяет правильность оператора. Затем он преобразует оператор в дерево запросов, которое представляет собой внутреннюю структуру данных.
3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.
4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.
5. Движок хранилища использует методы доступа - протоколы чтения и записи данных, наиболее эффективные для выполнения различных операций.
6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.
7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.
8. В то же время менеджер блокировок накладывает блокировки, чтобы несколько транзакций могли выполняться одновременно, не конфликтуя между собой. Таким образом, обеспечивается изоляция и согласованность.
Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Некоторые причины исторические (до
Go 1.11
в Go была довольно печальная история управления зависимостями), некоторые культурные (сообщество Go пропагандирует простоту и самодостаточность), но некоторые из них, я бы сказал, являются хорошей практикой независимо от используемого языка.Безопасность - когда вы добавляете зависимость, вы добавляете разработчика (или команду разработчиков), с которым вы никогда не взаимодействовали, в качестве участника вашего проекта. Вы должны проанализировать библиотеку, как если бы она была написана собственными силами, и убедиться, что она соответствует вашим задачам и не несет никакого риска.
Сложность в поддержке - теперь вы и ваша команда должны поддерживать добавленную библиотеку в актуальном состоянии.
Воспроизводимые сборки - Вы можете добиться этого с помощью библиотек сторонних производителей, но чем меньше вам придется об этом беспокоиться, тем лучше.
Просто нет необходимости - Это одна из лучших причин. В Go есть замечательная стандартная библиотека, и вы можете добиться очень многого, используя ее.
Так когда же следует обращаться к библиотеке?
Если то, что вы хотите реализовать, является функционально сложным, имеет приемущества от поддержки сообществом и берется из надежного источника, то использование библиотеки может быть хорошим вариантом.
Примерами библиотек, которые, на мой взгляд, являются достойными для внимания:
- Библиотеки шин сообщений (Kafka, RabbitMQ и т.д.)
- Библиотеки БД (Mongo, Postgres).
- Сложные криптографические вещи алгоритмы, которые не поддерживаются стандартной библиотекой.
👇 Напишите в комментаряих о ваших любимых сторонних библиотеках.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
gRPC - это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google в 2015 году. Она имеет открытый исходный код и используется для коммуникаций с архитектурой клиент-сервер.
gRPC может использовать буферы протоколов в качестве определения интерфейса lang
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезный инструмент для проверки запросов от
HTMX
, использование безопасных типов, декларативный синтаксис для заголовков ответов HTMX, инстурменты для управленикм поведением HTMX на сервере.Встроенные методы Swap Strategy для точной настройки поведения hx-swap.
Имеет базовую интеграцию с компонентами templ.
go get github.com/angelofallars/htmx-go
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Если трассировка стека отслеживает путь кода, который привел к ошибке, то трассировка возврата отслеживает путь кода, который ошибка прошла, чтобы добраться до пользователя. Часто это один и тот же путь, но в Go они могут различаться, поскольку ошибки - это значения, которые могут передаваться между горутинами (например, с помощью каналов).
Когда это происходит, трассировка возврата может быть более полезной, чем трассировка стека.
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Мапы в Go: уровень Pro
— В MySQL 8.2 появилось прозрачное разделение чтения и записи
— Go (fiber) vs Rust (axum) JWT&DB
— Agency: The Go Way to AI. Часть 1
— API completa em Golang - Parte 1
— Kubernetes(K8s) Autoscaler — a detailed look at the design and implementation of VPA
— Last week top 5 posts tagged(#javascript)
— A "Tiny" APISIX Plugin
— the simple cli radio
— Advance Data Types in Go: Arrays, Slices, Maps, Functions
— Building an event-driven system in Go using Pub/Sub
— the simple cli radio
— ⚡️Speeding up debugging with local tracing
— Building a Scalable Notification Service with gRPC and Microservices
Посмотреть:
🌐 Deepfake video при помощи Google Colab (⏱ 14:29)
🌐 Revamping Subscribers Resumes So They Finally Get Hired (⏱ 02:41:12)
🌐 10 Million Messages In 1 Second With Golang Actors (⏱ 07:33)
🌐 The Golang Function Nobody Talks About (⏱ 15:50)
🌐 Advent Of Code But With C, VIM, And NO Linters (⏱ 02:56:50)
🌐 Параллельное программирование | ROADMAP | Подробный план изучения (⏱ 11:52)
🌐 The Options Pattern in Golang!? ~ Service Configuration (⏱ 03:28)
Хорошего дня!
@Golang_google
Почитать:
— Мапы в Go: уровень Pro
— В MySQL 8.2 появилось прозрачное разделение чтения и записи
— Go (fiber) vs Rust (axum) JWT&DB
— Agency: The Go Way to AI. Часть 1
— API completa em Golang - Parte 1
— Kubernetes(K8s) Autoscaler — a detailed look at the design and implementation of VPA
— Last week top 5 posts tagged(#javascript)
— A "Tiny" APISIX Plugin
— the simple cli radio
— Advance Data Types in Go: Arrays, Slices, Maps, Functions
— Building an event-driven system in Go using Pub/Sub
— the simple cli radio
— ⚡️Speeding up debugging with local tracing
— Building a Scalable Notification Service with gRPC and Microservices
Посмотреть:
🌐 Deepfake video при помощи Google Colab (⏱ 14:29)
🌐 Revamping Subscribers Resumes So They Finally Get Hired (⏱ 02:41:12)
🌐 10 Million Messages In 1 Second With Golang Actors (⏱ 07:33)
🌐 The Golang Function Nobody Talks About (⏱ 15:50)
🌐 Advent Of Code But With C, VIM, And NO Linters (⏱ 02:56:50)
🌐 Параллельное программирование | ROADMAP | Подробный план изучения (⏱ 11:52)
🌐 The Options Pattern in Golang!? ~ Service Configuration (⏱ 03:28)
Хорошего дня!
@Golang_google
Как же они защищают свою систему?
В основе
mTLS
и строгие правила авторизации.Uber моделирует свою производственную среду как сеть с нулевым уровнем доверия. Поскольку любой хост может быть скомпрометирован, они полагаются на сильные криптографические примитивы для установления доверия между сервисами. 🥷
uPKI - это платформа идентификации Uber, основанная на Spire. Она отвечает за выпуск недолговечных, автоматически изменяющихся пар криптографических ключей. Эти пары состоят из X.509-SVID, закрытого ключа и связки доверия. 🔐
При такой настройке система автоматически обновляет (ротирует) свои сертификаты, когда срок их действия подходит к концу.
Агент
Spire
держит долговременное соединение с сервером Spire и проактивно генерирует новый сертификат, когда наступает подходящий момент.Это очень важно, поскольку позволяет Uber выпускать очень недолговечные сертификаты, что ограничивает время, необходимое злоумышленникам для использования утечки учетных данных.
mTLS обеспечивает Uber аутентификацию, конфиденциальность с помощью шифрования и целостность данных. 👍
Как при регистрации на рейс после проверки вашего удостоверения личности (вы тот, за кого себя выдаете) - следующая проверка:
✋ действительно ли вам разрешено лететь этим рейсом? (есть ли у вас билет с нужными разрешениями).
Для этого в Uber есть сервис под названием
Charter
. Подобно AWS IAM, это фреймворк, позволяет вам определять, кто и что может получить доступ к определенным сервисам и ресурсам.В Kafka есть подключаемый фреймворк авторизации, в котором вы можете настроить пользовательский класс авторизатора, который будет выполнять аутентификацию за вас (
`имя_класса_авторизатора`
).Этот авторизатор вызывается как часть любого потока запросов. В конфигурации Uber он вызывается с помощью пары
actor
, resource
и operation
.Актор (actor) - сущность, которая является объектом принятия решения об авторизации (например, вы в аэропорту). Также называется
KafkaPrincipal
в Kafka
.🪨 Ресурс (resource), на основе которого принимается решение об авторизации (например, рейс).
🔧 Операция ( operation), выполняемая над
ресурсом
(например, посадка). Также называется ACLOperation
в Kafka
Авторизатор совершает удаленный RPC-вызов к Charter, чтобы выяснить решение по данной паре, и далее кэширует результат.
🦾 Почитать подробнее
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Linux →http://linuxjourney.com
Bash →http://linuxopsys.com
AWS →http://explore.skillbuilder.aws
Fast-Kubernetes → https://github.com/omerbsezer/Fast-Kubernetes
Azure →http://learn.microsoft.com
DevOps →http://edx.org/learn/devops
Docker →http://docker-curriculum.com
Kubernetes →http://kubernetes.io
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
go get -u github.com/grahms/worx
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM