Kubernetes veri düzlemi sağlamlaştırmanızı koruma

Bu sayfada, kubernetes veri düzlemi sağlamlaştırmaya ayrılmış Bulut için Microsoft Defender güvenlik önerileri kümesinin nasıl kullanılacağı açıklanmaktadır.

İpucu

Kubernetes kümeleri ve düğümleri için görünebilecek güvenlik önerilerinin listesi için öneriler başvuru tablosunun Kapsayıcı önerileri bölümüne bakın.

İş yükü korumanızı ayarlama

Bulut için Microsoft Defender,Kubernetes için Azure İlkesi.

Önkoşullar

Kubernetes veri düzlemi sağlamlaştırmayı etkinleştirme

Kubernetes için Azure İlkesi iki yoldan biriyle etkinleştirebilirsiniz:

Plan/bağlayıcı ayarlarını kullanarak kubernetes için Azure İlkesi geçerli ve gelecekteki tüm kümeler için etkinleştirme

Not

Bu ayarı etkinleştirdiğinizde Kubernetes podları için Azure İlkesi kümeye yüklenir. Bunu yaptığınızda podların kullanması için az miktarda CPU ve bellek ayrılır. Bu ayırma maksimum kapasiteye ulaşabilir ancak kaynak üzerindeki CPU ve belleğin geri kalanını etkilemez.

Not

EKS'de küme yöneticisinin kümenin kendisine yeni bir IAM rolü için izin eklemesini gerektiren bir sınırlama nedeniyle bağlayıcı aracılığıyla AWS'nin etkinleştirilmesi desteklenmez.

Azure abonelikleri veya şirket içi için etkinleştirme

Kapsayıcılar için Microsoft Defender'ı etkinleştirdiğinizde, "Kubernetes için Azure İlkesi" ayarı Azure Kubernetes Hizmeti ve ilgili abonelikteki Azure Arc özellikli Kubernetes kümeleri için varsayılan olarak etkinleştirilir. İlk yapılandırmada ayarı devre dışı bırakırsanız, daha sonra el ile etkinleştirebilirsiniz.

Kapsayıcılar planının altındaki "Kubernetes için Azure İlkesi" ayarlarını devre dışı bırakmışsanız, aboneliğinizdeki tüm kümelerde etkinleştirmek için aşağıdaki adımları izleyebilirsiniz:

  1. Azure Portal’ında oturum açın.

  2. Bulut için Microsoft Defender> Environment ayarlarına gidin.

  3. Uygun aboneliği seçin.

  4. Defender planları sayfasında Kapsayıcılar'ın Açık olarak ayarlandığından emin olun.

  5. Ayarlar'ı seçin.

    Screenshot showing the settings button in the Defender plan.

  6. Ayarlar ve İzleme sayfasında "Kubernetes için Azure İlkesi" seçeneğini Açık konuma getirin.

    Screenshot showing the toggles used to enable or disable the extensions.

GCP projeleri için etkinleştirme

GcP bağlayıcısında Kapsayıcılar için Microsoft Defender'ı etkinleştirdiğinizde, ilgili projede Google Kubernetes Altyapısı için "Azure Arc için Azure İlkesi Uzantısı" ayarı varsayılan olarak etkinleştirilir. İlk yapılandırmada ayarı devre dışı bırakırsanız, daha sonra el ile etkinleştirebilirsiniz.

GCP bağlayıcısı altında "Azure Arc için Azure İlkesi Uzantısı" ayarlarını devre dışı bırakmışsanız, GCP bağlayıcınızda etkinleştirmek için aşağıdaki adımları izleyebilirsiniz.

Mevcut kümelerde Kubernetes için Azure İlkesi dağıtma

Mevcut Kubernetes kümelerinde Kubernetes için Azure İlkesi Öneriler sayfasından el ile yapılandırabilirsiniz. Etkinleştirildikten sonra sağlamlaştırma önerileri kullanılabilir duruma gelir (bazı önerilerin çalışması için başka bir yapılandırma gerekir).

Not

AWS için bağlayıcıyı kullanarak uygun ölçekte ekleme yapmak mümkün değildir, ancak Azure Arc özellikli Kubernetes kümelerinin Kubernetes için Azure ilke uzantısının yüklü olması önerisini kullanarak tüm mevcut kümelere veya belirli kümelere yüklenebilir.

Kubernetesiçin Azure İlkesi belirtilen kümelere dağıtmak için:

  1. Öneriler sayfasında ilgili öneriyi arayın:

    • Azure-"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed"

    • GCP - "GKE clusters should have the Azure Policy extension".

    • AWS ve Şirket içi - "Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed". Screenshot showing the Azure Kubernetes service clusters recommendation.

      İpucu

      Öneri farklı güvenlik denetimlerine dahil edilir ve sonraki adımda hangisini seçtiğiniz önemli değildir.

  2. Herhangi bir güvenlik denetiminden, eklentiyi yükleyebileceğiniz kaynakları görmek için öneriyi seçin.

  3. İlgili kümeyi seçin ve Düzelt'i seçin.

    Screenshot that shows how to select the cluster to remediate.

Öneri paketini görüntüleme ve yapılandırma

Kubernetes için Azure İlkesi yüklemesi tamamlandıktan yaklaşık 30 dakika sonra, Bulut için Defender her birinin ilgili güvenlik denetiminde gösterildiği gibi aşağıdaki öneriler için kümelerin sistem durumunu gösterir:

Not

Kubernetes için Azure İlkesi ilk kez yüklüyorsanız, bu öneriler öneriler listesinde yeni eklemeler olarak görünür.

İpucu

Bazı önerilerin etkili bir şekilde kullanılabilmesi için Azure İlkesi aracılığıyla özelleştirilmesi gereken parametreleri vardır. Örneğin Kapsayıcı görüntülerinin yalnızca güvenilen kayıt defterlerinden dağıtılması önerisinden yararlanmak için güvenilir kayıt defterlerinizi tanımlamanız gerekir. Yapılandırma gerektiren öneriler için gerekli parametreleri girmezseniz iş yükleriniz iyi durumda değil olarak gösterilir.

Öneri adı Güvenlik Denetimi Yapılandırma gerekli
Kapsayıcı CPU ve bellek sınırları zorunlu kılınmalıdır Uygulamaları DDoS saldırılarına karşı koruma Evet
Kapsayıcı görüntüleri yalnızca güvenilen kayıt defterlerinden dağıtılmalıdır Güvenlik açıklarını düzeltin Evet
Kapsayıcılar için en az ayrıcalıklı Linux özellikleri zorunlu kılınmalıdır Erişimi ve izinleri yönetme Evet
Kapsayıcılar yalnızca izin verilen AppArmor profillerini kullanmalıdır Güvenlik yapılandırmalarını düzeltme Evet
Hizmetler yalnızca izin verilen bağlantı noktalarını dinlemelidir Yetkisiz ağ erişimini kısıtlama Evet
Konak ağı ve bağlantı noktalarının kullanımı kısıtlanmalıdır Yetkisiz ağ erişimini kısıtlama Evet
Pod HostPath birim bağlamalarının kullanımı bilinen bir listeyle kısıtlanmalıdır Erişimi ve izinleri yönetme Evet
Ayrıcalık yükseltmesi olan kapsayıcılardan kaçınılmalıdır Erişimi ve izinleri yönetme Hayır
Hassas konak ad alanlarını paylaşan kapsayıcılardan kaçınılmalıdır Erişimi ve izinleri yönetme Hayır
Kapsayıcılar için sabit (salt okunur) kök dosya sistemi zorunlu kılınmalıdır Erişimi ve izinleri yönetme Hayır
Kubernetes kümelerine yalnızca HTTPS üzerinden erişilebilir olmalıdır Aktarımdaki verileri şifreleme Hayır
Kubernetes kümeleri, API kimlik bilgilerini otomatik bağlamayı devre dışı bırakmalıdır Erişimi ve izinleri yönetme Hayır
Kubernetes kümeleri varsayılan ad alanını kullanmamalıdır En iyi güvenlik yöntemlerini uygulayın Hayır
Kubernetes kümeleri CAPSYSADMIN güvenlik özellikleri vermemelidir Erişimi ve izinleri yönetme Hayır
Ayrıcalıklı kapsayıcılardan kaçınılmalıdır Erişimi ve izinleri yönetme Hayır
Kapsayıcıları kök kullanıcı olarak çalıştırmaktan kaçınılmalıdır Erişimi ve izinleri yönetme Hayır

Özelleştirilmesi gereken parametrelerle ilgili öneriler için parametreleri ayarlamanız gerekir:

Parametreleri ayarlamak için:

  1. Azure Portal’ında oturum açın.

  2. Bulut için Microsoft Defender> Environment ayarlarına gidin.

  3. Uygun aboneliği seçin.

  4. Bulut için Defender menüsünden Güvenlik ilkesi'ni seçin.

  5. İlgili ödevi seçin. Varsayılan atamadır ASC default.

  6. Parametreler sekmesini açın ve değerleri gerektiği gibi değiştirin.

    Screenshot showing where to modify the parameters for one of the recommendations in the Kubernetes data plane hardening protection bundle.

  7. Gözden geçir ve kaydet'i seçin.

  8. Kaydet'i seçin.

Önerilerden herhangi birini zorunlu kılmak için:

  1. Öneri ayrıntıları sayfasını açın ve Reddet'i seçin:

    Screenshot showing the Deny option for Azure Policy parameter.

    Kapsamı ayarlamak için bölme açılır.

  2. Kapsamı ayarlayın ve Reddetmek için değiştir'i seçin.

Kümeleriniz için hangi önerilerin geçerli olduğunu görmek için:

  1. Bulut için Defender varlık envanteri sayfasını açın ve kaynak türü filtresini Kubernetes hizmetleri olarak ayarlayın.

  2. Araştırmak ve kullanılabilir önerileri gözden geçirmek için bir küme seçin.

İş yükü koruma kümesinden bir öneri görüntülediğinizde, kümenin yanında etkilenen podların sayısı ("Kubernetes bileşenleri") listelenir. Belirli podların listesi için kümeyi ve ardından Eylem gerçekleştir'i seçin.

Screenshot showing where to view the affected pods for a Kubernetes recommendation.

Zorlamayı test etmek için aşağıdaki iki Kubernetes dağıtımını kullanın:

  • Bunlardan biri, iş yükü koruma önerileri paketiyle uyumlu, iyi durumda bir dağıtım içindir.

  • Diğeri ise iyi durumda olmayan ve önerilerle uyumlu olmayan bir dağıtım içindir.

Örnek .yaml dosyalarını olduğu gibi dağıtın veya kendi iş yükünüzü düzeltmek için başvuru olarak kullanın.

İyi durumda dağıtım örneği .yaml dosyası

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-healthy-deployment
  labels:
    app: redis
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
      annotations:
        container.apparmor.security.beta.kubernetes.io/redis: runtime/default
    spec:
      containers:
      - name: redis
        image: <customer-registry>.azurecr.io/redis:latest
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 100m
            memory: 250Mi
        securityContext:
          privileged: false
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
          runAsNonRoot: true
          runAsUser: 1000
---
apiVersion: v1
kind: Service
metadata:
  name: redis-healthy-service
spec:
  type: LoadBalancer
  selector:
    app: redis
  ports:
  - port: 80
    targetPort: 80

İyi durumda olmayan dağıtım örneği .yaml dosyası

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-unhealthy-deployment
  labels:
    app: redis
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:      
      labels:
        app: redis
    spec:
      hostNetwork: true
      hostPID: true 
      hostIPC: true
      containers:
      - name: redis
        image: redis:latest
        ports:
        - containerPort: 9001
          hostPort: 9001
        securityContext:
          privileged: true
          readOnlyRootFilesystem: false
          allowPrivilegeEscalation: true
          runAsUser: 0
          capabilities:
            add:
              - NET_ADMIN
        volumeMounts:
        - mountPath: /test-pd
          name: test-volume
          readOnly: true
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /tmp
---
apiVersion: v1
kind: Service
metadata:
  name: redis-unhealthy-service
spec:
  type: LoadBalancer
  selector:
    app: redis
  ports:
  - port: 6001
    targetPort: 9001

Sonraki adımlar

Bu makalede Kubernetes veri düzlemi sağlamlaştırmayı yapılandırmayı öğrendiniz.

İlgili malzemeler için aşağıdaki sayfalara bakın: