Çalışma Zamanı Güvenlik Analizleri

1. Giriş

Bu laboratuvarda, Cloud Run ve GKE kümesine bir uygulama dağıtacak ve dağıtımın güvenlik analizlerini Software Delivery Shield Security'de görüntüleyeceksiniz.

Neler öğreneceksiniz?

  • Artifact Registry Güvenlik Analizleri
  • Cloud Run Security Insights
  • GKE Güvenlik Durumu

2. Kurulum ve Gereksinimler

Cloud projesi kurulumu

  1. Google Cloud Console'da oturum açın ve 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.pnga99b7ace416376c4.pngbd84a6d3004737c5.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. Dilediğiniz zaman bunu güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console otomatik olarak benzersiz bir dize oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Ortam Kurulumu

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

ecdc43ada29e91b.png

Cloud Shell'den bu laboratuvar için gerekli API'leri etkinleştirin:

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

Yetkilendirme istenirse devam etmek için "Yetkilendir"i tıklayın.

6356559df3eccdda.png

Bu işlem, aşağıdakine benzer bir başarı mesajı oluşturur:

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. Bu ad, laboratuvarın ilerleyen bölümlerinde kullanılacaktır:

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

3. Uygulamayı hazırlama

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

Cloud Shell'de starter-nodejs adlı yeni bir dizin oluşturun ve bu dizine geçin:

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, bir başlangıç komut dosyası komutu ve Express web uygulaması çerçevesine bağımlılık içeriyor.

Ardından, 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şkeninin tanımladığı bağlantı noktasında dinleme yapan temel bir web sunucusu oluşturur. Uygulamanız tamamlandı ve kapsayıcıya dönüştürülüp dağıtılmaya hazır.

4. Cloud Run uygulaması 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şturma işlemini 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

Derleme işleminin tamamlanması birkaç dakika sürer.

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

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

7d9fd2213f3704c4.png

Oluşturulan container görüntüsünün güvenlik analizlerini inceleyin. Taranan yapılarla ilgili bağlantıyı tıklayarak Artifact Registry'deki bu resmin güvenlik açığı ayrıntılarını görüntüleyin.

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 Security Insights

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

Cloud Run'ı açın ve REVISIONS / SECURITY (DÜZELTMELER/GÜVENLİK) sekmesindeki güvenlik analizlerini 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, SLSA spesifikasyonuna uygun olarak yazılım derleme işleminin olgunluk düzeyini tanımlayan SLSA 3. düzeyindedir.
  • Güvenlik açıkları: Uygulama bağımlılıklarında bulunan güvenlik açıkları.
  • Derleme ayrıntıları: Derlemeyle ilgili ayrıntılar (ör. derleyici ve günlükleri görüntüleme bağlantısı).
  • Derleme kaynağı: Derlemeyle ilgili, doğrulanabilir meta verilerden oluşan bir koleksiyon olan derleme kaynağı. Oluşturulan resimlerin özetleri, giriş kaynağı konumları, derleme araç zinciri, derleme adımları ve derleme süresi gibi ayrıntıları içerir.

7. GKE Güvenlik Durumu

GKE, kapsayıcı güvenlik durumunuzu değerlendirebilir ve küme ayarları, iş yükü yapılandırması ve güvenlik açıkları konusunda aktif rehberlik sunabilir. Bu özellik, güvenlik durumunuzu iyileştirmek için GKE kümelerinizi ve iş yüklerinizi tarayarak size kesin ve uygulanabilir öneriler sunan güvenlik durumu gösterge tablosunu (önizleme) içerir.

Sonraki adımlarda uygulamayı GKE kümesine dağıtacak ve GKE güvenlik durumu 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 çıkış:

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 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

GKE iş yükleri, saldırı yüzeylerini sınırlayan güvenliği artırılmış bir yapılandırmaya sahip olmalıdır. Kümelerdeki iş yüklerinde yapılandırma sorunlarını kontrol etmek, geniş ölçekte manuel olarak zor olabilir. Güvenlik durumu kontrol panelini kullanarak birden fazla kümedeki tüm çalışan iş yüklerinizin yapılandırmasını otomatik olarak tarayabilir, güvenlik durumunuzu iyileştirmek için puanlanmış sonuçlar ve öneriler alabilirsiniz.

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

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

İş yükü yapılandırmasını taramanın yanı sıra iş yükü güvenlik açığı taramasını da etkinleştirebilir ve sonuçları güvenlik duruşu kontrol panelinde inceleyebilirsiniz. Bu kontrol paneli, GKE kümelerinizin ve iş yüklerinizin güvenliğini artırmak için görüşe dayalı bilgiler ve öneriler sunan bir dizi özellikten oluşur.

GKE, GKE kümenizde çalışan her uygun kapsüldeki kapsayıcı görüntülerini, NIST gibi herkese açık CVE veritabanlarındaki güvenlik açığı verilerini kullanarak bilinen güvenlik açıkları için otomatik olarak tarar.

Kapsayıcı resimlerinizde bir 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 de girişler 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 Durumu 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 sorunları ve etkilenen iş yüklerini inceleyin.

58e6f4b6d8eaa99a.png

Güvenlik duruşu kontrol panelini neden kullanmalısınız?

Güvenlik duruşu 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üklerine müdahale etmez veya bunları kesintiye uğratmaz.
  • İşlem yapılabilir öneriler: Güvenlik durumu kontrol paneli, varsa tespit edilen sorunları düzeltmek için işlem öğeleri sunar. Bu işlemler arasında çalıştırabileceğiniz komutlar, yapabileceğiniz yapılandırma değişiklikleri örnekleri ve güvenlik açıklarını azaltmak için yapmanız gerekenlerle ilgili tavsiyeler yer alır.
  • Görselleştirme: Güvenlik durumu kontrol paneli, projenizdeki kümeleri etkileyen sorunlarla ilgili üst düzey bir görselleştirme sağlar. Ayrıca, kaydettiğiniz ilerlemeyi ve her sorunun olası etkisini gösteren grafikler de içerir.
  • Görüşe dayalı sonuçlar: GKE, keşfedilen sorunlara Google'ın güvenlik ekiplerinin uzmanlığına ve sektör standartlarına göre önem derecesi atar.
  • Denetlenebilir etkinlik günlükleri: GKE, daha iyi raporlama ve gözlemlenebilirlik için keşfedilen tüm sorunları Logging'e ekler.

8. Tebrikler!

Tebrikler! Codelab'i tamamladınız.

İşlediğimiz konular:

  • Cloud Run ve GKE'de çalışan uygulamalar ve derleme yapıları için Güvenlik Analizleri bilgileri

Temizleme

Bu eğitimde kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini önlemek amacıyla kaynakları içeren projeyi silin veya projeyi koruyup tek tek kaynakları silin.

Projeyi silme

Faturalandırılmanın önüne geçmenin en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.

—

Son güncelleme: 21.03.2023