1. Wprowadzenie
W tym module wdrożysz aplikację w klastrze Cloud Run i GKE oraz wyświetlisz statystyki zabezpieczeń dla wdrożenia w ramach usługi Software Delivery Shield Security.
Czego się nauczysz
- Statystyki zabezpieczeń Artifact Registry
- Statystyki zabezpieczeń Cloud Run
- Stan zabezpieczeń GKE
2. Konfiguracja i wymagania
Konfigurowanie projektu Cloud
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zmienić.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń z programowania konieczne jest odwołanie się do identyfikatora projektu (zwykle nazywa się on
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Potem nie będzie można go zmienić. Pozostanie ono przez czas trwania projektu. - Dostępna jest trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub cały projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartoś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 asynchronicznie utworzyć klaster GKE. Użyjemy go w dalszej części tego modułu:
gcloud beta container clusters create gke-cluster \
--zone us-central1-a \
--async
3. Przygotowanie aplikacji
Najpierw przygotujesz prostą aplikację Node.js opartą na Node.js, która odpowiada na żądania HTTP.
W Cloud Shell utwórz nowy katalog o nazwie starter-nodejs
, a następnie przejdź do tego katalogu:
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
Powyższy plik zawiera polecenie skryptu startowego i zależność od platformy aplikacji internetowej Express.
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
Uruchom to polecenie, aby wdrożyć aplikację:
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. Artifact Registry i statystyki zabezpieczeń Cloud Build
Kompilacja zajmie kilka minut.
Otwórz Cloud Build i przejrzyj artefakty najnowszej kompilacji.
Interfejs Cloud Build w konsoli Google Cloud zawiera panel statystyk zabezpieczeń usługi Software Delivery Shield (Tarcza dostarczania oprogramowania), w którym wyświetlane są informacje o zabezpieczeniach związane z kompilacją, na przykład poziom SLSA, luki w zależnościach i pochodzenie kompilacji.
Przejrzyj statystyki zabezpieczeń dla utworzonego obrazu kontenera. Kliknij link do przeskanowanych artefaktów, aby wyświetlić szczegółowe informacje o lukach w zabezpieczeniach tego obrazu w Artifact Registry.
Wróć do konsoli Cloud Shell i sprawdź, czy wdrożenie aplikacji Cloud Run zostało ukoń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 zabezpieczeń Cloud Run
Cloud Run zawiera panel bezpieczeństwa (wersja testowa), który wyświetla statystyki zabezpieczeń łańcucha dostaw oprogramowania, takie jak informacje o zgodności na poziomie kompilacji SLSA, pochodzenie kompilacji i luki w zabezpieczeniach w działających usługach.
Otwórz Cloud Run i przejrzyj obserwacje dotyczące zabezpieczeń na karcie REVISIONY / ZABEZPIECZENIA.
Panel zawiera te informacje:
- Tożsamość i szyfrowanie: adres e-mail domyślnego konta usługi Compute Engine i klucz szyfrowania używany do wdrożenia.
- Poziom SLSA: ta kompilacja jest na poziomie SLSA poziomu 3, który określa poziom dojrzałości procesu tworzenia oprogramowania zgodny ze specyfikacją SLSA.
- Luki w zabezpieczeniach: wszelkie luki w zabezpieczeniach wykryte w zależnościach aplikacji.
- Szczegóły kompilacji: szczegóły kompilacji, takie jak kreator i link do wyświetlania logów.
- Pochodzenie kompilacji: pochodzenie kompilacji, czyli zbiór możliwych do zweryfikowania metadanych kompilacji. Zawiera takie szczegóły jak skróty utworzonych obrazów, lokalizacje źródeł wejściowych, łańcuch narzędzi do kompilacji, kroki kompilacji i czas trwania kompilacji.
7. Stan zabezpieczeń GKE
GKE może ocenić stan zabezpieczeń kontenera i udzielać aktywnych wskazówek dotyczących ustawień klastra, konfiguracji zadań i luk w zabezpieczeniach. Zawiera panel stanu zabezpieczeń (wersja testowa), który skanuje klastry i zbiory zadań GKE, aby dostarczać wyczerpujące rekomendacje dotyczące poprawy stanu zabezpieczeń.
W następnych krokach wdrożysz aplikację w klastrze GKE i sprawdzisz statystyki zabezpieczeń 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ę za pomocą 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
Zadania GKE powinny mieć zabezpieczoną konfigurację, która ogranicza powierzchnię ataku. Ręczne sprawdzanie na dużą skalę zbiorów zadań w klastrach pod kątem problemów z konfiguracją może być trudne. Za pomocą panelu stanu zabezpieczeń możesz automatycznie skanować konfigurację wszystkich uruchomionych zbiorów zadań w wielu klastrach i zwracać praktyczne, ocenione wyniki oraz sprawdzone rekomendacje, aby poprawić stan zabezpieczeń.
Włącz skanowanie konfiguracji zadań:
gcloud beta container clusters update gke-cluster \
--region=us-central1-a \
--enable-workload-config-audit
Oprócz skanowania konfiguracji zbiorów zadań możesz też włączyć skanowanie pod kątem luk w zabezpieczeniach zbiorów zadań i sprawdzać wyniki w panelu stanu zabezpieczeń. Jest to zestaw funkcji zapewniających sprawdzone informacje i rekomendacje pozwalające zwiększyć bezpieczeństwo klastrów i zbiorów zadań GKE.
GKE automatycznie skanuje obrazy kontenerów w każdym odpowiednim podze 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 znaleziona luka w zabezpieczeniach, GKE przypisuje ocenę ważności i wyświetla wyniki w panelu stanu zabezpieczeń w konsoli Google Cloud. GKE dodaje też wpisy do usługi 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ę Security Posture w GKE.
Poczekaj kilka minut na zakończenie kontroli zadania, a następnie sprawdź wyniki.
Przejrzyj potencjalne problemy z konfiguracją i zadania, których dotyczy problem.
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ą ani nie zakłócają uruchomionych zadań.
- Rekomendacje dotyczące działań: panel stanu zabezpieczeń (jeśli jest dostępny) zawiera działania umożliwiające rozwiązanie wykrytych potencjalnych problemów. Obejmują one polecenia, które możesz uruchomić, przykłady zmian w konfiguracji, które należy wprowadzić, oraz porady dotyczące sposobów ograniczania luk w zabezpieczeniach.
- Wizualizacja: panel stanu zabezpieczeń zapewnia ogólną wizualizację potencjalnych problemów, które mają wpływ na klastry w projekcie. Zawiera wykresy i diagramy prezentujące postępy i potencjalny wpływ poszczególnych potencjalnych problemów.
- Recenzje: GKE przypisuje ocenę ważności do wykrytych potencjalnych problemów na podstawie doświadczenia zespołów Google ds. bezpieczeństwa i standardów branżowych.
- Logi zdarzeń podlegające kontroli: GKE dodaje wszystkie wykryte potencjalne problemy do usługi Logging, aby zwiększyć ich raportowanie i dostrzegalność.
8. Gratulacje!
Gratulacje! Ćwiczenie z programowania zostało ukończone.
Omówione zagadnienia:
- Informacje o zabezpieczeniach 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.
Usuwam projekt
Najprostszym sposobem na uniknięcie płatności jest usunięcie projektu utworzonego na potrzeby samouczka.
–
Ostatnia aktualizacja: 21.03.2023 r.