codeqlエージェントは、codeqlの使用を自動化することを目的としたプロジェクトです。このプロジェクトは、データベースの作成とCodeQL分析を実行するのに役立ちます。 codeqlエージェントはDocker画像です。
DockerのCodeQLエージェントは、Visual StudioコードのCodeQLエージェントのベースイメージでもあります。これは、CodeQLの使用を簡素化し、コードスキャンを自動的に実行するVisual Studioコードの拡張機能です。
CodeQLエージェント画像は、Docker Hubでdoublevkay/codeql-agentという名前でリリースされます。ローカルに構築せずに使用できます。
Dockerのcodeqlエージェントは、これらの重要な機能を提供します。
バインドソース、結果フォルダーをマウントし、次のDockerコマンドでcodeql-agentイメージを実行します。
docker run --rm --name codeql-agent-docker
-v "$PWD:/opt/src"
-v "$PWD/codeql-agent-results:/opt/results"
doublevkay/codeql-agentまた、CodeQLエージェントを実行するためのより多くのオプションを指定することもできます。詳細については、サポートされているオプションを参照してください。
環境変数を設定して、次のサポートされているオプションを使用できます。
| 変数 | 説明 |
|---|---|
LANGUAGE | 値<language> 。プロジェクト言語を設定してデータベースを構築するか、SASTを実行します。 <language>は: go 、 java 、 cpp 、 csharp 、 python 、 javascript 、 rubyなければなりません。 |
USERID | 値<id> 。結果フォルダーの所有者を<id>に設定します。 |
GROUPID | 値<group_id> 。結果フォルダーのグループ所有者を<group_id>に設定します。 |
THREADS | value <number_of_threads> 。この多くのスレッドを使用して、データベースを構築し、クエリを評価します。デフォルトは1です。0を渡して、マシンのコアごとに1つのスレッドを使用できます。 |
OVERWRITE_FLAG | Value --overwrite 。データベースパスが存在し、空のディレクトリではなくデータベースパスが存在する場合、データベースの上書きを有効/無効にします。このフラグは、データベースを強制的に再構築するのに役立ちます。 |
QS | 値<queries-suite> 。データベースを実行するクエリのリストを指定します。デフォルト値は<language>-security-extended.qlsです。詳細については、CodeQL CLIを使用したデータベースの分析を参照してください。 |
SAVE_CACHE_FLAG | 値--save-cache 。中間結果をディスクキャッシュに積極的に保存します。これにより、それらが類似している場合、後続のクエリをスピードアップする可能性があります。このオプションを使用すると、ディスクの使用量と初期評価時間が大幅に増加することに注意してください。 |
ACTION | 値create-database-only 。 codeql分析を実行せずにのみcodeqlデータベースを作成します。 |
COMMAND | 値<command> 。変数は、1つ以上のコンパイルされた言語のcodeQLデータベースを作成するときに使用されます。要求された言語のみがPythonとJavaScriptである場合は省略します。これは、コンパイラを呼び出すために必要なビルドコマンドを指定します。この変数を設定しない場合、CodeQLはビルドシステムを自動的に検出しようとします。 |
免責事項: CodeQLエージェントは、コンテナの実行中にこれらのオプションをコマンド引数に直接転送します。あなたのセキュリティ責任としてそれをとってください。
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-agentデフォルトでは、CodeQLエージェント画像にJDK 11とMaven 3.6.3を使用します。ボリュームをマウントし、CodeQLエージェントコンテナのJava_homeおよびMaven_home環境変数を設定することにより、JavaとMavenのバージョンを変更できます。例えば:
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-agentDocker HubでCodeQLエージェントイメージを使用するか、ローカルでカスタマイズして構築できます。
# Build codeql-agent docker image locally
cd codeql-agent
docker build -t codeql-agent . codeqlエージェントはDocker画像です。 CodeQLの使用を自動化するという目標を達成するために、次の手順が実行されます。
このステップでは、画像はCodeQLを実行するための環境を準備します。以下が含まれます:ubuntuベースイメージの使用。 CodeQLバンドルのダウンロードとインストール(CodeQL CLIとPRECOPILEDライブラリクエリが含まれており、CODEQL実行時間を短縮)。
java、maven、nodejs、typescriptなどの必要なソフトウェアのインストール... CodeQLデータベースを正常に作成します。
codeqlエージェントは、github/言語学者を使用してソースコード言語を検出します。
codeqlエージェントは、codeql create databaseコマンドを実行します。
codeql database create --threads= $THREADS --language= $LANGUAGE $COMMAND $DB -s $SRC $OVERWRITE_FLAGデータベースの分析には、クエリスイートを指定する必要があります。アプリケーションの静的アプリケーションセキュリティテスト(SAST)の目標によれば、CodeQLエージェントは
<language>-security-extended.qlsデフォルトクエリスイートとして使用します。
codeqlエージェントは、codeqlデータベース分析コマンドを実行します。
codeql database analyze --format= $FORMAT --threads= $THREADS $SAVE_CACHE_FLAG --output= $OUTPUT /issues. $FORMAT $DB $QScodeQLエージェントは、SARIF形式からCODEQL結果をセキュリティレポートスキーマ(GITLABが提供)に変換します。この手順は、2つの形式のフィールドをマッピングすることで実行されます。実装の詳細は、SARIF2SASTスクリプトにあります。このスクリプトを独立して回避策として使用して、Gitlab Issue 118496を解決できます。
このレポは、より多くの機能オプションを備えたMicrosoft/CodeQL-ContainerとJ3SSIE/CodeQL-Dockerに基づいています。具体的には:
Github Repoで問題を開くことができます
貢献はいつでも大歓迎です!プルリクエストを作成するか、私に連絡してください
詳細を参照してください
codeqlエージェントは、Codeql CLIをコアエンジンとして使用します。 GitHub CodeQLの利用規約に従って、自分の責任として取ってください。