DevOps
8.81K subscribers
1.42K photos
913 videos
28 files
1.82K links
Docker, Kubernetes, облачные сервисы (AWS, GCP, Azure), Infrastructure as a Code (Terraform, CloudFormation), администрирование Windows и Linux, сети TCP, IP, скрипты (Bash, PowerShell), Ansible, Jenkins, DevSecOps, логирование. По вопросам @evgenycarter
Download Telegram
Работа с правами доступа файлов и директорий в Linux

# chown vasya /file
Назначить пользователя vasya владельцем файла file
# chown -R vasya directory
Рекурсивно обойти директорию directory и назначить пользователя vasya владельцем всех вложенных файлов и директорий
# chown vasya:group /file
Назначить владельца и группу для файла /file
# chmod ugo+rwx /directory
Установить полные права доступа rwx ( Read Write eXecute ) для всех ugo ( User Group Other ) на директорию /directory. То-же самое можно сделать, используя числовой представление chmod 777 directory
# chmod go-rwx /directory
Удалить все права на директорию /directory для группы и остальных
# chgrp new_group file
Изменить группу-владельца для file на new_group
# chmod o+t /home/public
Установить так называемый STIKY-бит на директорию /home/public. Удалить файл в такой директории может только владелец данного файла
# chmod o-t /home/public
Удалить STIKY-бит с директории /home/public
# chmod u+s /bin/binary_file
Установить SUID-бит на файл /bin/binary_file. Это позволяет любому пользователю системы, запускать данный файл с правами владельца файла
# chmod u-s /bin/binary_file
Удалить SUID-бит с файла /bin/binary_file
# chmod g+s /home/public
Установить SGID-бит на директории /home/public
# chmod g-s /home/public
Удалить SGID-бит с директории /home/public
# find / -perm -u+s
Поиск всех файлов с установленным SUID битом, начиная с корня файловой системы
# ls -lh
Листинг текущего каталога с правами доступа

#devops #девопс

Подпишись 👉@i_DevOps
7👍2
ArgoCD — мощный инструмент для GitOps-подхода, но его использование в мультикластерной среде накладывает дополнительные требования к безопасности.

🔑 Основные идеи из статьи:

- Распределённая архитектура: при работе с несколькими кластерами важно правильно выстраивать доверительные отношения между ними, чтобы избежать компрометации всей инфраструктуры.
- Аутентификация и авторизация: рекомендуется использовать внешние провайдеры идентификации (OIDC), что упрощает управление доступом и позволяет централизовать контроль.
- RBAC и политики безопасности: ограничение прав до минимально необходимых снижает риск злоупотреблений и атак через скомпрометированные учётные данные.
- Секреты и их хранение: лучше всего использовать внешние менеджеры секретов (например, HashiCorp Vault, AWS Secrets Manager), а не хранить их напрямую в кластере.
- Zero Trust подход: предполагается минимизация доверия даже внутри инфраструктуры — каждый запрос должен быть аутентифицирован и авторизован.

В итоге, защищённый мультикластерный ArgoCD — это комбинация централизованного управления доступом, минимальных прав, надёжного хранения секретов и постоянного мониторинга. Такой подход снижает поверхность атаки и повышает устойчивость CI/CD-процессов.

https://www.tremolo.io/post/securing-multi-cluster-argocd

#devops #девопс

Подпишись 👉@i_DevOps
👍3
Подписывайтесь на канал 👉@tipsysdmin
😁17💩1
📈Picosnitch - мониторинг сетевого трафика на каждый исполняемый файл с помощью BPF

Получение уведомлений при подключении к сети новой программы или при ее изменении

Контролирует пропускную способность сети, разбивая трафик по исполняемым файлам, хэшам, родителям, доменам, портам или пользователям с течением времени

При желании можно проверить хэши или исполняемые файлы с помощью VirusTotal

Хеши исполняемых файлов кэшируются на основе устройства + inode для повышения производительности и работают с приложениями, запущенными в контейнерах

Используется BPF для точного мониторинга пропускной способности с низкими накладными расходами и fanotify для контроля исполняемых файлов на предмет модификации

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

Прагматичный и минималистичный дизайн, сфокусированный на точном обнаружении с четким сообщением об ошибке, когда это невозможно

https://github.com/elesiuta/picosnitch

https://elesiuta.github.io/picosnitch/

#devops #девопс

Подпишись 👉@i_DevOps
👍41
#devops #девопс

Подпишись 👉@i_DevOps
😁16🤣3😨2
Перестаньте переживать об allowPrivilegeEscalation

Многие инженеры теряются в нюансах настройки allowPrivilegeEscalation в Kubernetes. Автор статьи простым языком объясняет, зачем нужен этот флаг, как он работает и почему его наличие или отсутствие не критично для большинства сценариев. Если хотите понять, как устроена безопасность контейнеров, — эта статья для вас.

https://habr.com/ru/companies/flant/articles/923432/

original https://blog.christophetd.fr/stop-worrying-about-allowprivilegeescalation/

#devops #девопс

Подпишись 👉@i_DevOps
👍4
Armadа — это open-source система для управления заданиями (job scheduling) в Kubernetes кластерах. Она ориентирована на высокопроизводительные вычисления (HPC) и работу с большими кластерами.

🔹 Основные идеи:

- Очереди: задания распределяются через очереди с гибкими правилами приоритизации.
- Масштабируемость: поддержка тысяч узлов и миллионов заданий.
- Интеграция с Kubernetes: Armada выступает как надстройка над существующими кластерами.
- Справедливое распределение ресурсов: балансировка между пользователями и проектами.
- gRPC API: для отправки и управления заданиями.

Архитектура включает Armada server (центральный сервис с API и логикой очередей) и executor (компонент, работающий в Kubernetes-кластере и запускающий задания). Таким образом, можно подключать несколько кластеров к одному серверу Armada.

Использование Armada позволяет запускать распределённые вычисления, ML-задачи и batch-ворклоады в больших инфраструктурах, где стандартных возможностей Kubernetes недостаточно.

https://github.com/armadaproject/armada

#devops #девопс

Подпишись 👉@i_DevOps
👍4
Шпаргалка по командам Docker и Docker-compose

#devops #девопс

Подпишись 👉@i_DevOps
👍5
Рабочие процессы Арго - паттерны, проверенные на продакшене

Argo Workflows представляет собой отличную платформу для автоматизации инфраструктуры и заменил Jenkins в качестве основного инструмента для выполнения запланированных или управляемых событиями задач автоматизации.

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

Цель этой статьи - поделиться некоторыми уроками, которые я извлек, и некоторыми паттернами, которые я разработал, чтобы помочь вам избежать тех же ошибок, которые совершил я.

https://hodgkins.io/argo-workflow-proven-patterns-from-production

#devops #девопс

Подпишись 👉@i_DevOps
👍4
Вопросы с собеседования

df сообщает о наличии 20 Гб занятого пространства, подсчёт занятого файлами места при помощи du даёт результат в 20 Мб. При каких обстоятельствах может возникнуть описанная ситуация?

Когда файл удален т. к. файловый дескриптор «держит» его.

Ищем файл через:

lsof -a +L1 | grep var | grep httpd

При удалении файла, который в этот момент был «занят» процессом — его имя удаляется, но inode — остаётся в файловой системе до тех пор, пока не завершится процесс, который «держит» этот файл.

Соответственно, что бы «освободить» уже удалённые файлы — необходимо перезапустить процесс, который этот файл держит.

#devops #девопс

Подпишись 👉@i_DevOps
👍8
Что такое Docker? В чем отличие контейнера от образа?

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

Образ — шаблон приложения, который содержит слои файловой системы в режиме "только-чтение".

Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме "только чтение" содержит верхний слой в режиме "чтение-запись".

#devops #девопс

Подпишись 👉@i_DevOps
👍5
Puppet в Avito: 15 000 серверов, CI/CD и уроки из продакшна

Привет! Меня зовут Андрей Колесников, я тимлид одной из DevOps-команд Авито. Уже 10 лет я работаю с высоконагруженными и бизнес-критичными системами. В этой статье рассказываю, как мы управляем нашей инфраструктурой с помощью Puppet, и объясняю, почему мы продолжаем его использовать.

Это не рассказ о «фичах ради фич» и не реклама инструмента. Я не буду уговаривать всех срочно перейти на Puppet. Вместо этого я поделюсь нашим практическим опытом: как мы используем Puppet в Avito, какие подходы и практики применяем, как масштабируем систему и какие грабли собрали по пути.


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


https://habr.com/ru/companies/avito/articles/939080/

#devops #девопс

Подпишись 👉@i_DevOps
👍4
Автоматизируй всё с Ansible!

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

https://agralrst.medium.com/automate-everything-with-ansible-aac7eb4d5cf9

#devops #девопс

Подпишись 👉@i_DevOps
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🐾 Tabby

Это самостоятельный помощник по написанию кода с искусственным интеллектом, представляющий собой альтернативу GitHub Copilot с открытым исходным кодом и локальным ресурсом. Он может похвастаться несколькими ключевыми особенностями:

Самодостаточность, отсутствие необходимости в СУБД или облачном сервисе.
Интерфейс OpenAPI, легко интегрируемый с существующей инфраструктурой (например, Cloud IDE).
Поддержка графических процессоров потребительского класса.

https://github.com/TabbyML/tabby

#devops #девопс

Подпишись 👉@i_DevOps
👍2
Больше не нужен рестарт: как Kubernetes позволяет менять ресурсы контейнеров «на лету»

Теперь ресурсы контейнеров в Kubernetes можно менять «на лету» — без перезапуска и простоев. В статье рассказываем, как работает in-place resize, где эта функция реально спасает приложения от перегрузки и какие ограничения стоит учитывать на практике.

https://habr.com/ru/companies/flant/articles/936724/

#devops #девопс

Подпишись 👉@i_DevOps
👍3
Что происходит, когда вы вводите URL в браузер?

В процесс вовлечены: браузер, операционная система вашего компьютера, интернет-провайдер, сервер, где размещён сайт, и сервисы, работающие на этом сервере.

1. Вы вводите https://somewebsite.com/page в браузере и нажимаете Enter
Здесь https:// — это схема, указывающая браузеру подключаться к серверу с использованием TLS. somewebsite.com — доменное имя сайта, которое указывает на конкретный IP-адрес сервера. А /page — путь к нужному ресурсу.

2. Браузер ищет IP-адрес домена
После того как вы ввели URL и нажали Enter, браузеру нужно определить, к какому серверу в Интернете подключиться. Для этого он ищет IP-адрес по доменному имени с помощью DNS-запроса. Сначала проверяется кэш, если записи там нет — запрос уходит к DNS-серверам (от корневого до серверов 3-го уровня).

3. Браузер устанавливает TCP-соединение с сервером
Протокол TCP используется для маршрутизации пакетов: от запроса браузера — через роутер, провайдера, интернет-обменники и сети — до сервера с нужным IP-адресом. Чтобы ускорить доставку, многие сайты используют CDN, кэширующие контент ближе к пользователю.

4. Браузер отправляет HTTP-запрос на сервер
После установления соединения браузер начинает взаимодействовать по протоколу HTTP(s). Он отправляет HTTP-запрос, который состоит из стартовой строки, заголовков и тела. По этим данным сервер определяет, что именно хочет клиент.

5. Сервер обрабатывает запрос и отправляет ответ
Сервер принимает запрос, анализирует строку, заголовки и тело. Для GET /page/ HTTP/1.1 сервер находит соответствующий ресурс, формирует ответ и возвращает его клиенту вместе с HTTP-статусом.

6. Браузер рендерит контент
Получив ответ, браузер смотрит на заголовки, чтобы понять, как обработать ресурс. Например, Content-Type указывает, что в теле ответа находится HTML-страница, которую и нужно отрисовать.

#devops #девопс

Подпишись 👉@i_DevOps
👍6