CodeQL Agent ist ein Projekt, das zur Automatisierung der Verwendung von CODEQL zielt. Das Projekt hilft bei der Erstellung von Datenbank und Ausführung der CODEQL -Analyse. CodeQL Agent ist ein Docker -Bild.
CODEQL AGENT FÜR DECKER ist auch das Basisbild von CODEQL Agent für Visual Studio Code - eine Erweiterung für Visual Studio -Code, die die CODEQL -Nutzung vereinfacht und das Code -Scan automatisch ausführt.
Das codeQL-Agent-Bild wird auf Docker Hub unter dem Namen doublevkay/codeql-agent veröffentlicht. Sie können es verwenden, ohne lokal zu bauen.
Der CodeQL -Agent für Docker bietet diese Schlüsselfunktionen:
Binden Sie die Quelle, den Ergebnisordner und führen Sie codeql-agent Bild mit dem folgenden Docker-Befehl aus.
docker run --rm --name codeql-agent-docker
-v "$PWD:/opt/src"
-v "$PWD/codeql-agent-results:/opt/results"
doublevkay/codeql-agentSie können auch weitere Optionen zum Ausführen von CodesQL -Agenten angeben. Weitere Informationen finden Sie unter unterstützten Optionen.
Sie können Umgebungsvariablen festlegen, um die folgenden unterstützten Optionen zu verwenden:
| Variable | Beschreibung |
|---|---|
LANGUAGE | Wert <language> . Stellen Sie die Projektsprache fest, um Datenbank zu erstellen oder SAST auszuführen. Die <language> muss sein: go , java , cpp , csharp , python , javascript , ruby . |
USERID | Wert <id> . Stellen Sie den Eigentümer des Ergebnisordners auf <id> ein. |
GROUPID | Wert <group_id> . Stellen Sie den Gruppenbesitzer des Ergebnisordners auf <group_id> fest. |
THREADS | Wert <number_of_threads> . Verwenden Sie so viele Threads, um Datenbank zu erstellen und Abfragen zu bewerten. Standardeinstellungen zu 1. Sie können 0 übergeben, um einen Thread pro Kern auf der Maschine zu verwenden. |
OVERWRITE_FLAG | Wert --overwrite . Aktivieren/deaktivieren Sie die Datenbank überschreiben, wenn der Datenbankpfad existiert und kein leeres Verzeichnis. Diese Flagge ist nützlich, um die Datenbank gewaltsam wieder aufzubauen. |
QS | Wert <queries-suite> . Geben Sie eine Liste von Abfragen an, um Ihre Datenbank auszuführen. Der Standardwert ist <language>-security-extended.qls . Weitere Informationen finden Sie unter Analyse von Datenbanken mit der CODEQL CLI. |
SAVE_CACHE_FLAG | Wert --save-cache . Sparen Sie aggressiv Zwischenergebnisse im Festplattencache. Dies kann nachfolgende Fragen beschleunigen, wenn sie ähnlich sind. Beachten Sie, dass die Verwendung dieser Option die Disk -Nutzung und die anfängliche Bewertungszeit erheblich erhöht. |
ACTION | create-database-only . Erstellen von CodesQL -Datenbank nur ohne CODEQL -Analyse auszuführen. |
COMMAND | Wert <command> . Die Variable, die verwendet wird, wenn Sie eine CODEQL -Datenbank für eine oder mehrere kompilierte Sprachen erstellen, lassen Sie sich aus, wenn die einzigen angeforderten Sprachen Python und JavaScript sind. Dies gibt die Build -Befehle an, die erforderlich sind, um den Compiler aufzurufen. Wenn Sie diese Variable nicht festlegen, versucht CODEQL, das Build-System automatisch mit einem integrierten Autobuilder zu erkennen. |
Haftungsausschluss: Der CodeQL -Agent leitet diese Optionen direkt an die Befehlsargumente weiter, während der Container ausgeführt wird. Bitte nehmen Sie es als Ihre Sicherheitsverantwortung.
docker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " THREADS=0 "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " ACTION=create-database-only "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " LANGUAGE=java "
-e " QS=java-security-and-quality.qls "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " USERID= $( id -u ${USER} ) " -e " GROUPID= $( id -g ${USER} )
doublevkay/codeql-agentStandardmäßig verwenden wir JDK 11 und Maven 3.6.3 für das codeQL -Agent -Image. Wir können die Versionen von Java und Maven ändern, indem wir ein Volumen montieren und die Umgebungsvariablen java_home und maven_home im CODEQL Agent Container festlegen. Zum Beispiel:
FROM --platform=amd64 maven:3-jdk-8-slim
RUN mkdir -p /opt/jdk/ /opt/maven/
RUN cp -r $JAVA_HOME/* /opt/jdk/
RUN cp -r $MAVEN_HOME/* /opt/maven/
CMD [ "echo" ] docker buildx build -t codeql-java -f Dockerfile-java .
docker run --rm -v " jdkvol:/opt/jdk " -v " mavenvol:/opt/maven " codeql-javadocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-v " jdkvol:/opt/jdk "
-v " mavenvol:/opt/maven "
-e " LANGUAGE=java "
-e " JAVA_HOME=/opt/jdk "
-e " MAVEN_HOME=/opt/maven "
-e " COMMAND=mvn clean install "
doublevkay/codeql-agentSie können das CodesQL -Agent -Image auf Docker Hub verwenden oder es lokal anpassen und erstellen.
# Build codeql-agent docker image locally
cd codeql-agent
docker build -t codeql-agent . CodeQL Agent ist ein Docker -Bild. Die folgenden Schritte werden durchgeführt, um die Ziele der Automatisierung der Verwendung von CODEQL zu erreichen.
In diesem Schritt bereitet das Bild die Umgebung für die Ausführung von CodesQL vor. Es umfasst: Verwenden von Ubuntu -Basisbild; Herunterladen und Installieren von CODEQL -Bundle (das die CodesQL -CLI und die vorkompilierten Bibliotheksabfragen enthält, um die CODEQL -Ausführungszeit zu verkürzen); Installation der erforderlichen Software wie
java,maven,nodejs,typescript, ... um eine CodeQL -Datenbank erfolgreich zu erstellen.
CODEQL Agent verwendet GitHub/Linguist, um die Quellcodesprache zu erkennen.
CODEQL AGENT führt den Befehl codeQL erstellen Datenbank aus.
codeql database create --threads= $THREADS --language= $LANGUAGE $COMMAND $DB -s $SRC $OVERWRITE_FLAGDie Analyse von Datenbanken erfordert die Angabe einer Abfrage -Suite. Nach den Zielen der Anwendungsziele statischer Anwendungssicherheitstests (SAST) verwendet der CodeQL-Agent
<language>-security-extended.qlsals Standard-Query-Suite.
CODEQL Agent führt den Befehl codeQL Database -Analyse aus.
codeql database analyze --format= $FORMAT --threads= $THREADS $SAVE_CACHE_FLAG --output= $OUTPUT /issues. $FORMAT $DB $QSDer CodeQL -Agent konvertiert das CODEQL -Ergebnis vom SARIF -Format in Sicherheitsberichtschemas (bereitgestellt von GitLab). Dieser Schritt erfolgt durch die Zuordnung der Felder zweier Formate. Die Details der Implementierung finden Sie im Sarif2Sast -Skript. Sie können dieses Skript unabhängig als Problemumgehung verwenden, um das GitLab -Problem 118496 zu lösen.
Dieses Repo basiert auf Microsoft/Codeql-Container und J3ssie/Codeql-Docker mit weiteren Funktionsoptionen. Speziell:
Sie können ein Problem im Github Repo eröffnen
Beiträge sind immer willkommen! Erstellen Sie einfach eine Pull -Anfrage oder kontaktieren Sie mich
Siehe Details
CodeQL Agent verwendet Codesql CLI als Core Engine. Bitte befolgen Sie die Github -Codel -Geschäftsbedingungen und nehmen Sie sie als eigene Verantwortung an.