Çalışma Zamanı Güvenlik Analizleri

1. Giriş

Bu laboratuvarda, Cloud Run ve GKE kümesine bir uygulama dağıtacak ve Software Delivery Shield Güvenliği'nde dağıtımla ilgili güvenlik analizlerini görüntüleyeceksiniz.

Neler öğreneceksiniz?

  • Artifact Registry Güvenlik Analizleri
  • Cloud Run Güvenlik Analizleri
  • GKE Güvenlik Durağı

2. Kurulum ve Gereksinimler

Cloud projesi kurulumu

  1. Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğini (genellikle PROJECT_ID olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz için bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Ortam Kurulumu

Arama çubuğunun sağındaki simgeyi tıklayarak Cloud Shell'i etkinleştirin.

ecdc43ada29e91b.png

Cloud Shell'den bu laboratuvarda gerekli API'leri etkinleştirin:

gcloud services enable run.googleapis.com \
  cloudbuild.googleapis.com \
  artifactregistry.googleapis.com \
  container.googleapis.com \
  containersecurity.googleapis.com

Yetki vermeniz istenirse "Yetkilendir"i tıklayın seçeneğini tıklayın.

6356559df3eccdda.png

Bu işlem, aşağıdakine benzer başarılı bir mesaj üretir:

Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.

GKE kümesini eşzamansız olarak oluşturmak için komutu çalıştırın. Laboratuvarın ilerleyen bölümlerinde kullanılacaktır:

gcloud beta container clusters create gke-cluster \
    --zone us-central1-a \
    --async

3. Başvuruyu Hazırla

İlk olarak HTTP isteklerine yanıt veren, ekspres tabanlı basit bir Node.js uygulaması hazırlayacaksınız.

Cloud Shell'de starter-nodejs adında yeni bir dizin oluşturun ve bu dizinde değişiklik yapın:

mkdir starter-nodejs
cd starter-nodejs

Aşağıdaki komutları çalıştırarak bir package.json dosyası oluşturun:

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

Yukarıdaki dosya, komut dosyası başlat komutu ve Express web uygulaması çerçevesine bağımlılığı içerir.

Daha sonra, aynı dizinde aşağıdaki komutları çalıştırarak bir index.js dosyası oluşturun:

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

Bu kod, PORT ortam değişkeni tarafından tanımlanan bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur. Uygulamanız tamamlandı. Container mimarisine alınıp dağıtılmaya hazır.

4. Cloud Run Uygulamasını Dağıtma

Uygulamanızı dağıtmak için aşağıdaki komutu çalıştırın:

gcloud run deploy starter-app \
  --source . \
  --region us-central1 \
  --allow-unauthenticated \
  --max-instances=3

Artifact Registry deposu oluşturmayı onaylayın:

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 ve Cloud Build Güvenlik Analizleri

Derlemenin tamamlanması birkaç dakika sürer.

Cloud Build'i açın ve en son derleme için derleme yapılarını inceleyin.

Google Cloud Console'daki Cloud Build kullanıcı arayüzünde, derlemeyle ilgili güvenlik bilgilerini (SLSA düzeyi, bağımlılıklardaki güvenlik açıkları ve derleme kaynağı gibi) gösteren Software Delivery Shield (Yazılım Yayınlama Kalkanı) Güvenlik analiz paneli bulunur.

7d9fd2213f3704c4.png

Oluşturulan container görüntüsüyle ilgili güvenlik analizlerini inceleyin. Artifact Registry'de bu görüntünün güvenlik açığı ayrıntılarını görüntülemek için taranan yapıların bağlantısını izleyin.

Cloud Shell konsoluna dönün ve Cloud Run uygulama dağıtımının tamamlandığını doğrulayın.

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. Cloud Run Güvenlik Analizleri

Cloud Run; SLSA derleme düzeyi uygunluk bilgileri, derleme kaynağı ve çalışan hizmetlerde bulunan güvenlik açıkları gibi yazılım tedarik zinciri güvenlik bilgilerini gösteren bir güvenlik paneli (Önizleme) içerir.

Cloud Run'ı açın ve DÜZENLEMELER / GÜVENLİK sekmesinde Güvenlik Analizleri'ni inceleyin.

62a9f5d26207e58e.png

Bu panelde aşağıdaki bilgiler gösterilir:

  • Kimlik ve şifreleme: Varsayılan Compute Engine hizmet hesabının e-posta adresi ve dağıtım için kullanılan şifreleme anahtarı.
  • SLSA Düzeyi: Bu derleme, HDS spesifikasyonuna uygun şekilde yazılım derleme sürecinin olgunluk düzeyini belirleyen SLSA 3. Seviyede yer alıyor.
  • Güvenlik açıkları: Uygulama bağımlılıklarında bulunan tüm güvenlik açıkları.
  • Derleme ayrıntıları: Oluşturucu ve günlükleri görüntüleme bağlantısı gibi derlemeyle ilgili ayrıntılar.
  • Kuruluş kaynağı: Derleme hakkında doğrulanabilir meta verilerden oluşan bir derleme olan derlemenin kanıtı. Derlenen görüntülerin özetleri, giriş kaynağı konumları, derleme araç zinciri, derleme adımları ve derleme süresi gibi ayrıntıları içerir.

7. GKE Güvenlik Direği

GKE, container güvenlik durumunuzu değerlendirebilir ve küme ayarları, iş yükü yapılandırması ve güvenlik açıkları hakkında aktif rehberlik sağlayabilir. Güvenlik düzeyinizi artıracak bilinçli ve uygulanabilir öneriler sunmak için GKE kümelerinizi ve iş yüklerinizi tarayan güvenlik durumu kontrol panelini (Önizleme) içerir.

Sonraki adımlarda uygulamayı GKE kümesine dağıtacak ve GKE güvenlik duruşu kontrol panelinde güvenlik analizlerini inceleyeceksiniz.

Aşağıdaki komutu çalıştırarak kümenin hazır olduğunu doğrulayın:

gcloud beta container clusters list

Örnek çıktı:

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

GKE kümesi için kimlik bilgilerini ve yapılandırmayı alın:

gcloud container clusters get-credentials gke-cluster  \
    --region=us-central1-a

Önceki adımda oluşturulan görüntüyü kullanarak uygulamayı dağıtmak için şu komutu çalıştırın:

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

İdeal olarak GKE iş yüklerinin, saldırı yüzeylerini sınırlayan sağlamlaştırılmış bir yapılandırmaya sahip olması gerekir. Kümeler genelindeki iş yüklerini yapılandırma sorunları için geniş ölçekte manuel olarak kontrol etmek zor olabilir. Güvenlik duruşu kontrol panelini kullanarak birden fazla kümede çalışan tüm iş yüklerinizin yapılandırmasını otomatik olarak tarayabilir ve güvenlik düzeyinizi iyileştirecek eyleme dönüştürülebilir, puanlanmış sonuçlar ve özenli öneriler alabilirsiniz.

İş yükü yapılandırma taramasını etkinleştir:

gcloud beta container clusters update gke-cluster \
    --region=us-central1-a \
    --enable-workload-config-audit

Tarama iş yükü yapılandırmasına ek olarak, iş yükü güvenlik açığı taramasını etkinleştirebilir ve GKE kümeleriniz ile iş yüklerinizin güvenliğini iyileştirmek için ayrıntılı bilgiler ve öneriler sunan bir dizi özellik olan güvenlik durumu kontrol panelinden sonuçları inceleyebilirsiniz.

GKE, NIST gibi herkese açık CVE veritabanlarından gelen güvenlik açığı verilerini kullanarak GKE kümenizde çalışan her uygun Kapsüldeki container görüntülerini bilinen güvenlik açıklarına karşı otomatik olarak tarar.

Container görüntülerinizde güvenlik açığı bulunursa GKE bir önem derecesi atar ve sonuçları Google Cloud Console'daki güvenlik durumu kontrol panelinde gösterir. GKE, denetleme ve izlenebilirlik için Cloud Logging'e girişler de ekler.

İş yükü güvenlik açığı taramasını etkinleştirin:

gcloud beta container clusters update gke-cluster \
    --region=us-central1-a \
    --enable-workload-vulnerability-scanning \
    --async

GKE Güvenlik Durağı sayfasını açın.

İş yükü denetiminin tamamlanması için birkaç dakika bekleyin ve ardından sonuçları inceleyin.

5b1b8158bc55ce67.png

Yapılandırmayla ilgili endişeleri ve etkilenen iş yüklerini inceleyin.

58e6f4b6d8eaa99a.png

Güvenlik düzeyi kontrol panelini neden kullanmalısınız?

Güvenlik durumu kontrol paneli, uygun tüm GKE kümeleri için etkinleştirebileceğiniz temel bir güvenlik önlemidir. Google Cloud, aşağıdaki nedenlerden dolayı tüm kümelerinizde güvenlik durumu kontrol panelini kullanmanızı önerir:

  • Minimum kesinti: Özellikler, çalışan iş yüklerini etkilemez veya kesintiye uğratmaz.
  • Uygulanabilir öneriler: Güvenlik durumu kontrol panelinde, tespit edilen endişeleri gidermeye yönelik işlem öğeleri (varsa) yer alır. Bu işlemler arasında çalıştırabileceğiniz komutlar, yapılması gereken yapılandırma değişikliklerine dair örnekler ve güvenlik açıklarını azaltmak için yapılması gerekenlere dair öneriler bulunur.
  • Görselleştirme: Güvenlik durumu kontrol paneli, projenizdeki kümeleri etkileyen endişelerin üst düzey bir görselleştirmesini sunar ve kaydettiğiniz ilerlemeyi ve her sorunun potansiyel etkisini gösteren çizelgeler ve grafikler içerir.
  • Görüşülen sonuçlar: GKE, Google'ın güvenlik ekiplerinin ve endüstri standartlarının uzmanlığına bağlı olarak tespit edilen endişelere bir önem derecesi atar.
  • Denetlenebilir olay günlükleri: GKE, daha iyi raporlanabilirlik ve gözlemlenebilirlik için tespit edilen tüm endişeleri Logging'e ekler.

8. Tebrikler!

Tebrikler! Codelab'i tamamladınız.

İşlediğimiz konular:

  • Cloud Run ve GKE'de çalışan derleme yapıları ve uygulama için Security Insights bilgileri

Temizleme

Bu eğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız kaynakları içeren projeyi silin veya projeyi tutup tek tek kaynakları silin.

Projeyi silme

Faturalandırmayı ortadan kaldırmanın en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.

Son güncelleme: 21.03.2023