Ç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 Güvenliği Analizleri
  • 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.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. 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, benzersiz bir dizeyi otomatik olarak 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

Yetkilendirmeniz 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

Öncelikle, 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 alınmaya ve 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ş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'u 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ü için güvenlik analizlerini inceleyin. Taranan yapılarla ilgili bağlantıyı tıklayarak Artifact Registry'deki bu görüntüyle ilgili 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 Güvenliği Analizleri

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) sekmesinde 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 Seviyesi: Bu derleme, SLSA spesifikasyonuna uygun olarak yazılım derleme işleminin olgunluk düzeyini tanımlayan SLSA Seviyesi 3'tedir.
  • 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 çı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 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 uygulanabilir, 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 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 duruşu 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 bulunan 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 panelinde, projenizdeki kümeleri etkileyen sorunlarla ilgili genel bir görselleştirme sunulur. Ayrıca, kaydettiğiniz ilerlemeyi ve her sorunun olası etkisini gösteren grafikler de yer alır.
  • Görüşe dayalı sonuçlar: GKE, Google'ın güvenlik ekiplerinin uzmanlığına ve sektör standartlarına göre keşfedilen sorunlara ö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