Kontinuierliche prüfbasierte Plattformrichtlinien zur Validierung für alle GKE-Cluster erfordern

Auf dieser Seite erfahren Sie, wie Sie mit dem Organisationsrichtliniendienst festlegen, dass GKE-Cluster eine oder mehrere prüfbasierte Plattformrichtlinien für die kontinuierliche Validierung (CV) verwenden müssen. Sie geben die erforderlichen prüfbasierten Plattformrichtlinien in benutzerdefinierten Einschränkungen an. Anschließend erzwingen Sie die benutzerdefinierten Einschränkungen in Ihrer Organisationsrichtlinie.

Kosten

In diesem Leitfaden werden folgende Google Cloud-Dienste verwendet.

  • Binärautorisierung, aber CV ist in der Vorschauphase kostenlos.
  • Organisationsrichtlinien und Einschränkungen werden kostenlos angeboten.

Hinweise

  1. Binärautorisierung aktivieren.
  2. Richten Sie CV mit prüfbasierten Plattformrichtlinien und mindestens eine prüfbasierte CV-Plattformrichtlinie ein.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Organization Policy Administrator (roles/orgpolicy.policyAdmin) in Ihrer Google Cloud-Organisation zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Einschränkungen und zum Erzwingen von Organisationsrichtlinien benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Benutzerdefinierte Einschränkung für Lebensläufe erstellen

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

  2. Klicken Sie auf der Seite Organisationsrichtlinien auf  Benutzerdefinierte Einschränkung.

  3. Klicken Sie bei Aufforderung auf Zur übergeordneten Organisation wechseln. Weitere Informationen zu Organisationen finden Sie unter Einführung in den Organisationsrichtliniendienst.

  4. Geben Sie unter Einschränkungsdetails die folgenden Informationen in die Felder ein:

    1. Anzeigename: Ein Anzeigename für die Einschränkung, z. B. Require a Binary Authorization continuous validation policy for all GKE clusters. Anhand des Anzeigenamens können Sie die Einschränkung nach dem Speichern aufrufen. Das Feld „Anzeigename“ darf maximal 200 Zeichen lang sein.

    2. Einschränkungs-ID: Eine Einschränkungs-ID für Ihre Einschränkung, z. B. RequireBinAuthzCVPolicy.

    3. Beschreibung (Optional): Eine nutzerfreundliche Beschreibung der Einschränkung, die als Fehlermeldung angezeigt werden soll, wenn die Richtlinie verletzt wird Das Beschreibungsfeld hat eine maximale Länge von 2.000 Zeichen.

  5. Gehen Sie unter Durchsetzung so vor:

    1. Geben Sie unter Ressourcentypen container.googleaips.com/Cluster ein.

    2. Wählen Sie unter Methode zur Erzwingung die Option Beim Erstellen und Aktualisieren erzwingen aus.

    3. Geben Sie einen Ausdruck in das Feld Bedingung ein. Dieses Feld hat eine maximale Länge von 1000 Zeichen. Die benutzerdefinierte Einschränkung wird angewendet, wenn die Bedingung true ergibt. Die Bedingung ist ein Ausdruck in der Common Expression Language (CEL)-Syntax. Sie können Ausdrücke mit „und“ (&&) und „oder“ (||) kombinieren, um eine komplexe Bedingung zu erstellen. CEL ist eine C-ähnliche Sprache für Ausdrücke. Weitere Informationen zur Syntax und Semantik von CEL finden Sie unter https://github.com/google/cel-spec. So geben Sie die Bedingung ein:

      1. Klicken Sie auf  Bedingung bearbeiten.

      2. Geben Sie einen Ausdruck ein, um zu prüfen, ob eine CV-Plattformrichtlinie vorhanden ist. Für die folgende Bedingung ist erforderlich, dass eine CV-Plattformrichtlinienbindung vorhanden ist und die Plattformrichtlinie einen bestimmten Namen hat:

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
        

        Ersetzen Sie Folgendes:

        • PROJECT_ID: Die Projekt-ID Ihrer Plattformrichtlinie. Das Projekt muss sich in derselben Organisation befinden.
        • POLICY_ID: die Richtlinien-ID Ihrer Plattformrichtlinie.

        Für die folgende Bedingung müssen zwei CV-Plattformrichtlinienbindungen vorhanden sein und jede muss einen bestimmten Namen für die Plattformrichtlinie haben.

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
        
        • PROJECT_ID1: Die Projekt-ID Ihrer ersten Plattformrichtlinie. Das Projekt muss sich in derselben Organisation befinden.
        • POLICY_ID1: die Richtlinien-ID Ihrer ersten Plattformrichtlinie.
        • PROJECT_ID2: Die Projekt-ID Ihrer zweiten Plattformrichtlinie.
        • POLICY_ID2: die Richtlinien-ID Ihrer zweiten Plattformrichtlinie.

        • Klicken Sie auf Speichern.

    4. Wählen Sie unter Aktion die Option Zulassen aus.

  6. Klicken Sie auf Einschränkung erstellen, um eine benutzerdefinierte Einschränkung zu erstellen.

gcloud

  1. Erstellen Sie eine YAML-Datei für die benutzerdefinierte Einschränkung:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID
    resource_types: container.googleapis.com/Cluster
    method_types:
      - CREATE
      - UPDATE
    condition: >-
      CONDITION
    action_type: ACTION
    display_name: DISPLAY_NAME
    description: DESCRIPTION
    

    Ersetzen Sie Folgendes:

    • ORGANIZATION_ID: Ihre Organisations-ID, z. B. 123456789.
    • CONSTRAINT_ID: eine Einschränkungs-ID, z. B. RequireBinAuthzCVPolicy.
    • CONDITION: Geben Sie einen Ausdruck ein, um zu prüfen, ob eine CV-Plattformrichtlinie vorhanden ist. Dieses Feld hat eine maximale Länge von 1000 Zeichen. Die benutzerdefinierte Einschränkung wird angewendet, wenn die Bedingung true ergibt. Die Bedingung ist ein Ausdruck in der Common Expression Language (CEL)-Syntax. Sie können Ausdrücke mit „und“ (&&) und „oder“ (||) kombinieren, um eine komplexe Bedingung zu erstellen. CEL ist eine C-ähnliche Sprache für Ausdrücke. Weitere Informationen zur Syntax und Semantik von CEL finden Sie unter https://github.com/google/cel-spec. Für die folgende Bedingung ist erforderlich, dass eine CV-Plattformrichtlinienbindung vorhanden ist und die Plattformrichtlinie einen bestimmten Namen hat:

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: Die Projekt-ID Ihrer Plattformrichtlinie. Das Projekt muss sich in derselben Organisation befinden.
      • POLICY_ID: die Richtlinien-ID Ihrer Plattformrichtlinie.

      Für die folgende Bedingung müssen zwei CV-Plattformrichtlinienbindungen vorhanden sein und jede muss einen bestimmten Namen für die Plattformrichtlinie haben.

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
      
      • PROJECT_ID1: Die Projekt-ID Ihrer ersten Plattformrichtlinie. Das Projekt muss sich in derselben Organisation befinden.
      • POLICY_ID1: die Richtlinien-ID Ihrer ersten Plattformrichtlinie.
      • PROJECT_ID2: Die Projekt-ID Ihrer zweiten Plattformrichtlinie.
      • POLICY_ID2: die Richtlinien-ID Ihrer zweiten Plattformrichtlinie.

      • ACTION: Aktion, die ausgeführt werden soll, wenn condition erfüllt ist. Dies kann entweder ALLOW oder DENY sein.

      • DISPLAY_NAME: Ein nutzerfreundlicher Name für die Einschränkung, z. B. Require a Binary Authorization continuous validation policy for all GKE clusters. Das Feld „Anzeigename“ darf maximal 200 Zeichen lang sein.

      • DESCRIPTION: Eine nutzerfreundliche Beschreibung der Einschränkung, die als Fehlermeldung angezeigt werden soll, wenn die Richtlinie verletzt wird Das Beschreibungsfeld hat eine maximale Länge von 2.000 Zeichen.

    • Wenden Sie die benutzerdefinierte Einschränkung an:

      gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
      

      Ersetzen Sie CUSTOM_CONSTRAINT_PATH durch den Pfad zur Definition der benutzerdefinierten Einschränkung.

    • Prüfen Sie, ob die benutzerdefinierte Einschränkung vorhanden ist:

      gcloud org-policies list-custom-constraints \
          --organization=ORGANIZATION_ID
      

      Die Ausgabe sieht in etwa so aus:

      CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy
      ACTION_TYPE: ALLOW
      METHOD_TYPES: CREATE,UPDATE
      RESOURCE_TYPES: container.googleapis.com/Cluster
      DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
      

Wenn Sie die Erzwingung der von Ihnen erstellten benutzerdefinierten Einschränkung aktivieren möchten, erstellen Sie eine Organisationsrichtlinie.

Benutzerdefinierte Einschränkung mit einer Organisationsrichtlinie erzwingen

Um die neue benutzerdefinierte Einschränkung zu erzwingen, erstellen Sie eine Organisationsrichtlinie, die auf die Einschränkung verweist, und wenden Sie die Organisationsrichtlinie an.

Console

So erzwingen Sie die Einschränkung:

  1. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

  2. Wählen Sie in der Projektauswahl die Organisation aus.

  3. Suchen Sie in der Liste nach der Einschränkung und wählen Sie sie aus.

  4. Klicken Sie auf der Seite Richtliniendetails für diese Einschränkung auf Richtlinie verwalten.

  5. Wählen Sie auf der Seite Richtlinie bearbeiten die Option Richtlinie der übergeordneten Ressource überschreiben aus.

  6. Klicken Sie auf Regel hinzufügen.

  7. Wählen Sie unter Erzwingung die Option An aus.

  8. Optional: Klicken Sie auf Änderungen testen, um die Auswirkungen dieser Organisationsrichtlinie zu simulieren. Weitere Informationen finden Sie unter Änderungen an Organisationsrichtlinien mit dem Richtliniensimulator testen.

  9. Klicken Sie auf Richtlinie festlegen, um den Vorgang abzuschließen und die Organisationsrichtlinie anzuwenden.

gcloud

  1. Erstellen Sie eine YAML-Datei mit der Richtliniendefinition:

    name: organizations/ORGANIZATION_ID/policies/custom.CONSTRAINT_ID
    spec:
      rules:
      - enforce: true
    

    Ersetzen Sie Folgendes:

    • ORGANIZATION_ID: die Organisations-ID
    • CONSTRAINT_ID: die Einschränkungs-ID
  2. Erzwingen Sie die Richtlinie:

    gcloud org-policies set-policy ORG_POLICY_PATH
    

    Ersetzen Sie ORG_POLICY_PATH durch den Pfad zu Ihrer Richtliniendefinitionsdatei.

  3. Prüfen Sie, ob die Richtlinie vorhanden ist:

    gcloud org-policies list \
        --organization=ORGANIZATION_ID
    

    Ersetzen Sie ORGANIZATION_ID durch die Organisations-ID.

    Eine Liste der Argumente finden Sie unter gcloud org-policies list.

    Die Ausgabe sieht in etwa so aus:

    CONSTRAINT: custom.RequireBinAuthzCVPolicy
    LIST_POLICY: -
    BOOLEAN_POLICY: SET
    ETAG: CN622LIGEIDXnpMB-
    

Es kann bis zu 15 Minuten dauern, bis die Richtlinie wirksam wird.

So erzwingen Sie mehrere Einschränkungen für prüfbasierte CV-Plattformrichtlinien:

Benutzerdefinierte Einschränkung löschen

Sie können eine benutzerdefinierte Einschränkung mit der Google Cloud Console oder der Google Cloud CLI löschen.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

  2. Klicken Sie oben auf der Seite auf Projektauswahl.

  3. Wählen Sie in der Projektauswahl Ihre Organisation aus.

  4. Suchen Sie in der Liste nach der Einschränkung und wählen Sie sie aus.

  5. Klicken Sie unter Einschränkungsdetails auf  Löschen.

  6. Klicken Sie auf Löschen, um zu bestätigen, dass Sie die Einschränkung löschen möchten.

gcloud

Verwenden Sie den Befehl org-policies delete-custom-constraint der gcloud CLI, um eine benutzerdefinierte Einschränkung zu löschen:

gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
  --organization=ORGANIZATION_ID

Ersetzen Sie Folgendes:

  • ORGANIZATION_ID: Ihre Organisations-ID, z. B. 123456789

  • CONSTRAINT_NAME: der Name der benutzerdefinierten Einschränkung

Die Ausgabe sieht in etwa so aus:

Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]

Nachdem Sie eine benutzerdefinierte Einschränkung gelöscht haben, bleiben alle Richtlinien, die mit dieser Einschränkung erstellt wurden, erhalten, werden aber ignoriert. Sie können keine weitere benutzerdefinierte Einschränkung mit demselben Namen wie eine gelöschte benutzerdefinierte Einschränkung erstellen.

Nächste Schritte