Artifact Guard-Richtlinien konfigurieren

In diesem Dokument wird beschrieben, wie Sie Artifact Guard-Richtlinien erstellen und verwalten. Eine Übersicht über den Dienst, die Funktionen und die Vorteile finden Sie unter Übersicht über Artifact Guard.

Hinweis

Bevor Sie eine Richtlinie für Artifact Guard erstellen können, müssen Sie Artifact Guard in Security Command Center aktivieren und die erforderlichen IAM-Rollen und -Berechtigungen (Identity and Access Management) erhalten.

Anschließend können Sie eine Richtlinie in der Google Cloud Console oder mit der Google Cloud CLI erstellen.

Artifact Guard aktivieren

Folgen Sie der Anleitung unter Security Command Center-Dienste konfigurieren, um Artifact Guard zu aktivieren.

Erforderliche Rolle

Bitten Sie Ihren Administrator, Ihnen die folgende IAM-Rolle (Identity and Access Management) für Ihr Projekt oder Ihre Organisation zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung von Artifact Guard benötigen:

  • Artifact Scan Guard Evaluation Admin (roles/artifactscanguard.policyEvaluator)

Diese Rolle kann über die Google Cloud Console oder durch Ausführen des folgenden Google Cloud CLI-Befehls zugewiesen werden:

Projekt

  gcloud organizations add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL" \
        --role="roles/artifactscanguard.policyEvaluator" \

Ersetzen Sie Folgendes:

  • PROJECT_ID
  • YOUR_SERVICE_ACCOUNT_EMAIL

Organisation

  gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
        --member="serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL" \
        --role="roles/artifactscanguard.policyEvaluator" \

Ersetzen Sie Folgendes:

  • ORGANIZATION_ID
  • YOUR_SERVICE_ACCOUNT_EMAIL

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Weitere Artifact Guard-Rollen finden Sie unter Artifact Guard-Rollen und ‑Berechtigungen.

Richtlinie in der Google Cloud Console erstellen

So erstellen Sie eine Richtlinie für Artifact Guard in der Google Cloud -Konsole:

  1. Rufen Sie in der Google Cloud -Konsole Sicherheit > Regeln auf und klicken Sie auf Artifact Guard-Richtlinie erstellen oder Richtlinie erstellen.

  2. Geben Sie eine Richtlinien-ID und eine Beschreibung für die Richtlinie ein und klicken Sie auf Weiter.

  3. Wählen Sie Richtlinienbereiche und ‑aktionen aus:

    • CI/CD-Plattform

      • Connectors auswählen: Die Connectors, mit denen diese Richtlinie verknüpft werden soll. Diese Richtlinie wird für jeden CI/CD-Build ausgewertet, der mit den ausgewählten Connectors verknüpft ist.
      • Richtlinienaktion: Wählen Sie die Aktion aus, die bei einem Verstoß gegen die Richtlinie ausgeführt werden soll.
        • Builds blockieren, die die Richtlinie nicht erfüllen
        • Builds mit Benachrichtigungen genehmigen: Die Ergebnisse der CI/CD-Scannerrichtlinienauswertung werden in den verbundenen Build-Pipelines angezeigt.
    • Registry

      • Container Analysis-Projekte: Dies gilt nur für Organisationen, nicht für Projekte. Fügen Sie die Google Cloud -Projekte hinzu, auf die diese Richtlinie angewendet werden soll.
      • Artifact Registry-Repositories: Wählen Sie die Repositories aus, auf die diese Richtlinie angewendet werden soll. Dies müssen gültige Artifact Registry-Repositories sein. Wenn Sie das Feld leer lassen, wird die Richtlinie auf alle Repositories angewendet.
      • Richtlinienaktion: Wählen Sie die Aktion aus, die bei einem Verstoß gegen die Richtlinie ausgeführt werden soll.
        • Nur prüfen: Die Richtlinie wird ausgewertet und alle Verstöße werden zu Prüfzwecken protokolliert, ohne die Ressource zu blockieren. Wenn Sie Verstöße sehen möchten, müssen Sie die API mit ListArtifactPoliciesEvaluations und GetArtifactPoliciesEvaluation aufrufen.
        • Zugangskontrolle: Wenn während der Auswertung der Richtlinie ein Verstoß auftritt, wird die Ressource blockiert.
          • Richtlinien zur Binärautorisierung auf Probelaufmodus festlegen: Weitere Informationen finden Sie unter Probelaufmodus aktivieren.
          • Binärautorisierungsprojekte: Dies gilt nur für Organisationen, nicht für Projekte. Fügen Sie die Google Cloud Projekte hinzu, auf die die Zugangssteuerung angewendet werden soll.
          • GKE-Cluster: Wenn dieses Feld leer gelassen wird, wird die Zugangssteuerung auf alle GKE-Cluster angewendet.
          • Richtlinien zur Binärautorisierung überschreiben: Dieses Kästchen muss ausgewählt sein, damit die Richtlinie zur Binärautorisierung für die Zugangssteuerung aktualisiert werden kann.
    • Laufzeit

      • Laufzeitprojekte: Dies gilt nur für Organisationen, nicht für Projekte. Fügen Sie Laufzeitprojekte hinzu, die GKE-Cluster enthalten.
      • GKE-Cluster: Wählen Sie die GKE-Cluster aus, auf die diese Richtlinie angewendet werden soll. Wenn Sie dieses Feld leer lassen, wird die Richtlinie auf alle GKE-Cluster in den ausgewählten Projekten angewendet.
  4. Definieren Sie die Richtlinienregel. Eine Richtlinienregel ist eine Reihe von Kriterien, die festlegen, welche Sicherheitslücken und Pakete in Ihrer Umgebung zulässig sind. Eine Richtlinienregel umfasst Folgendes:

    • Schweregradschwellenwert: Legen Sie den Mindestschweregrad für eine Sicherheitslücke fest, damit sie in die Richtlinienauswertung einbezogen wird. Sicherheitslücken müssen diesen Schwellenwert erreichen oder überschreiten, um berücksichtigt zu werden.

      Wenn Sie die Regel beispielsweise auf Mittel konfigurieren, werden alle Sicherheitslücken mit dem Schweregrad Mittel, Hoch und Kritisch in die Bewertung einbezogen.

    • Grenzwert für Anzahl der Sicherheitslücken: Legt die maximale Anzahl der zulässigen Sicherheitslücken fest, nachdem andere Richtlinienfilter angewendet wurden. Die Richtlinie wird nur verletzt, wenn die Anzahl dieser spezifischen, gefilterten Sicherheitslücken das Limit überschreitet.

      Wenn Sie beispielsweise einen Schweregradschwellenwert von Hoch festlegen, Sicherheitslücken mit nicht verfügbaren Korrekturen ausschließen und einen Zählschwellenwert von fünf festlegen, schlägt ein Build fehl, wenn er mehr als fünf behebliche Sicherheitslücken enthält, die als Hoch oder Kritisch eingestuft sind.

    • Status der Sicherheitslücke: Geben Sie an, ob nur Sicherheitslücken berücksichtigt werden sollen, für die eine Fehlerkorrektur verfügbar ist. So kann die Behebung priorisiert werden, indem alle oder nur behebliche Sicherheitslücken behoben werden.

    • Ausnahmen und Einschränkungen: In diesen Abschnitten können Sie bestimmte Zulassungen oder Blockierungen erstellen, die die allgemeine Richtlinie überschreiben.

      • Ausgenommene CVEs: Geben Sie CVEs an, die in Ihrer Umgebung für einen bestimmten Zeitraum als akzeptabel gelten. Das ist hilfreich, wenn Sie temporäre Lösungen implementieren möchten. Sie können ein Ablaufdatum für diese Ausnahmen festlegen. Nach diesem Datum ist die Sicherheitslücke nicht mehr zulässig und führt zu einem Richtlinienverstoß.
      • Eingeschränkte CVEs: Geben Sie CVEs an, die immer blockiert werden sollen, unabhängig von ihrer Schweregradeinstufung. Dies ist besonders nützlich, um Schwachstellen zu kennzeichnen, die ein einzigartiges Risiko für Ihre spezifische Anwendung oder Infrastruktur darstellen.
      • Zulässige Pakete: Hier werden Pakete aufgeführt, die als sicher gelten. Die Paketversion kann definiert werden. Andernfalls sind alle Versionen zulässig.
      • Eingeschränkte Pakete: Hier können Sie Pakete auflisten, die eingeschränkt werden sollen. Eingeschränkte Pakete führen dazu, dass die Richtlinie nicht erfüllt wird. Die Paketversion kann definiert werden. Andernfalls sind alle Versionen eingeschränkt.
  5. Klicken Sie auf Erstellen.

Die verfügbaren Artifact Guard-Richtlinien sind in der Tabelle auf der Seite Regeln aufgeführt.

Richtlinie mit der Google Cloud CLI erstellen

In diesem Abschnitt werden die für Artifact Guard verfügbaren gcloud CLI-Befehle und ihre Verwendung beschrieben.

Voraussetzungen für die Google Cloud CLI

  • Achten Sie darauf, dass Ihre gcloud CLI-Version 559.0.0 oder höher ist.
  • Legen Sie Ihr Projekt als Konfigurationsprojekt fest.

Führen Sie dazu die folgenden gcloud CLI-Befehle aus:

   gcloud components update --version=559.0.0
   gcloud config set project PROJECT_ID

Google Cloud CLI-Befehle

create

gcloud alpha scc artifact-guard policies create \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \
    --policy-file-path=PATH_TO_FILE
  • POLICY: Die vollständige Kennung für die Richtlinie in einem der folgenden Formate:
    • {organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}
    • {projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}
    • {policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
  • PATH_TO_FILE: Der lokale Pfad zum YAML-Dokument, das die Richtliniendefinition enthält. Weitere Informationen zur Struktur der YAML-Datei finden Sie im Abschnitt „YAML-Datei“ in diesem Dokument.

get

gcloud alpha scc artifact-guard policies describe \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER))
  • POLICY: Die vollständige Kennung für die Richtlinie in einem der folgenden Formate:
    • {organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}
    • {projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}
    • {policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}

list

gcloud alpha scc artifact-guard policies list PARENT
  • PARENT: Eine Organisation oder ein Projekt. Zulässige Formate für die übergeordnete Ressource sind:
    • {organizations/ORGANIZATION_ID/locations/LOCATION}
    • {projects/PROJECT_NUMBER/locations/LOCATION}

Löschen

gcloud alpha scc artifact-guard policies delete \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \
    [--etag=ETAG]
  • POLICY: Die vollständige Kennung für die Richtlinie in einem der folgenden Formate:
    • {organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}
    • {projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}
    • {policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
  • etag: Optional. Zur Nebenläufigkeitserkennung. Die Anfrage wird nur fortgesetzt, wenn das ETag der Ressource übereinstimmt.

update

gcloud alpha scc artifact-guard policies update \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \
    --policy-file-path=PATH_TO_FILE [--allow-missing] \
    [--update-mask=UPDATE_MASK]
  • POLICY: Die vollständige Kennung für die Richtlinie in einem der folgenden Formate:
    • {organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}
    • {projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}
    • {policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
  • PATH_TO_FILE: Der lokale Pfad zum YAML-Dokument, das die Definition der zu aktualisierenden Felder enthält.
  • allow_missing: Optionaler boolescher Wert. Wenn true, wird eine neue Richtlinie erstellt, falls die angegebene Richtlinie nicht vorhanden ist.
  • update-mask: Durch Kommas getrennte Liste der Felder, die aktualisiert werden sollen. Ein leerer String oder „*“ bedeutet ein vollständiges Richtlinienupdate. Gültige Felder für die Aktualisierungsmaske sind:
    • display_name
    • description
    • scope
    • enablement_state
    • vulnerability_policy
    • annotations

YAML-Datei

Eine YAML-Datei für eine Definition einer Artifact Guard-Richtlinie muss dieser Vorlage entsprechen:

  displayName: <Human readable display name for the policy>
  description: <Description of the policy>

  vulnerabilityPolicy: # (at least one of these rules must be defined)
    exemptedCves:
      - id: <cve-id-1>
        gracePeriodExpirationTime: <optional-grace-period-expiration-time>
      - id: <cve-id-2>
        gracePeriodExpirationTime: <optional-grace-period-expiration-time>

    maxAllowedSeverity: <The maximum severity allowed in the detected
    vulnerabilities. The severity values can be LOW, MEDIUM, HIGH, CRITICAL>

    maximumAllowedVulnerabilities: <The maximum number of vulnerabilities that
    can be detected>

    excludeUnfixable: <Whether to exclude the vulnerabilities without an
    available fix from the purview of the policy evaluation>

    restrictedCves:
      - <restricted-cve-id-1>
      - <restricted-cve-id-2>

    allowedPackages:
      - name: <allowed_package_name_1>
        version: <optional_version_of_allowed_package_1. If unspecified, all the
        versions of the package are allowed>
      - name: <allowed_package_name_2>
        version: <optional_version_of_allowed_package_2>

    restrictedPackages:
      - name: <restricted_package_name_1>
        version: <optional_version_of_restricted_package_1. If unspecified, all
        the versions of the package are restricted>
      - name: <restricted_package_name_2>
        version: <optional_version_of_restricted_package_2>

  scope:
    pipeline:
      connectorIds:
        - <connector_id_1>
        - <connector_id_2>
      enforcementAction: <action to take in case the policy evaluation fails.
      The supported values are AUDIT_ONLY or BLOCK_BUILD>

    registry:
      projectIds:
        - <project_id_1>
      garRepositoryNamePatterns:
        - <repository_name_pattern_1>
      imageNamePatterns:
        - <image_name_pattern_1>
      enforcementAction: <AUDIT_ONLY or ADMISSION_CONTROL>
      admissionControl:
        deploymentProjectIds:
          - <project_id_1>
        gkeClusterNames:
          - <cluster_name_1>
        dryRun: <bool>
        overrideBinauthzPolicy: <bool>

    runtime:
        deploymentProjectIds:
          - <project_id_1>
        gkeClusterNames:
          - <cluster_name_1>
        dryRun: <bool>
        overrideBinauthzPolicy: <bool>
        enforcementAction: <AUDIT_ONLY or BLOCK_DEPLOYMENT>

  enablementState: <The enablement state of the policy. The supported values are
  ACTIVE, INACTIVE>

Hier sehen Sie ein Beispiel für eine Artifact Guard-Richtliniendatei:

  displayName: 'A sample policy'
  description: Vulnerability Policy
  vulnerabilityPolicy:
    exemptedCves:
      - id: CVE-2022-40897
        gracePeriodExpirationTime: '2026-09-10T18:58:08Z'
      - id: CVE-2024-6345
    maxAllowedSeverity: MEDIUM
    maximumAllowedVulnerabilities: 5
    excludeUnfixable: true
    restrictedCves:
      - CVE-2013-4392
      - CVE-2024-4143
    allowedPackages:
      - name: systemd
        version: '257.7'
      - name: util-linux
    restrictedPackages:
      - name: ncurses
        version: 6.5+20250216
      - name: setuptools
  scope:
    pipeline:
      connectorIds:
        - organizations/123/locations/global/connectors/demoConnector
      enforcementAction: BLOCK_BUILD
    registry:
      projectIds:
        - projects/my-registry-project-id
        - projects/another-registry-project
      garRepositoryNamePatterns:
        - us-west1-docker.pkg.dev/my-registry-project-id/my-repo
        - gcr.io/team-a/internal-artifacts
      imageNamePatterns:
        - my-repo/service-a:.*
        - my-repo/service-b:v1\..*
      enforcementAction: ADMISSION_CONTROL
      admissionControl:
        deploymentProjectIds:
          - projects/my-deployment-project
        gkeClusterNames:
          - //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-a
          - //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-b
        dryRun: true
        overrideBinauthzPolicy: true
    runtime:
      deploymentProjectIds:
        - projects/my-deployment-project
      gkeClusterNames:
        - //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-a
        - //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-b
      dryRun: false
      overrideBinauthzPolicy: false
      enforcementAction: BLOCK_DEPLOYMENT
  enablementState: ACTIVE

Leistung und Einschränkungen

  • Maximale Anzahl von Richtlinien pro übergeordneter Ressource: Für eine übergeordnete Ressource (Organisation oder Projekt) können maximal 1.000 Richtlinien definiert werden. Dazu gehören alle Arten von Sicherheitsrichtlinien, die in Artifact Guard konfiguriert sind.
  • Maximale Anzahl von Richtlinien für Sicherheitslücken pro übergeordneter Ressource: Innerhalb des allgemeinen Richtlinienlimits gibt es ein Limit für die Anzahl von Richtlinien, die sich auf Ergebnisse zu Sicherheitslücken konzentrieren. Eine übergeordnete Ressource (Organisation oder Projekt) kann maximal 500 Richtlinien haben, die auf Sicherheitslücken ausgerichtet sind.
  • Maximale Anzahl von Richtlinien pro Pipeline: Für jede einzelne CI/CD-Pipeline, in die Artifact Guard-Richtlinien zur Durchsetzung während der Build-Zeit integriert sind, sind maximal 100 Richtlinien zulässig.
  • Maximale Anzahl von Aktualisierungen pro Richtlinie und Woche: Für jede Richtlinie können pro Woche maximal 100 Aktualisierungen vorgenommen werden.
  • Maximale Anzahl von Pipeline-Connectors pro Richtlinie: Jeder Richtlinie können maximal 100 Pipeline-Connectors zugeordnet sein.
  • Maximale Anzahl von ausgenommenen und eingeschränkten CVEs pro Richtlinie: In jeder Richtlinie können maximal 100 CVEs ausgenommen und eingeschränkt werden.
  • Maximal zulässige und eingeschränkte Pakete pro Richtlinie: Für jede Richtlinie können maximal 100 Pakete zugelassen und eingeschränkt werden.

Weitere Einschränkungen finden Sie unter Fehlerbehebung.

Fehlerbehebung

In diesem Abschnitt werden die Felder für Artifact Guard-Richtlinien und häufige Fehler mit ihren Lösungen beschrieben.

Richtlinienüberprüfung

Artifact Guard validiert Richtliniendefinitionen, wenn Sie Richtlinien erstellen oder aktualisieren. Wenn die Validierung fehlschlägt, lehnt Artifact Guard die Anfrage ab und gibt eine detaillierte Fehlermeldung aus.

Allgemeine Richtlinienfelder

Name Beschreibung Erforderlich Einschränkungen Beispielwerte
Übergeordnetes Element Definiert den Anwendungsbereich der Richtlinie. Ja Es werden nur Richtlinien am Standort global unterstützt.
  • organizations/123/locations/global
  • projects/123/locations/global
Richtlinien-ID Eine eindeutige Kennung für die Richtlinie. Ja Zulässige Höchstlänge: 100 Zeichen Muss mit einem Buchstaben beginnen, mit einem alphanumerischen Zeichen enden und darf nur Buchstaben, Ziffern, Bindestriche oder Unterstriche enthalten. my-policy-1
Anzeigename Ein für Menschen lesbarer Name für die Richtlinie. Nein Maximal 63 Zeichen. Sollte eindeutig sein. My vulnerability policy
Beschreibung Eine Beschreibung der Richtlinie. Nein Bis zu 2.048 Zeichen Checks for critical vulnerabilities.
Richtlinientyp Der Typ der Richtlinie, die definiert wird. Ja Nur vulnerability_policy wird unterstützt. vulnerability_policy
Aktivierungsstatus Der Aktivierungsstatus der Richtlinie. Ja Muss ACTIVE oder INACTIVE sein. ACTIVE

Richtlinie zu Sicherheitslücken

Name Beschreibung Mehrwertig Einschränkungen Beispielwerte
maximumAllowedVulnerabilities Maximale Anzahl an Sicherheitslücken, die zulässig sind, bevor gegen die Richtlinie verstoßen wird. Nein Muss eine nicht negative Zahl sein, wenn sie festgelegt ist. 10
maxAllowedSeverity Maximaler Schweregrad von Sicherheitslücken, die gemäß der Richtlinie zulässig sind. Nein Muss LOW, MEDIUM, HIGH oder CRITICAL sein.
exemptedCves Liste der CVEs, die von dieser Richtlinie ausgenommen sind. Ja Bis zu 100 Einträge. Jede ID muss das Format CVE-YYYY-NNNN haben. Falls angegeben, muss der Ablauf der Kulanzfrist ein gültiger Zeitstempel sein. Darf nicht mit restrictedCves überlappen. - id: CVE-2024-12345
gracePeriodExpirationTime: 2027-01-01T00:00:00Z
- id: CVE-2025-4000
restrictedCves Liste der CVEs, die durch diese Richtlinie ausdrücklich nicht zulässig sind. Ja Bis zu 100 Einträge. Jede ID muss das Format CVE-YYYY-NNNN haben. Darf sich nicht mit exemptedCves überschneiden. - CVE-2024-54321
- CVE-2025-5001
allowedPackages Liste der zulässigen Pakete, die möglicherweise andere Regeln überschreiben. Ja Bis zu 100 Einträge. Paketnamen dürfen nicht leer sein. Darf nicht mit restrictedPackages in Konflikt stehen. - name: nginx
version: 1.0
- name: python
version: 3.12.4
restrictedPackages Liste der Pakete, die explizit nicht zulässig sind. Ja Bis zu 100 Einträge. Paketnamen dürfen nicht leer sein. Darf nicht mit allowedPackages in Konflikt stehen. - name: npm
version: 9.0.0
excludeUnfixable Gibt an, ob Sicherheitslücken ohne verfügbare Fehlerkorrektur ausgeschlossen werden sollen. Nein Boolescher Wert. Standardwert ist false. true
exemptionDaysPostDisclosure Anzahl der Tage, die nach dem Offenlegungsdatum von Sicherheitslücken ausgenommen werden sollen. Nein Muss eine nicht negative Zahl sein, wenn sie festgelegt ist. Standardwert ist 0. 30

Richtlinienbereich

Pipelinebereich

Name Beschreibung Erforderlich Einschränkungen Beispielwerte
connectorIds Liste der Connector-IDs, für die die Richtlinie während des Scans der CI/CD-Pipeline gilt. Ja Mindestens 1 Eintrag, maximal 100 Einträge. Ihre Organisation oder Ihr Projekt muss für CI/CD-Scans eingerichtet sein. Jede ID muss das richtige Format haben, zu Ihrer Organisation oder Ihrem Projekt gehören und auf einen vorhandenen Connector verweisen.
  • organizations/123/locations/global/connectors/connector-1
  • projects/123/locations/global/connectors/connector-1
enforcementAction Aktion, die bei einem Verstoß gegen die Richtlinie ausgeführt werden soll. Ja Muss entweder AUDIT_ONLY oder BLOCK_BUILD sein. BLOCK_BUILD

Registrierungsbereich

Name Beschreibung Erforderlich Einschränkungen Beispielwerte
projectIds Liste der Projekt-IDs, für die die Richtlinie gilt. Nein Mindestens 1 Eintrag. Jede ID muss eine gültige Google Cloud Projekt-ID sein. projects/123, projects/456
garRepositoryNamePatterns Liste der Google Cloud Artifact Registry-Repository-Namensmuster. Nein Max. 100 Einträge. Muss ein gültiges Google Cloud Artifact Registry-Repositorymuster sein. us-west1-docker.pkg.dev/my-project/my-repo, gcr.io/team-a/*
imageNamePatterns Muster für reguläre Ausdrücke für voll qualifizierte Bildnamen. Nein Max. 100 Einträge. Muss ein gültiger regulärer Ausdruck sein. 'my-repo/service-a:.*', 'my-repo/service-b:v1..*'
enforcementAction Die auszuführende Aktion, wenn gegen die Richtlinie verstoßen wird. Ja Muss entweder AUDIT_ONLY oder ADMISSION_CONTROL sein. ADMISSION_CONTROL
admissionControl Konfigurationsdetails für die Zugangssteuerung. Nein Muss vorhanden sein, wenn enforcementAction ADMISSION_CONTROL ist.

Laufzeitbereich

Mit dem Laufzeitbereich kann Artifact Guard Container-Images überwachen, die aktiv in Ihrer GKE-Umgebung ausgeführt werden. Wenn eine Richtlinie auf diesen Bereich angewendet wird, werden Security Command Center-Ergebnisse zu Sicherheitslücken automatisch mit Richtlinienmetadaten für Images angereichert, die in den angegebenen Projekten oder Clustern bereitgestellt werden.

Name Beschreibung Erforderlich Einschränkungen Beispielwerte
projectIds Liste der Projekt-IDs, in denen GKE-Cluster bereitgestellt sind und die Sicherheitslückenbewertung aktiviert ist. Ja Muss auf Organisationsebene ausgewählt werden. projects/my-gke-deployment-123
gkeClusterNames Bestimmte GKE-Cluster, für die die Richtlinie ausgewertet werden muss. Nein Kann auf Organisations- oder Projektebene ausgewählt werden. projects/prod-env/locations/us-central1/clusters/main-cluster

Wenn ein Container-Image, das in einem überwachten GKE-Cluster ausgeführt wird, gegen eine Richtlinie verstößt, werden die ArtifactGuardPolicies-Metadaten der Meldung zum Security Command Center-Sicherheitsrisikoergebnis hinzugefügt:

// Added to the SCC 'message Finding'
ArtifactGuardPolicies artifact_guard_policies = X;

message ArtifactGuardPolicies {
  string resource_id = 1;     // e.g., //us-docker.pkg.dev/google-samples/containers/gke/security/...
  repeated Policy failing_policies = 2;
}

message Policy {
  enum Type {
    TYPE_UNSPECIFIED = 0;
    VULNERABILITY = 1;
  }
  Type type = 1;
  string policy_id = 2;     // e.g., organizations/3392779/locations/global/policies/prod-policy
  string failure_reason = 3;     // e.g., severity=HIGH AND max_vuln_count=2
}

Maßnahme

Bei BLOCK_BUILD- und BLOCK_DEPLOYMENT-Aktionen wird bei der Richtlinienauswertung eine empfohlene Erzwingungsmaßnahme zurückgegeben. Sie müssen die tatsächliche Erzwingung jedoch in der Pipelinekonfiguration mit dieser Empfehlung konfigurieren.

Richtlinie löschen

Aktive Richtlinien können nicht gelöscht werden und führen zu einem FAILED_PRECONDITION-Fehler. Wenn Sie eine Richtlinie löschen möchten, müssen Sie zuerst den Status auf Inactive festlegen.

Häufige Fehler

In der folgenden Tabelle sind einige häufige Fehler und ihre Behebung aufgeführt.

Hinweis zur Fehlermeldung Ursache Lösung
parent ist erforderlich Das Feld „parent“ fehlt in der Anfrage. Geben Sie eine gültige übergeordnete Ressource in einem der folgenden Formate an:
  • organizations/{org_id}/locations/global
  • parents/{project_number}/locations/global
.
Richtliniendefinition erforderlich Das Richtlinienobjekt fehlt in der Anfrage. Geben Sie ein gültiges Richtlinienobjekt in der Anfrage an.
Der Anzeigename darf maximal... lang sein. Der Anzeigename ist länger als 63 Zeichen. Kürzen Sie den Anzeigenamen auf maximal 63 Zeichen.
Die Beschreibung darf maximal... lang sein. Die Beschreibung überschreitet die maximale Länge von 2.048 Zeichen. Kürzen Sie die Beschreibung auf maximal 2.048 Zeichen.
Richtlinientyp ist erforderlich Der Richtlinientyp (z. B. vulnerabilityPolicy) fehlt in der Anfrage. Fügen Sie Ihrer Richtlinie eine vulnerabilityPolicy oder einen anderen Richtlinientyp hinzu.
Der Aktivierungsstatus ist ungültig. Es wurde ein ungültiger oder nicht mehr unterstützter Aktivierungsstatus verwendet. Verwenden Sie ACTIVE oder INACTIVE.
Bereich ist erforderlich Es wurde kein Bereich (Pipeline, Registry oder Laufzeit) definiert. Fügen Sie Ihrer Richtlinie mindestens einen gültigen Bereich hinzu.
Der CVE-Name muss das Format...haben Eine CVE-ID in exemptedCves oder restrictedCves ist ungültig. Alle CVE-IDs müssen dem Format CVE-YYYY-NNNN entsprechen.
CVE ... kann nicht ausgenommen und eingeschränkt werden Dieselbe CVE-ID ist sowohl in exemptedCves als auch in restrictedCves vorhanden. Entfernen Sie die CVE aus einer der Listen.
Der Paketname darf nicht leer sein Ein Paket in allowedPackages oder restrictedPackages hat einen leeren Namen. Geben Sie einen Namen für alle Pakete an.
package ... cannot be allowed and restricted (Paket … kann nicht zugelassen und eingeschränkt werden) Dasselbe Paket ist sowohl in allowedPackages als auch in restrictedPackages aufgeführt. Entfernen Sie das Paket aus einer der Listen.
Connector-IDs sind erforderlich Das Feld „connectorIds“ fehlt in einem Pipeline-Bereich. Geben Sie mindestens eine Connector-ID an.
Die Connector-ID muss das Format... haben. Eine Connector-ID ist fehlerhaft. Achten Sie darauf, dass die IDs eines der folgenden Formate haben:
  • organizations/{org_id}/locations/global/connectors/{connector_id}
  • .
  • projects/{project_number}/locations/{location}/connectors/{connector_id}
Connector-ID ... ist nicht vorhanden Eine angegebene Connector-ID ist nicht vorhanden. Prüfen Sie, ob der Connector vorhanden ist, oder entfernen Sie ihn aus der Liste.
Das Namensmuster für das GAR-Repository muss... In einem Registrierungsbereich wurde ein ungültiges Repository-Muster angegeben. Die Muster müssen mit gültigen Google Cloud Artifact Registry-Repositoryformaten übereinstimmen.
Die Projekt-ID muss eine gültige GCP-Projekt-ID sein... In einem Registry- oder Runtime-Bereich wurde eine ungültige Projekt-ID angegeben. Geben Sie gültige Google Cloud Projekt-IDs an.
Erzwingungsmaßnahme angegeben werden Die enforcementAction fehlt in einem Pipeline- oder Laufzeitbereich. Legen Sie die Erzwingungsmaßnahme fest, z. B. AUDIT_ONLY, BLOCK_BUILD (nur Pipeline) oder BLOCK_DEPLOYMENT (nur Laufzeit).
Die Anzahl der Richtlinien pro Organisation überschreitet das Limit... Sie haben die maximal zulässige Anzahl von Richtlinien (1.000) für Ihre Organisation erreicht. Löschen Sie nicht verwendete Richtlinien, bevor Sie neue erstellen.
Anzahl der Richtlinien für Sicherheitslücken überschreitet das Limit... Sie haben die maximale Anzahl von Richtlinien für Sicherheitslücken (500) erreicht. Löschen Sie nicht verwendete Richtlinien für Sicherheitslücken, bevor Sie neue erstellen.
Die Anzahl der Richtlinien pro Pipeline überschreitet das Limit... Ein Connector ist mit mehr als 100 Richtlinien verknüpft. Reduzieren Sie die Anzahl der Richtlinien, die mit dem Connector verknüpft sind.
Die Anzahl der Richtlinienüberarbeitungen überschreitet das Limit... Sie haben eine Richtlinie innerhalb von 7 Tagen mehr als 100-mal aktualisiert. Warten oder Updatehäufigkeit reduzieren

Häufige operative Probleme

Neben Fehlern bei der Validierung von Richtlinieninhalten können auch Probleme mit der zugrunde liegendenGoogle Cloud -Steuerungsebene auftreten. Diese Probleme können sich auf API-Anfragen, Vorgänge mit langer Ausführungszeit und Ressourcenstatus auswirken und treten in der Regel als bestimmte Fehlercodes oder ungewöhnliches Verhalten auf.

Problem Symptom(e) Fehlerbehebung
Gleichzeitige Änderung UpdatePolicy oder DeletePolicy schlägt mit dem Fehlercode ABORTED und der Meldung "Provided etag is out of date" fehl. Fehlerbehebung: Dieser Fehler tritt auf, wenn die etag in Ihrer Anfrage nicht mit der aktuellen Serverversion der Richtlinie übereinstimmt. Das deutet darauf hin, dass die Richtlinie durch eine andere Anfrage geändert wurde.

Lösung: Lesen Sie die Richtlinie noch einmal, um das aktuelle ETag zu erhalten. Wiederholen Sie dann die Anfrage mit dem neuen ETag.
Anfrage validiert, aber nicht ausgeführt Eine CreatePolicy-, UpdatePolicy- oder DeletePolicy-Anfrage wird erfolgreich zurückgegeben, aber Sie stellen keine Änderung an der Ressource fest. Fehlerbehebung: Dies tritt in der Regel auf, wenn validate_only: true im Antrag festgelegt ist. Mit diesem Flag wird der Dienst angewiesen, alle Validierungen durchzuführen, ohne Änderungen zu übernehmen.

Auflösung: Setzen Sie validate_only auf false oder lassen Sie das Feld in Ihrer Anfrage weg.
Durch Update wird eine neue Richtlinie erstellt Bei einer UpdatePolicy-Anfrage wird eine Richtlinie erstellt, anstatt dass ein „Nicht gefunden“-Fehler zurückgegeben wird, wenn die Richtlinie nicht vorhanden ist. Fehlerbehebung: Dies ist das vorgesehene Verhalten, wenn allow_missing: true in einer UpdatePolicyRequest enthalten ist.

Lösung: Wenn Sie nur eine vorhandene Richtlinie aktualisieren möchten, setzen Sie allow_missing auf false oder lassen Sie das Feld weg.
Berechtigung verweigert oder API nicht aktiviert Anfragen schlagen mit PERMISSION_DENIED oder einer Fehlermeldung wie "Artifact Guard API has not been used in the project before or it is disabled." fehl. Fehlerbehebung: Die API ist möglicherweise deaktiviert oder der Aufrufer hat nicht die erforderlichen Berechtigungen.

Lösung: Aktivieren Sie in Ihrem Google Cloud -Projekt die Artifact Guard API (artifactscanguard.googleapis.com). Prüfen Sie, ob der Nutzer oder das Dienstkonto, der bzw. das den Vorgang ausführt, die erforderlichen IAM-Rollen hat.
Zeitüberschreitung beim Vorgang Eine Anfrage, die einen Vorgang mit langer Ausführungszeit zurückgibt, dauert zu lange oder schlägt mit DEADLINE_EXCEEDED fehl. Fehlerbehebung: Dies kann auf eine vorübergehende Verlangsamung oder ein Problem im Backend-Dienst hinweisen.

Lösung: Fragen Sie den LRO-Status ab. Wenn der Vorgang fehlschlägt oder eine Zeitüberschreitung auftritt, versuchen Sie es nach einigen Augenblicken noch einmal. Sollte das Problem weiterhin auftreten, sehen Sie im Google Cloud Status-Dashboard nach, ob es aktuelle Vorfälle gibt, oder wenden Sie sich an den Google Cloud -Support.