1. Wprowadzenie
W tym laboratorium wdrożysz aplikację w Cloud Run i klastrze GKE oraz wyświetlisz obserwacje dotyczące zabezpieczeń wdrożenia w sekcji Zabezpieczenia Software Delivery Shield.
Czego się nauczysz
- Dane o zabezpieczeniach Artifact Registry
- Statystyki dotyczące zabezpieczeń Cloud Run
- Stan zabezpieczeń GKE
2. Konfiguracja i wymagania
Konfigurowanie projektu w Google Cloud
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz ją zaktualizować w dowolnym momencie.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle jest on oznaczony jako
PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i będzie obowiązywać przez cały czas trwania projektu. - Warto wiedzieć, że istnieje też trzecia wartość, czyli numer projektu, z której korzystają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub cały projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Konfiguracja środowiska
Aktywuj Cloud Shell, klikając ikonę po prawej stronie paska wyszukiwania.

W Cloud Shell włącz interfejsy API wymagane w tym module:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
container.googleapis.com \
containersecurity.googleapis.com
Jeśli pojawi się prośba o autoryzację, kliknij „Autoryzuj”, aby kontynuować.

Powinien wyświetlić się komunikat o powodzeniu podobny do tego:
Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.
Uruchom polecenie, aby utworzyć klaster GKE asynchronicznie. Będzie on używany w dalszej części tego modułu:
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
3. Przygotowywanie aplikacji
Najpierw przygotujesz prostą aplikację Node.js na platformie Express, która odpowiada na żądania HTTP.
W Cloud Shell utwórz nowy katalog o nazwie starter-nodejs, a następnie przejdź do niego:
mkdir starter-nodejs
cd starter-nodejs
Utwórz plik package.json, uruchamiając te polecenia:
cat > ./package.json << EOF
{
"name": "cloudrun-starter-app",
"version": "1.0.0",
"description": "Node.js Starter Application",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"express": "^4.18.2"
}
}
EOF
Ten plik zawiera polecenie skryptu startowego i zależność od platformy Express umożliwiającej tworzenie aplikacji internetowych.
Następnie w tym samym katalogu utwórz plik index.js, uruchamiając te polecenia:
cat > ./index.js << EOF
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log('Received a request.');
res.send("Hello Cloud Run!");
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Listening on port', port);
});
EOF
Ten kod tworzy podstawowy serwer WWW, który nasłuchuje na porcie określonym przez zmienną środowiskową PORT. Aplikacja jest gotowa i możesz ją teraz skonteneryzować i wdrożyć.
4. Wdrażanie aplikacji Cloud Run
Aby wdrożyć aplikację, uruchom to polecenie:
gcloud run deploy starter-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--max-instances=3
Potwierdź utworzenie repozytorium Artifact Registry:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)? y
5. Statystyki dotyczące bezpieczeństwa Artifact Registry i Cloud Build
Tworzenie może potrwać kilka minut.
Otwórz Cloud Build i sprawdź artefakty kompilacji najnowszej kompilacji.
Interfejs Cloud Build w konsoli Google Cloud zawiera panel Statystyki bezpieczeństwa Software Delivery Shield, który wyświetla informacje o bezpieczeństwie związane z kompilacją, takie jak poziom SLSA, wszelkie luki w zabezpieczeniach zależności i pochodzenie kompilacji.

Sprawdź dane o zabezpieczeniach utworzonego obrazu kontenera. Kliknij link do przeskanowanych artefaktów, aby wyświetlić szczegóły luk w zabezpieczeniach tego obrazu w Artifact Registry.
Wróć do konsoli Cloud Shell i sprawdź, czy wdrożenie aplikacji Cloud Run zostało zakończone.
Done. Service [starter-app] revision [starter-app-00001-maw] has been deployed and is serving 100 percent of traffic. Service URL: https://starter-app-nin5jpgefq-uc.a.run.app
6. Statystyki dotyczące zabezpieczeń Cloud Run
Cloud Run zawiera panel bezpieczeństwa (wersja zapoznawcza), który wyświetla informacje o bezpieczeństwie łańcucha dostaw oprogramowania, takie jak informacje o zgodności z poziomem kompilacji SLSA, pochodzenie kompilacji i luki w zabezpieczeniach znalezione w działających usługach.
Otwórz Cloud Run i sprawdź informacje o bezpieczeństwie na karcie REVISIONS / SECURITY (WERSJE / BEZPIECZEŃSTWO).

Ten panel zawiera te informacje:
- Tożsamość i szyfrowanie: adres e-mail domyślnego konta usługi Compute Engine i klucz szyfrowania używany do wdrażania.
- Poziom SLSA: ta kompilacja jest na poziomie SLSA 3, który określa poziom dojrzałości procesu kompilacji oprogramowania zgodnie ze specyfikacją SLSA.
- Luki w zabezpieczeniach: wszelkie luki w zabezpieczeniach wykryte w zależnościach aplikacji.
- Szczegóły kompilacji: szczegóły kompilacji, takie jak narzędzie do kompilacji i link do wyświetlania logów.
- Pochodzenie kompilacji: pochodzenie kompilacji, czyli zbiór możliwych do zweryfikowania metadanych dotyczących kompilacji. Zawiera szczegóły takie jak skróty skompilowanych obrazów, lokalizacje źródła danych wejściowych, łańcuch narzędzi kompilacji, etapy kompilacji i czas trwania kompilacji.
7. Stan zabezpieczeń GKE
GKE może ocenić stan zabezpieczeń kontenerów i aktywnie udzielać wskazówek dotyczących ustawień klastra, konfiguracji zadań i luk w zabezpieczeniach. Zawiera panel stanu zabezpieczeń (wersja zapoznawcza), który skanuje klastry i zbiory zadań GKE, aby generować sprawdzone, praktyczne zalecenia, które pozwalają poprawić stan zabezpieczeń.
W kolejnych krokach wdrożysz aplikację w klastrze GKE i sprawdzisz informacje o zabezpieczeniach w panelu stanu zabezpieczeń GKE.
Sprawdź, czy klaster jest gotowy, uruchamiając to polecenie:
gcloud beta container clusters list
Przykładowe dane wyjściowe:
NAME: gke-cluster LOCATION: us-central1-a MASTER_VERSION: 1.24.9-gke.3200 MASTER_IP: 34.29.226.228 MACHINE_TYPE: e2-medium NODE_VERSION: 1.24.9-gke.3200 NUM_NODES: 3 STATUS: RUNNING
Uzyskaj dane logowania i konfigurację klastra GKE:
gcloud container clusters get-credentials gke-cluster \
--region=us-central1-a
Uruchom polecenie, aby wdrożyć aplikację przy użyciu obrazu utworzonego w poprzednim kroku:
export PROJECT_ID=$(gcloud config get-value project)
kubectl run starter-app \
--image us-central1-docker.pkg.dev/${PROJECT_ID}/cloud-run-source-deploy/starter-app:latest \
--port 8080
Obciążenia GKE powinny mieć wzmocnioną konfigurację, która ogranicza obszar ataku. Ręczne sprawdzanie zadań w klastrach pod kątem problemów z konfiguracją na dużą skalę może być trudne. Panel stanu zabezpieczeń umożliwia automatyczne skanowanie konfiguracji wszystkich uruchomionych zbiorów zadań w wielu klastrach i zwracanie praktycznych wyników z oceną oraz sprawdzonych rekomendacji, które pozwalają poprawić stan zabezpieczeń.
Włącz skanowanie konfiguracji zbiorów zadań:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-config-audit
Oprócz skanowania konfiguracji zbioru zadań możesz też włączyć skanowanie luk w zabezpieczeniach zbioru zadań i przeglądać wyniki w panelu stanu zabezpieczeń. Jest to zestaw funkcji, które dostarczają sprawdzone informacje i zalecenia dotyczące poprawy bezpieczeństwa klastrów i zbiorów zadań GKE.
GKE automatycznie skanuje obrazy kontenerów w każdym kwalifikującym się podzie działającym w klastrze GKE pod kątem znanych luk w zabezpieczeniach, korzystając z danych o lukach w zabezpieczeniach z publicznych baz danych CVE, takich jak NIST.
Jeśli w obrazach kontenerów zostanie wykryta luka w zabezpieczeniach, GKE przypisze jej poziom ważności i wyświetli wyniki w panelu stanu zabezpieczeń w konsoli Google Cloud. GKE dodaje też wpisy do Cloud Logging na potrzeby kontroli i śledzenia.
Włącz skanowanie pod kątem luk w zabezpieczeniach zbiorów zadań:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-vulnerability-scanning \
--async
Otwórz stronę Stan zabezpieczeń w GKE.
Poczekaj kilka minut na zakończenie audytu zadania, a potem sprawdź wyniki.

Sprawdź problemy z konfiguracją i odpowiednie zadania.

Dlaczego warto korzystać z panelu stanu zabezpieczeń
Panel stanu zabezpieczeń to podstawowe zabezpieczenie, które możesz włączyć w dowolnym kwalifikującym się klastrze GKE. Google Cloud zaleca korzystanie z panelu stanu zabezpieczeń we wszystkich klastrach z tych powodów:
- Minimalne zakłócenia: funkcje nie zakłócają działania uruchomionych obciążeń.
- Praktyczne rekomendacje: w przypadku dostępności panel stanu zabezpieczeń zawiera działania, które pozwalają rozwiązać wykryte problemy. Obejmują one polecenia, które możesz uruchomić, przykłady zmian konfiguracji, które możesz wprowadzić, oraz porady dotyczące tego, co zrobić, aby zmniejszyć podatność na zagrożenia.
- Wizualizacja: panel stanu zabezpieczeń zawiera ogólną wizualizację problemów wpływających na klastry w projekcie, a także wykresy pokazujące postępy i potencjalny wpływ każdego problemu.
- Sprawdzone wyniki: GKE przypisuje wykrytym problemom ocenę ważności na podstawie wiedzy zespołów ds. bezpieczeństwa Google i standardów branżowych.
- Dzienniki zdarzeń podlegających kontroli: GKE dodaje wszystkie wykryte problemy do usługi Logging, aby zwiększyć możliwości raportowania i obserwacji.
8. Gratulacje!
Gratulacje! To już koniec ćwiczeń.
Omówione zagadnienia:
- Informacje o Security Insights dotyczące artefaktów kompilacji i aplikacji działających w Cloud Run i GKE
Czyszczenie danych
Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym samouczku, możesz usunąć projekt zawierający te zasoby lub zachować projekt i usunąć poszczególne zasoby.
Usuwanie projektu
Najprostszym sposobem na uniknięcie płatności jest usunięcie projektu utworzonego w tym samouczku.
–
Ostatnia aktualizacja: 21.03.2023