GitLab CI/CD での Device Protection
GitLab CI/CD ジョブは Linux ランナーで実行されるため、Device Protection は他の Linux マシンと同じ方法でインストールされます。GitLab 特有なのはインストール先です。常駐する shell executor のホストに 1 回だけ行うか、Docker および Kubernetes executor では各ジョブ内で行います。
まず Linux 用 Device Protection をインストールする トークンとインストール方式についてお読みください。以下のジョブレベルのスニペットでは container 方式を使用しており、これは コンテナ内の Device Protection を説明しています。
Docker および Kubernetes の executor
これは GitLab.com のホストされたランナーにも当てはまります。Device Protection トークンを、次の名前のマスクされた CI/CD 変数として追加してください AIKIDO_TOKEN、その後、エージェントを起動します before_script:
default:
before_script:
- curl -fsSL https://github.com/AikidoSec/safe-chain/raw/refs/heads/main/install-scripts/install-endpoint-linux.sh | sh -s -- --container
- aikido-endpoint-protection-start --wait-for-healthy
- for f in /etc/profile.d/aikido-*.sh; do . "$f"; done
install:
image: node:20-bookworm
script:
- npm cibefore_scriptはシェルを共有しますscript、そのため読み込まれた設定がコマンドに反映されます。独自のbefore_scriptものを使うジョブでは、デフォルトのものが置き換えられるため、そこでも 3 行を繰り返してください。- ジョブは root として実行する必要があり、イメージには
curl.
Shell executor
runner ホストにエージェントを --headless付きでインストールし、その後再起動します。参照: Linux 用 Device Protection をインストールする.
動作確認
verify-device-protection:
image: node:20-bookworm
script:
- curl -sS -o /dev/null -w "%{http_code}\n" --max-time 15 https://registry.npmjs.org/safe-chain-test/-/safe-chain-test-0.0.1-security.tgz403 は、エージェントがマルウェアのテスト用パッケージをブロックしたことを意味します。 200 は、ダウンロードがエージェントを回避したことを意味します。
トラブルシューティング
| 問題 | 修正 |
|---|---|
トークンが必要です | ジョブはその変数を参照できません。保護された変数は保護されたブランチとタグにのみ届きます |
root 権限が必要です | イメージは non-root ユーザーとして実行されます。root として実行されるイメージを使用してください |
テストパッケージが返す 200、または SELF_SIGNED_CERT_IN_CHAIN | ジョブが上書きします before_script。そこに 3 行を追加してください |