先日、Sysdig SecureのレジストリスキャンがGoogle Artifact Registry(以下GAR)に対応したので、さっそく試しみてみました。
参照ドキュメント
前提条件
レジストリスキャンを実施するregistry-scannerはKubernetes上でコンテナとして動作します。そのため、Kubernetes環境が必要 です。
レジストリスキャンを実施するService Accountの作成
- レジストリスキャンを実施するService Accountを作成し、
Project Viewer
とArtifact Registry Reader
の権限を割り当てます。
gcloud projects add-iam-policy-binding <YOUR_PROJECT_ID> --member='serviceAccount:my-iam-account@my-project.iam.gserviceaccount.com' --role='roles/viewer' --role='roles/artifactregistry.reader'
2. Service AccountのJSONタイプのService Account Keyを作成し、ダウンロードします。
Helmによるregistry-scannerのインストール
- 以下のコマンドでregistry-scannerをKubernetes環境にインストールします。
SYSDIG_SECURE_URLの値はご利用のSysdig SaaSリージョンにより異なります。下記ドキュメントをご参照ください。
https://docs.sysdig.com/en/docs/administration/saas-regions-and-ip-ranges/
helm repo add sysdig https://charts.sysdig.com
helm repo update
helm upgrade --install registry-scanner sysdig/registry-scanner --version=1 \
--set config.secureBaseURL=<SYSDIG_SECURE_URL> \
--set config.secureAPIToken=<SYSDIG_SECURE_API_TOKEN> \
--set config.registryType=gar \
--set config.registryURL=<GAR_REGISTRY_URL> \
--set config.registryPassword=<GAR_REGISTRY_PASSWORD>
<GAR_REGISTRY_PASSWORD> には、先ほどダウンロードしたService Account Keyをbase 64にエンコードした--set config.registryPassword="$(cat <GAR_SA_FILE_NAME>.json | base64)"
を指定します。
異なるリージョンでGARをセットアップしている場合、異なるリージョンのURL用に別々のスキャナーをデプロイする必要があります。
- us-east1-docker.pkg.dev (us-east1リージョンのレジストリ)
- us-docker.pkg.dev (usマルチリージョンのレジストリ)
2. 下記コマンドで、Cronjobとして登録されていることを確認します。
kubectl get cronjob
デフォルトでは毎週土曜日の午前6時にスキャンが実行される設定で登録されています。
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
registry-scanner 0 6 * * 6 False 0 <none> 88s
手動によるレジストリスキャン
- レジストリスキャンを手動で実行する場合は、下記コマンドを実行します。
kubectl create job --from=cronjob/registry-scanner registry-scanner-manual-test
2. 起動したregistry-scannerのPodを確認します。
kubectl get pod
NAME READY STATUS RESTARTS AGE
registry-scanner-manual-test-s2xhz 0/1 Completed 0 41s
registry-scanner-worker-dd42x-1-mk8gj 0/1 Completed 0 33s
3. Podのログを確認します。
kubectl logs registry-scanner-manual-test-s2xhz
スキャン結果のSysdig UIでの確認
Sysdig UIにログインし、Vulnerabilities > Registry に移動します。
レジストリ内のイメージのスキャン結果が表示されていることを確認します。
クリーンアップ
registry-scannerをアンインストールするには以下のコマンドを実行します。
kubectl delete job registry-scanner-manual-test
sudo helm uninstall registry-scanner
まとめ
registry-scannerを使って、Google Artifact Registryのレジストリスキャンを簡単に実行できることが確認できました。