DevSecOps – czyli jak zadbać o bezpieczeństwo aplikacji w ramach procesu DevOps
Jak dbać o bezpieczeństwo produktu w ramach procesu DevOps? Czym są SASTy, DASTy i SCA i jak to wszystko może wpłynąć na poprawę bezpieczeństwa?
Dzisiaj jako Innokrea opowiemy Wam o tym czym jest CI/CD oraz jak wykorzystać natywne rozwiązanie do CI/CD od GitHub – GitHub Actions. Jeśli jesteście ciekawi czym są pipeline’y i jak można je wykorzystać w celu automatyzacji wdrożenia Waszej aplikacji, to zapraszamy. W tematach DevOps oraz DevSecOps polecamy także nasze artykuły dotyczące Terrafroma, CI/CD oraz poprzedni wpis o SAST, DAST i SCA.
GIT jest oprogramowaniem wykorzystywanym przez zdecydowaną większość programistów do zarządzania swoim kodem. Umożliwia ono tworzenie gałęzi oprogramowania i organizację pracy programistów. Kod współdzielony jest na zdalnym repozytorium i mamy tutaj kilka firm oferujących takie usługi. Są to między innymi GitHub, GitLab czy BitBucket. Natomiast narzędzia CI/CD (ang. continuous integration continuous deployment) to oprogramowanie pozwalające na automatyzację zarządzania i wdrażania pisanego kodu do klienta. Występują zarówno narzędzia zewnętrzne jak np. Jenkins czy CircleCI, jak i zintegrowane natywnie ze zdalnym repozytorium jak np. GitLab CI czy GitHub Actions. Procesy, zautomatyzowane w ramach CI/CD nazywamy często workflows lub pipelines i są one zwykle definiowane w formacie YAML.
Rysunek 1 – Kod pipelineu w Jenkinsie, gdzie używa się języka Groovy, źródło: javacodegeeks.com
Aby zrozumieć dokładnie GitHub Actions należy zacząć od wyjaśnienia paru pojęć związanych z tą technologią. Są to między innymi:
Samą definicję pipeline w GitHub Actions piszemy z użyciem YAMLa i umieszczamy w folderze .github/workflows. Może to wyglądać tak jak na poniższym rysunku.
Rysunek 2 – Przykładowe repozytorium ze zdefiniowanym workflow
Spróbujmy stworzyć prosty projekt aplikacji webowej z użyciem express.js. Będziemy używać menadżera pakietów npm oraz GitHub Actions w celu prezentacji możliwości GitHub Actions. Aplikacja będzie odpowiadać na żądanie HTTP na głównym endpoint’cie i będzie miała możliwość skorzystania ze zmiennych środowiskowych, które dostarczymy z wykorzystaniem workflow. Wszystkie pliki dostępne są do pobrania na naszym publicznym repozytorium.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send(process.env.RESPONSE_MESSAGE || 'Hello, World!');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Pipeline odpowiadający za instalację paczek (i późniejszy deploy) mógłby wyglądać następująco:
name: CI 1 Build
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm install
Przypatrzmy się kolejnym komendom, które występują w powyższym pliku:
Dzisiaj udało nam się wprowadzić Was do tematu GitHub Actions. Jeśli jesteście ciekawi tego, jakie jeszcze bardziej zaawansowane operacje z użyciem Actions można wykonywać, to zapraszamy za tydzień! Do usłyszenia!
https://www.javacodegeeks.com/wp-content/uploads/2021/04/Screenshot-2021-02-13-at-9.07.04-AM.png
DevSecOps – czyli jak zadbać o bezpieczeństwo aplikacji w ramach procesu DevOps
Jak dbać o bezpieczeństwo produktu w ramach procesu DevOps? Czym są SASTy, DASTy i SCA i jak to wszystko może wpłynąć na poprawę bezpieczeństwa?
AdministracjaBezpieczeństwo
Zarządzanie tożsamością i dostępem użytkownika, czyli o co chodzi z IDP?
Czym jest tożsamość użytkownika? Z czego wynika potrzeba zarządzania dostępem w firmie? Jak działa tzw. IDP? Odpowiedź na te pytania znajdziesz w artykule.
Bezpieczeństwo
Hej, hej... Programisto, to kolejny artykuł dla Ciebie! Druga część artykułu na temat wzorców projektowych. Poznaj Adapter oraz Memento.
Programowanie