Tüm Ürünler
Search
Belge Merkezi

Container Compute Service:Use the cluster API server auditing feature

Son Güncelleme:Oct 08, 2026

Denetim, Kubernetes API sunucusuna yapılan istekleri ve bu isteklerin sonuçlarını kaydeder. ACK, küme yöneticilerinin hangi kaynağa, ne zaman ve kim tarafından ne yapıldığını belirlemesine yardımcı olan API sunucusu denetim günlükleri sağlar. Bu günlükleri kullanarak kümenin işlem geçmişini izleyebilir, sorunları giderebilir ve güvenlik operasyonlarını kolaylaştırabilirsiniz.

Adım 1: API sunucusu denetimini etkinleştirin

Bir ACK kümesi oluşturduğunuzda, Enable Log Service seçeneği varsayılan olarak seçilir ve bu seçenek API sunucusu denetim özelliğini etkinleştirir. Küme oluşturma sırasında bu özelliği etkinleştirmediyseniz, etkinleştirmek için aşağıdaki adımları izleyin.

  1. ACS konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters öğesini tıklayın.

  2. Clusters sayfasında hedef kümenin adını tıklayın. Sol gezinme bölmesinde Security > Audit seçeneklerini belirleyin.

Küme günlüğü veya denetimi devre dışı bırakıldıysa, ekrandaki talimatları izleyerek bir SLS projesi manuel olarak seçin ve özelliği etkinleştirin.

Önemli

Hesabınızın yeterli Log Service (SLS) kaynak kotasına sahip olduğundan emin olun. Kotaları aşarsanız küme denetimi özelliğini etkinleştiremezsiniz.

  • Oluşturulabilecek SLS proje sayısı kotası.

  • Tek bir SLS projesinde oluşturulabilecek Logstore sayısı kotası.

  • Tek bir SLS projesinde oluşturulabilecek pano sayısı kotası.

SLS kotaları ve bunların nasıl ayarlanacağı hakkında daha fazla bilgi için bkz. Kaynak kotalarını ayarlama.

Adım 2: Denetim raporlarını görüntüleyin

Önemli

Yerleşik denetim raporlarını değiştirmeyin. Özel raporlar oluşturmanız gerekiyorsa Log Service (SLS) konsolunu kullanın.

ACK dört yerleşik denetim günlüğü raporu sunar: Cluster Audit Overview, Operations Overview, Operation Details ve Kubernetes CVE güvenlik riskleri. Cluster Auditing sayfasında denetim olaylarını ad alanı veya RAM kullanıcısı gibi boyutlara göre filtreleyebilir ve aşağıdaki bilgileri almak için raporları kullanabilirsiniz.

Sonuçları elde ettikten sonra, tam ekran görüntüleme veya ilgili sorgu ifadesini önizleme gibi ek işlemleri gerçekleştirmek için bir grafiğin sağ üst köşesindeki image.png simgesini tıklayın.

Cluster Audit Overview

Cluster Audit Overview raporu, bir ACK kümesindeki olayların genel bir özetini gösterir ve RAM kullanıcı işlemleri, genel ağ erişimi, komut çalıştırmaları, kaynak silme işlemleri, Secret erişimi ve Kubernetes CVE güvenlik riskleri gibi önemli olaylarla ilgili ayrıntılar sağlar.

Operations Overview

Operations Overview raporu, aşağıdakiler dahil olmak üzere yaygın ACK küme hesaplama, ağ ve depolama kaynaklarında oluşturma, güncelleme, silme ve erişim gibi işlemlerin istatistiklerini gösterir:

  • Hesaplama kaynakları: Deployments, StatefulSets, Jobs, CronJobs, Pods ve DaemonSets.

  • Ağ kaynakları: Services ve Ingresses.

  • Depolama kaynakları: ConfigMaps, Secrets ve PersistentVolumeClaims.

  • Erişim kontrolü kaynakları: Roles, ClusterRoles, RoleBindings ve ClusterRoleBindings.

Operation Details

Bu rapor, bir ACK kümesindeki belirli bir kaynak türü için ayrıntılı bir işlem listesi görüntüler. Gerçek zamanlı bir sorgu çalıştırmak için bir kaynak türü seçin veya girin. Rapor; her işlem türü için toplam olay sayısını, ad alanları arasındaki dağılımı, başarı oranını, zaman serisi eğilimlerini ve ayrıntılı bir işlem listesini gösterir.

Not

Kubernetes'te kayıtlı CustomResourceDefinition (CRD) kaynaklarını veya listelenmeyen diğer kaynakları görüntülemek için kaynak adının çoğul formunu manuel olarak girebilirsiniz. Örneğin, AliyunLogConfig adlı bir CRD kaynağı için AliyunLogConfigs girin.

Kubernetes CVE güvenlik riskleri

Bu rapor, mevcut kümedeki potansiyel Kubernetes CVE güvenlik risklerini görüntüler. Gerçek zamanlı bir sorgu gerçekleştirmek için bir RAM kullanıcı kimliğini seçin veya girin. Rapor, belirtilen hesapla ilişkili Kubernetes CVE güvenlik risklerini gösterir. CVE ayrıntıları ve çözümleri hakkında daha fazla bilgi için bkz. [[CVE Güvenliği] Güvenlik Açığı Düzeltme Duyurusu](t2551161.xdita#).

(İsteğe Bağlı) Adım 3: Ayrıntılı günlük kayıtlarını görüntüleyin

Özel sorgular çalıştırmanız veya denetim günlüklerini analiz etmeniz gerekiyorsa Log Service (SLS) konsolunda ayrıntılı günlük kayıtlarını görüntüleyebilirsiniz.

Not

Varsayılan olarak, bir ACK kümesinden gelen API sunucusu denetim günlükleri Log Service (SLS) içindeki karşılık gelen Logstore'da 30 gün boyunca saklanır. Veri saklama süresini değiştirmek için bkz. Logstore'u yönetme.

  1. ACS konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters öğesini tıklayın.

  2. Clusters sayfasında hedef kümenin adını tıklayın. Sol gezinme bölmesinde Cluster Information seçeneğini belirleyin.

  3. Temel Bilgiler sekmesini tıklayın. Cluster Resources bölümünde Log Service Project yanındaki proje kimliğini tıklayın. Proje listesinde audit-${clusterid} adlı Logstore'u tıklayın.

    Küme oluşturma sırasında, belirtilen SLS projesine otomatik olarak audit-${clusterid} adlı bir Logstore eklenir.

    Önemli

    Denetim günlükleri için kullanılan Logstore önceden yapılandırılmış indekslere sahiptir. İndeksleri değiştirmeyin. Aksi takdirde raporlar geçersiz hale gelebilir.

  4. Arama kutusuna bir sorgu ve analiz ifadesi girin, son 15 dakika gibi bir zaman aralığı belirtin ve sonuçları görüntülemek için Ara & Analiz Et öğesini tıklayın.

    Aşağıdaki listede denetim günlükleri için yaygın arama yöntemleri açıklanmaktadır:

    • Belirli bir RAM kullanıcısının işlem kayıtlarını sorgulamak için RAM kullanıcı kimliğini girin ve Ara & Analiz Et öğesini tıklayın.

    • Belirli bir kaynak üzerindeki işlemleri sorgulamak için bir hesaplama, ağ, depolama veya erişim kontrolü kaynağının adını girin ve Ara & Analiz Et öğesini tıklayın.

    • Sistem bileşenlerinden gelen işlemleri filtrelemek için NOT user.username: node NOT user.username: serviceaccount NOT user.username: apiserver NOT user.username: kube-scheduler NOT user.username: kube-controller-manager girin ve ardından Ara & Analiz Et öğesini tıklayın.

    Sorgu ve analiz yöntemleri hakkında daha fazla bilgi için bkz. Log Service sorgulama ve analizi.

(İsteğe Bağlı) Adım 4: Uyarıları yapılandırın

Belirli kaynaklar üzerindeki işlemler için gerçek zamanlı uyarılar almanız gerekiyorsa Log Service (SLS) uyarı özelliğini kullanabilirsiniz. Desteklenen bildirim yöntemleri arasında DingTalk sohbet botları, özel Webhook'lar ve Bildirim Merkezi bulunur. Daha fazla bilgi için bkz. Log Service için uyarı oluşturma.

Örnek 1: Bir konteynerdeki komut çalıştırma için uyarı

Bir şirketin katı Kubernetes küme kullanım ilkeleri vardır ve kullanıcıların konteynerlerde oturum açmasına veya komut çalıştırmasına izin vermez. Bir kullanıcı komut çalıştırırsa hemen bir uyarı gönderilir. Uyarı bildirimi; erişilen belirli konteyner, çalıştırılan komut, işlemi yapan kişi, olay kimliği, zaman damgası ve kaynak IP adresi gibi bilgileri içermelidir.

  • Sorgu ifadesi:

    verb : create and objectRef.subresource:exec and stage:  ResponseStarted | SELECT auditID as "Event ID", date_format(from_unixtime(__time__), '%Y-%m-%d %T' ) as "Operation Time",  regexp_extract("requestURI", '([^\?]*)/exec\?.*', 1)as "Resource",  regexp_extract("requestURI", '\?(.*)', 1)as "Command" ,"responseStatus.code" as "Status Code",
     CASE 
     WHEN "user.username" != 'kubernetes-admin' then "user.username"
     WHEN "user.username" = 'kubernetes-admin' and regexp_like("annotations.authorization.k8s.io/reason", 'RoleBinding') then regexp_extract("annotations.authorization.k8s.io/reason", ' to User "(\w+)"', 1)
     ELSE 'kubernetes-admin' END  
     as "Operator Account", 
    CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE  sourceIPs END
    as "Source Address" order by "Operation Time" desc  limit 10000
  • Tetikleme koşulu: "Event ID" =~ ".*".

Örnek 2: Başarısız genel API sunucusu erişimi için uyarı

Bir kümede genel erişim etkindir. Kötü niyetli saldırıları önlemek için genel erişim denemelerinin sayısını ve başarısızlık oranını izlemeniz gerekir. Erişim denemesi sayısı belirtilen bir eşik değerine (örneğin 10) ulaştığında ve başarısızlık oranı belirtilen bir eşik değerini (örneğin %50) aştığında hemen bir uyarı gönderilir. Uyarı bildirimi; kullanıcının IP adresinin bulunduğu bölge, kaynak IP adresi ve yüksek riskli bir IP adresi olup olmadığı gibi bilgileri içermelidir.

  • Sorgu ifadesi:

    * | select ip as "Source Address", total as "Access Count", round(rate * 100, 2) as "Failure Rate %", failCount as "Illegal Access Count", CASE when security_check_ip(ip) = 1 then 'yes' else 'no' end  as "Is High-Risk IP",  ip_to_country(ip) as "Country", ip_to_province(ip) as "Province", ip_to_city(ip) as "City", ip_to_provider(ip) as "Carrier" from (select CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE  sourceIPs END
    as ip, count(1) as total,
    sum(CASE WHEN "responseStatus.code" < 400 then 0 
    ELSE 1 END) * 1.0 / count(1) as rate,
    count_if("responseStatus.code" = 403) as failCount
    from log  group by ip limit 10000) where ip_to_domain(ip) != 'intranet' and ip not LIKE '%,%' and not try(is_subnet_of('<your_subnet_ip_address>')) ORDER by "Access Count" desc limit 10000
  • Tetikleme koşulu: "Source Address" =~ ".*".

İlgili işlemler

SLS projesini değiştir

API sunucusu denetim günlüklerini başka bir SLS projesine geçirmek için küme denetimindeki Change Log Service Project özelliğini kullanın.

  1. ACS konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters öğesini tıklayın.

  2. Clusters sayfasında hedef kümenin adını tıklayın. Sol gezinme bölmesinde Security > Audit seçeneklerini belirleyin.

  3. Küme denetimi sayfasının sağ üst köşesinde, küme denetim günlüklerini başka bir SLS projesine geçirmek için Change Log Service Project öğesini tıklayın.

API sunucusu denetimini devre dışı bırak

API sunucusu denetimi özelliğini devre dışı bırakmak için aşağıdaki yöntemi kullanın.

  1. ACS konsolu üzerinde oturum açın. Sol gezinme bölmesinde Clusters öğesini tıklayın.

  2. Clusters sayfasında hedef kümenin adını tıklayın. Sol gezinme bölmesinde Security > Audit seçeneklerini belirleyin.

  3. Cluster Auditing sayfasının sağ üst köşesinde, mevcut küme için denetim özelliğini devre dışı bırakmak üzere Disable Cluster Auditing öğesini tıklayın.

Bir ACK kümesinde üçüncü taraf bir günlük çözümünü kullanın

ACK küme denetim günlüklerini kaydetmek için Log Service (SLS) kullanmanızı öneririz. Ancak üçüncü taraf bir günlük hizmeti kullanmak istiyorsanız, kümeyi oluştururken SLS kullanmamayı seçebilir ve denetim günlüklerini toplamak ile almak için başka bir günlük çözümünü entegre edebilirsiniz.

Referans: API sunucusu denetim yapılandırması

Bir ACK kümesi oluştururken küme bileşenlerini yapılandırdığınızda, Enable Log Service varsayılan olarak seçilir. Bu seçenek, API sunucusu denetim özelliğini etkinleştirir; böylece olay verileri bir denetim ilkesine göre toplanır ve arka uca yazılır.

Denetim ilkesi

Olay günlüğü toplama kuralları denetim düzeyine göre değişir.


Denetim düzeyi


Günlük toplama kuralı


None


Kuralla eşleşen olaylar toplanmaz.


Metadata


Kullanıcı bilgileri ve zaman damgası gibi istek meta verilerini toplar ancak istek veya yanıt gövdesini toplamaz.


Request


İstek meta verilerini ve istek gövdesini toplar ancak yanıt gövdesini toplamaz. Bu kural, kaynak dışı istekler için geçerli değildir.


RequestResponse


İstek meta verilerini, istek gövdesini ve yanıt gövdesini toplar. Bu kural, kaynak dışı istekler için geçerli değildir.

Aşağıdaki denetim ilkesini bir YAML dosyası olarak kaydedin ve --audit-policy-file başlangıç bayrağını kullanarak API sunucusuna uygulayın.

Örnek YAML dosyası

apiVersion: audit.k8s.io/v1 # Required. Use audit.k8s.io/v1 for clusters that run Kubernetes v1.24 or later, and audit.k8s.io/v1beta1 for clusters that run earlier versions.
kind: Policy
# Do not generate audit events for requests at the RequestReceived stage.
omitStages:
  - "RequestReceived"
rules:
  # The following types of requests are frequent and have low potential risks. We recommend that you set the level to None to skip auditing.
  - level: None
    users: ["system:kube-proxy"]
    verbs: ["watch"]
    resources:
      - group: "" # core
        resources: ["endpoints", "services"]
  - level: None
    users: ["system:unsecured"]
    namespaces: ["kube-system"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["configmaps"]
  - level: None
    users: ["kubelet"] # legacy kubelet identity
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    userGroups: ["system:nodes"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    users:
      - system:kube-controller-manager
      - system:kube-scheduler
      - system:serviceaccount:kube-system:endpoint-controller
    verbs: ["get", "update"]
    namespaces: ["kube-system"]
    resources:
      - group: "" # core
        resources: ["endpoints"]
  - level: None
    users: ["system:apiserver"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["namespaces"]
  # For read-only URLs, such as /healthz*, /version*, and /swagger*, set the level to None to skip auditing.
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  # Set the level to None for events to skip auditing.
  - level: None
    resources: 
      - group: "" # core
        resources: ["events"]
  # For interfaces such as Secrets, ConfigMaps, and TokenReviews that may contain sensitive information or binary files, set the level to Metadata.
  - level: Metadata
    resources:
      - group: "" # core
        resources: ["secrets", "configmaps"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
  # Requests may return large amounts of data. Set the level to Request to not collect the response body.
  - level: Request
    verbs: ["get", "list", "watch"]
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # For known Kubernetes APIs, the level is set to RequestResponse by default to return the request and response bodies.
  - level: RequestResponse
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # For all other requests, the level is set to Metadata by default.
  - level: Metadata
    Not

    Bir istek alındıktan sonra günlük kaydı hemen başlamaz. Yanıt üst bilgisi gönderildikten sonra başlar.

    Sistem, kube-proxy watch istekleri, kubelet ve system:nodes tarafından yapılan düğümler için GET istekleri, kube-system bileşenleri tarafından uç noktalarda gerçekleştirilen işlemler ve API sunucusundan ad alanları için yapılan GET istekleri gibi çok sayıda gereksiz isteği denetlemez.

    authentication, rbac, certificates, autoscaling ve storage gibi hassas arayüzler için sistem okuma ve yazma işlemlerine ilişkin karşılık gelen istek ve yanıt gövdelerini kaydeder.

Denetim arka ucu

Denetim arka ucu, toplanan olayları standart JSON formatında günlük dosyaları olarak depolar.