Mit der Analyze Code Security-Aktion können Sie die Infrastruktur als Code (IaC) validieren, die Teil Ihres GitHub Actions-Workflows ist. Durch die Validierung von IaC können Sie feststellen, ob Ihre Terraform-Ressourcendefinitionen gegen die vorhandenen Organisationsrichtlinien und Security Health Analytics-Detektoren verstoßen, die auf Ihre Google Cloud Ressourcen angewendet werden.
Weitere Informationen zur IaC-Validierung finden Sie unter IaC anhand der Richtlinien Ihrer Google Cloud Organisation validieren.
Hinweise
Führen Sie diese Aufgaben aus, um mit der IaC-Validierung mit GitHub Actions zu beginnen.
Security Command Center Premium- oder Enterprise-Stufe aktivieren
Prüfen Sie, ob die Security Command Center Premium- oder Enterprise-Stufe auf Organisationsebene aktiviert ist.
Wenn Sie Security Command Center aktivieren, werden die APIs securityposture.googleapis.com
und securitycentermanagement.googleapis.com
aktiviert.
Dienstkonto erstellen
Erstellen Sie ein Dienstkonto, das Sie für die Aktion „Code Security analysieren“ verwenden können.
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Security Posture Shift-Left Validator role to the service account.
To grant the role, find the Select a role list, then select Security Posture Shift-Left Validator.
- Click Continue.
-
Click Done to finish creating the service account.
Weitere Informationen zu Berechtigungen für die IaC-Validierung finden Sie unter IAM für Aktivierungen auf Organisationsebene.
Authentifizierung einrichten
Konfigurieren Sie die Workload Identity-Föderation mit Ihrem GitHub-Identitätsanbieter. Eine Anleitung finden Sie unter Workload Identity-Föderation.
Rufen Sie die URL für Ihr ID-Token der Identitätsföderation von Arbeitslasten ab. Beispiel:
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
Berücksichtige Folgendes:
PROJECT_NUMBER
ist die Projektnummer desGoogle Cloud -Projekts, in dem Sie die Workload Identity-Föderation eingerichtet haben.POOL_ID
ist der Name des Pools.PROVIDER_ID
ist der Name Ihres Identitätsanbieters.
Fügen Sie Ihrem Workflow die Authenticate to Google Cloud-Aktion hinzu, um die IaC-Validierungsaktion zu authentifizieren.
Richtlinien definieren
Definieren Sie Ihre Organisationsrichtlinien und Security Health Analytics-Detektoren. Wenn Sie diese Richtlinien mit einem Sicherheitsstatus definieren möchten, führen Sie die Aufgaben unter Status erstellen und bereitstellen aus.
JSON-Datei für Terraform-Plan erstellen
Erstellen Sie Ihren Terraform-Code. Eine Anleitung finden Sie unter Terraform-Code erstellen.
Initialisieren Sie Terraform in Ihren GitHub Actions. Wenn Sie beispielsweise die HashiCorp – Setup Terraform-Aktion verwenden, führen Sie den folgenden Befehl aus:
- name: Terraform Init id: init run: terraform init
Erstellen Sie eine Terraform-Plandatei:
- name: Create Terraform Plan id: plan run: terraform plan -out=TF_PLAN_FILE
Ersetzen Sie
TF_PLAN_FILE
durch den Namen der Terraform-Plan-Datei. Beispiel:myplan.tfplan
.Konvertieren Sie die Plandatei in das JSON-Format:
- name: Convert Terraform Plan to JSON id: convert run: terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
Ersetzen Sie
TF_PLAN_JSON_FILE
durch den Namen der Terraform-Plandatei im JSON-Format. Beispiel:mytfplan.json
.
Aktion zum GitHub Actions-Workflow hinzufügen
- Rufen Sie in Ihrem GitHub-Repository den Workflow auf.
- Öffnen Sie den Workflow-Editor.
- Suchen Sie in der Seitenleiste des GitHub Marketplace nach Analyze Code Security.
- Kopieren Sie im Abschnitt Installation die Syntax.
- Fügen Sie die Syntax als neuen Schritt in Ihren Workflow ein.
Ersetzen Sie die folgenden Werte:
workload_identity_provider
durch den Link zur URL für Ihr ID-Token für die Identitätsföderation von Arbeitslasten.service_account
durch die E-Mail-Adresse des Dienstkontos, das Sie für die Aktion erstellt haben.organization_id
durch Ihre Google Cloud Organisations-ID.scan_file_ref
mit dem Pfad zu Ihrer Terraform-Plandatei im JSON-Format.failure_criteria
mit den Kriterien für den Fehlerschwellenwert, die bestimmen, wann die Aktion fehlschlägt. Die Schwellenkriterien basieren auf der Anzahl der Probleme mit kritischem, hohem, mittlerem und niedrigem Schweregrad, die beim IaC-Validierungsscan gefunden werden. Mitfailure_criteria
wird angegeben, wie viele Probleme der einzelnen Schweregrade zulässig sind und wie die Probleme aggregiert werden (entwederAND
oderOR
). Wenn die Aktion beispielsweise fehlschlagen soll, wenn ein kritisches oder ein Problem mit hoher Schwere auftritt, legen Siefailure_criteria
aufCritical:1,High:1,Operator:OR
fest. Der Standardwert istCritical:1,High:1,Medium:1,Low:1,Operator:OR
. Das bedeutet, dass die Aktion fehlschlagen muss, wenn beim IaC-Validierungsscan Probleme auftreten.
Sie können den Workflow jetzt ausführen, um Ihre Terraform-Plan-Datei zu validieren. Informationen zum manuellen Ausführen des Workflows finden Sie unter Workflow manuell ausführen.
Bericht zu IaC-Verstößen ansehen
Klicken Sie in Ihrem GitHub-Repository auf Actions (Aktionen) und wählen Sie Ihren Workflow aus.
Klicken Sie auf die letzte Ausführung Ihres Workflows.
Im Bereich Artefakte ist der Verstoßbericht (
ias-scan-sarif.json
) in einer ZIP-Datei verfügbar. Der Bericht enthält die folgenden Felder:- Ein
rules
-Feld, das beschreibt, gegen welche Richtlinien der Terraform-Plan verstoßen hat. Jede Regel enthält eineruleID
, die Sie mit den Ergebnissen im Bericht abgleichen können. - Ein
results
-Feld, das die vorgeschlagenen Asset-Änderungen beschreibt, die gegen eine bestimmte Regel verstoßen.
- Ein
Beheben Sie alle Verstöße in Ihrem Terraform-Code, bevor Sie ihn anwenden.
Nächste Schritte
- Quellcode der Aktion „analyze-code-security-scc“ auf GitHub ansehen.