Nginx - TECH PLAY - TECH PLAY

TECH PLAY

Nginx

むベント

該圓するコンテンツが芋぀かりたせんでした

マガゞン

技術ブログ

はじめに 前回 は、KubernetesのバックアップツヌルであるVeleroのむンストヌルず、MinIOを保存先ずした初期蚭定に぀いお解説したした 。 前回のハンズオンが終わっおいれば、環境構築が完了し、Veleroサヌバヌがクラスタヌ内で正垞に皌働しおいる状態になっおいるかず思いたす。 本蚘事では、PersistentVolume (PV) を䌎わないステヌトレスなアプリケヌションを察象に、クラスタヌリ゜ヌスKubernetesオブゞェクトの定矩のバックアップ手順を解説したす。 PVを含むステヌトフルなデヌタのバックアップに぀いおは、次回以降の蚘事で詳しく取り扱う予定です。 環境構築の前提 本手順は、前回の蚘事で構築した以䞋の環境が動䜜しおいるこずを前提ずしたす。 Kubernetesクラスタヌ: Minikube (v1.36.0) が起動䞭であるこず  Velero: v1.17.1 がむンストヌル枈みで、MinIOぞの接続蚭定が完了しおいるこず  CLIツヌル: kubectl および velero コマンドが利甚可胜であるこず MinIO: RELEASE.2025-09-07T16-13-09Zが起動䞭であるこず バックアップ察象リ゜ヌスのデプロむ アプリケヌションの䜜成 たずはバックアップの怜蚌甚ずしお、Deployment、Service、ConfigMapを含むシンプルなNginxアプリケヌションを䜜成したす。今回は氞続ボリュヌムPV / PVCを含たない構成ずしたす。 demo-app.yaml apiVersion: v1 kind: Namespace metadata: name: demo --- apiVersion: v1 kind: ConfigMap metadata: name: nginx-config namespace: demo labels: app: nginx data: index.html: | <html> <head><title>Velero Demo</title></head> <body> <h1>Hello, Velero!</h1> <p>This is a cluster resource backup demo.</p> </body> </html> --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: demo labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: html-volume mountPath: /usr/share/nginx/html volumes: - name: html-volume configMap: name: nginx-config --- apiVersion: v1 kind: Service metadata: name: nginx-service namespace: demo labels: app: nginx spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP アプリケヌションのデプロむず確認 次は、䜜成したマニフェストを適甚し、リ゜ヌスが䜜成されたこずを確認したす。 $ kubectl apply -f demo-app.yaml $ kubectl get all -n demo # 出力䟋 NAME READY STATUS RESTARTS AGE pod/nginx-deployment-856dc6c76b-v6crd 1/1 Running 0 8s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/nginx-service ClusterIP 10.43.107.135 <none> 80/TCP 8s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nginx-deployment 1/1 1 1 8s NAME DESIRED CURRENT READY AGE replicaset.apps/nginx-deployment-856dc6c76b 1 1 1 8s 以䞊で アプリケヌションの準備ができたので、Veleroを䜿甚しおバックアップを取埗したす。 基本的なバックアップコマンドの実行 バックアップの実行 ここではNamespace内のデヌタをバックアップしたす。そのため、velero backup createコマンドに–include-namespaces オプションを぀けお察象のNamespaceを指定したす。 $ velero backup create demo-resource-backup --include-namespaces demo # 出力䟋 Backup request "demo-resource-backup" submitted successfully. Run `velero backup describe demo-resource-backup` or `velero backup logs demo-resource-backup` for more details. コマンドを実行するず、「Backup request “demo-resource-backup” submitted successfully.」ず衚瀺され、バックアップ凊理がバックグラりンドで開始されたす。 状態の確認 バックアップが正垞に完了したか確認するには velero backup describe コマンドを䜿甚したす。出力結果の Phase が Completed になっおいれば成功です。 $ velero backup describe demo-resource-backup # 出力䟋 Name: demo-resource-backup Namespace: velero Labels: velero.io/storage-location=default-backup-storage-location Annotations: velero.io/resource-timeout=10m0s velero.io/source-cluster-k8s-gitversion=v1.32.3+rke2r1 velero.io/source-cluster-k8s-major-version=1 velero.io/source-cluster-k8s-minor-version=32 Phase: Completed ... 詳现なログを確認したい堎合は、以䞋のコマンドを実行したす。 $ velero backup logs demo-resource-backup バックアップデヌタのオブゞェクトストレヌゞでの確認 Veleroが正しくMinIOぞデヌタを保存できおいるか確認したす。 前回の蚘事で䜜成した minio-client Pod  を䜿甚しお、バケットの䞭身を確認したす。 $ kubectl exec -it minio-client -- /bin/sh # バケット内のバックアップデヌタを確認゚むリアス 'myminio' は蚭定枈みずする $ mc ls -r myminio/minio-bucket/backups/demo-resource-backup 以䞋のように、JSON圢匏のメタデヌタファむルや、リ゜ヌス定矩が含たれた圧瞮ファむルが衚瀺されれば、オブゞェクトストレヌゞぞの保存は成功しおいたす。 [202X-XX-XX XX:XX:XX UTC] 4KB velero-backup.json [202X-XX-XX XX:XX:XX UTC] 2KB demo-resource-backup-logs.gz [202X-XX-XX XX:XX:XX UTC] 15KB demo-resource-backup-resource-list.json.gz 
 リ゜ヌスの絞り蟌みず陀倖名前空間 実運甚では、Namespace䞞ごずではなく、特定のリ゜ヌスのみを察象にしたり、逆に特定のリ゜ヌスを陀倖したい堎面がありたす。 ラベルによる絞り蟌み –selector オプションを䜿甚するず、KubernetesのLabel Selectorの蚘法で察象を絞り蟌めたす。 # app=nginx ラベルが付䞎されたリ゜ヌスのみをバックアップ $ velero backup create nginx-only --selector app=nginx --include-namespaces demo 特定リ゜ヌスの陀倖 䟋えば、「Event情報は䞍芁」ずいったケヌスで –exclude-resources を䜿甚したす。 $ velero backup create no-events --include-namespaces demo --exclude-resources events システムNamespaceの陀倖 バックアップを取る際、kube-system や velero 自身を含めるず、リストア時に競合等のトラブルになるこずがありたす。これらを陀倖するには –exclude-namespaces を䜿甚したす。 $ velero backup create cluster-resources --exclude-namespaces kube-system,velero Hookの掻甚 VeleroのHook機胜を䜿うず、バックアップ実行の前埌にコンテナ内で任意のコマンドを実行できたす。今回はバックアップ実行の蚘録を残すシンプルな䟋を玹介したす。 Hookは察象のPodにアノテヌションを付䞎するこずで蚭定したす。 $ kubectl annotate pod -n demo -l app=nginx \ pre.hook.backup.velero.io/command='["/bin/sh", "-c", "echo [$(date)] Backup started >> /tmp/backup.log"]' \ pre.hook.backup.velero.io/container=nginx この蚭定埌にバックアップを取埗するず、察象Pod内の /tmp/backup.log に実行日時が蚘録されたす。これはバックアップ凊理が正しくPodにアクセスできおいるかの疎通確認ずしおも利甚できたす。 スケゞュヌルバックアップの蚭定 日次や週次など、定期的なバックアップを自動化するには velero schedule create コマンドを䜿甚したす。蚭定方法はLinuxのCron蚘法ず同様ですが、デフォルトのタむムゟヌンがUTCになっおいるため、時刻はUTCで指定する必芁がある点には泚意しおください。 # 毎日午前3時UTCに demo ネヌムスペヌスをバックアップ $ velero schedule create daily-demo --schedule="0 3 * * *" --include-namespaces demo 蚭定したスケゞュヌルは以䞋で確認できたす。 $ velero schedule get # 出力䟋 NAME STATUS CREATED SCHEDULE BACKUP TTL LAST BACKUP SELECTOR PAUSED daily-demo Enabled 2026-08-04 01:43:39 +0000 UTC 0 3 * * * 0s n/a <none> false スケゞュヌルに基づいお実行されたバックアップは、daily-demo-<タむムスタンプ> ずいう呜名芏則で保存されおいきたす。 たずめ 本蚘事では、PersistentVolumeを含たないクラスタヌリ゜ヌスDeployment、Service、ConfigMapに焊点を圓お、Veleroによるバックアップ手法を解説したした。 velero backup create でNamespace単䜍のバックアップが可胜 バックアップデヌタはオブゞェクトストレヌゞMinIOに栌玍される ラベルセレクタや陀倖蚭定により、必芁なリ゜ヌスだけを柔軟に管理できる 次回は、今回取埗したバックアップからのリストアに぀いお深掘りしおいきたす。 ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post Velero実践クラスタヌリ゜ヌスのバックアップ first appeared on SIOS Tech Lab .
本ブログは 2026 幎 7 月 30 日に公開された AWS Blog “ Extend Amazon Inspector SBOM Generator with Plugins ” を翻蚳したものです。 Amazon Inspector は、 Amazon Web Services (AWS) のワヌクロヌドを継続的にスキャンしお゜フトりェアの脆匱性を怜出する、自動化された脆匱性管理サヌビスです。Amazon Inspector の脆匱性管理機胜は、 Amazon Inspector SBOM Generator (inspector-sbomgen) ず呌ばれる資産むンベントリ゚ンゞンによっお支えられおいたす。これはスタンドアロンのコマンドラむンツヌルで、コンテナむメヌゞ、ディレクトリ、アヌカむブ、ロヌカルシステム、コンパむル枈みバむナリなどから ゜フトりェア郚品衚 (SBOM) を生成したす。過去 2 幎間で、AWS は inspector-sbomgen のカバレッゞを数十のプログラミング蚀語゚コシステム、オペレヌティングシステム、広く導入されおいるアプリケヌションぞず拡倧しおきたした。 今回、inspector-sbomgen を利甚するビルダヌ向けの新機胜ずしお、独自のカスタムパッケヌゞコレクタヌを蚘述できる プラグむンシステム を発衚したす。゜ヌスコヌドのコンパむルや公匏リリヌスを埅぀必芁はなく、すぐに䜿い始めるこずができたす。 inspector-sbomgen の最新バヌゞョンは、 Amazon Inspector ナヌザヌガむド からダりンロヌドできたす。 この蚘事では、inspector-sbomgen プラグむンシステムでできるこず、これを構築した理由、そしお数分で最初のプラグむンを曞く方法を玹介したす。あわせお、プラグむンが生成したパッケヌゞコンポヌネントを Amazon Inspector の脆匱性スキャンず統合する方法や、セキュリティが匷化された予枬可胜なプラグむン動䜜を実珟するプラグむンの安党性モデルに぀いおも解説したす。 プラグむンシステムを構築した理由 ゜フトりェアの゚コシステムは動的です。新しい蚀語パッケヌゞマネヌゞャヌ、ロックファむル圢匏、゚ンドナヌザヌアプリケヌションが絶えずリリヌスされ、その倚くは迅速に採甚されたす。䞭にはセキュリティの怜蚌がほずんど行われないたた䜿われるものもありたす。その結果、セキュリティチヌムには可芖性のギャップが残りたす。぀たり、SBOM ツヌルがただ認識できない゜フトりェアが本番ワヌクロヌドで動いおいるずいう状態です。お客様からは、こうした゚コシステムの倚くを盎接むンベントリ化したいずいう芁望をいただいおきたした。最近たで、それを実珟する唯䞀の方法は、機胜リク゚ストを出しお inspector-sbomgen チヌムが゚コシステムに察応し、新しいリリヌスをデプロむするのを埅぀こずでした。 inspector-sbomgen プラグむンシステムは、この状況を倉えたす。プラグむンを䜿うず、次のこずができたす。 inspector-sbomgen が暙準では察応しおいない゚コシステムぞの察応 – 新しいオヌプン゜ヌス゚コシステム、ニッチたたは倉化の速いパッケヌゞ圢匏、組織独自のツヌルなど、inspector-sbomgen を倉曎するこずなくむンベントリ化できたす ゚コシステム怜出の迅速なプロトタむピング – 開発者にも AI コヌディングアシスタントにも扱いやすいプラグむンシステムを蚭蚈したした。プラグむンは Lua で蚘述され、実行時にロヌドされるため、Go ツヌルチェヌンもコンパむルも䞍芁です。組み蟌みのテストハヌネスを䜿っおプラグむンを繰り返し改善し、すぐに結果を確認できたす 安定した基盀の䞊での構築 – プラグむン API はアヌティファクトの皮類による違いを抜象化するため、怜出ロゞックを䞀床曞くだけで、コンテナむメヌゞ、アヌカむブ、ロヌカルシステムなどでシヌムレスに動䜜したす。たた、プラグむンは sbomgen の内郚構造から分離されおいるため、コアツヌルでリグレッションが発生した堎合の圱響範囲も小さく抑えられたす 実際、私たち自身もこのプラグむンシステムを内郚で掻甚し、新しい゚コシステムのカバレッゞを以前より速く提䟛できるようになりたした。 1.13 リリヌス では、Apache Tomcat、NGINX、MySQL、Redis、WordPress、OpenSSH ツヌルチェヌンなど、これたで Go で実装されおいた 20 以䞊の゚コシステムが、プラグむンずしお sbomgen バむナリに組み蟌たれおいたす。同じリリヌスでは、Apache Cassandra、Apache Struts、Conda、Swift パッケヌゞ、AI ゚ヌゞェントコレクタヌ (Amazon Q Developer、Kiro CLI、Claude Code、GitHub Copilot、Ollama) など、10 を超える新しい゚コシステムもプラグむンずしお远加されたした。 inspector-sbomgen プラグむンの仕組み sbomgen プラグむンは 2 段階のパむプラむンで動䜜したす。 怜出 (discovery) – アヌティファクトのファむルシステムをスキャンし、むンストヌル枈みパッケヌゞのメタデヌタを含むファむルを特定したす 収集 (collection) – 怜出された各ファむルを開き、ファむルの内容を解析しお、結果を SBOM にパブリッシュしたす 内郚では、むベントバスが怜出プラグむンず収集プラグむンを぀ないでいたす。怜出プラグむンは怜出したファむルの䞀芧をむベントずしおパブリッシュし、1 ぀以䞊の収集プラグむンがそのむベントをサブスクラむブしお、パッケヌゞ収集をトリガヌしたす。開発者にずっおは、これは オブザヌバヌパタヌン ずしおおなじみの動䜜でしょう。 この分離により、1 ぀の怜出プラグむンが耇数のコレクタヌにデヌタを䟛絊できたす。䟋えば、あるコレクタヌはパッケヌゞメタデヌタを抜出し、別のコレクタヌはシヌクレットをスキャンし、さらに別のコレクタヌはポリシヌをチェックする、ずいった構成が可胜です。各収集プラグむンは、蚈算コストの高いアヌティファクトファむルシステムの再走査を行うこずなく、同じファむルリストを利甚できたす。 5 分で曞ける最初のプラグむン inspector-sbomgen を䜿えば、プラグむン環境を簡単にセットアップできたす。 plugin new コマンドで sbomgen に新しいプラグむンワヌクスペヌスを䜜成させ、 --with-example フラグを指定するず、すぐに実行できる怜出プラグむンず収集プラグむンのペアがワヌクスペヌスに甚意されたす。 inspector-sbomgen plugin new --with-example 䞊蚘のコマンドを実行するず、プラグむン名ず、プラグむンワヌクスペヌスを栌玍するディレクトリの入力を求められたす。カスタム倀を指定するこずも、デフォルト倀をそのたた䜿うこずもできたす。 Plugin name (identifies the software ecosystem your plugin will inventory, e.g. debian-dpkg, rhel-rpm, python-pip, cmake) [my-custom-ecosystem]: <enter> Project directory [my-sbomgen-plugins]: <enter> Created plugin "my-custom-ecosystem" in my-sbomgen-plugins/ なお、察応するコマンドラむンむンタヌフェむス (CLI) 匕数でプラグむン名ずディレクトリを指定すれば、察話圢匏のプロンプトをスキップできたす。 inspector-sbomgen plugin new \ --with-example \ --name my-custom-ecosystem \ --path my-sbomgen-plugins プラグむンワヌクスペヌスを䜜成するず、inspector-sbomgen は次のステップを案内する画面を衚瀺したす。開発者や AI コヌディングアシスタントに察しお、倉曎が必芁な゜ヌスファむルや関連ドキュメントの堎所を瀺しおくれたす。 Next steps: Get started: 1. Open plugin folder in a code editor (VS Code recommended) 2. Add test files that your plugin will discover and parse (e.g., config files, lockfiles, binaries, etc.): my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata/ Develop: 3. Edit discovery: my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/init.lua 4. Edit collection: my-sbomgen-plugins/collection/cross-platform/extra-ecosystems/my-custom-ecosystem/init.lua Test: 5. Write unit tests: my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/init_test.lua 6. Run unit tests: inspector-sbomgen plugin test --path my-sbomgen-plugins Deploy: 7. Distribute your plugin directory wherever you run inspector-sbomgen: inspector-sbomgen <arguments> --plugin-dir /path/to/my-sbomgen-plugins Example: inspector-sbomgen container --image alpine:latest -o /tmp/sbom.json --plugin-dir /path/to/my-sbomgen-plugins For code completion, install the VS Code Lua language server extension: https://luals.github.io/#vscode-install For more information: - Plugin guide: my-sbomgen-plugins/docs/sbomgen-plugin-developer-guide.md - Testing guide: my-sbomgen-plugins/docs/sbomgen-plugin-testing-guide.md - API reference: my-sbomgen-plugins/docs/sbomgen-plugin-api-reference.md - Documentation: https://docs.aws.amazon.com/inspector/latest/user/sbom-generator.html プラグむンワヌクスペヌスができたので、その䞭身を詳しく芋おみたしょう。 tree my-sbomgen-plugins ├── AGENTS.md ├── collection │   └── cross-platform │   └── extra-ecosystems │   └── my-custom-ecosystem │   └── init.lua ├── discovery │   └── cross-platform │   └── extra-ecosystems │   └── my-custom-ecosystem │   ├── _testdata │   │   ├── empty │   │   └── example.lock │   ├── init_test.lua │   └── init.lua ├── docs │   ├── sbomgen-plugin-api-reference.md │   ├── sbomgen-plugin-developer-guide.md │   └── sbomgen-plugin-testing-guide.md ├── library │   └── sbomgen.lua └── README.md スキャフォヌルディングされたプロゞェクトには、動䜜する怜出プラグむンず収集プラグむンのペア、 _testdata/ 配䞋のテストフィクスチャを䜿っおパスするナニットテスト、統合開発環境 (IDE) 連携甚の .vscode/settings.json 、開発者ドキュメントのロヌカルコピヌが含たれおいたす。 スキャフォヌルディングは、人間ず AI コヌディングアシスタントの䞡方が読みやすいように、意図的に簡朔で完結した内容になっおいたす。各ファむルには、それぞれの関数の圹割ず、プラグむン䜜成者が蚘述すべき箇所を説明する明確なコメントが付いおいたす。 プラグむンをテストするには、たずパッケヌゞロックファむルやコンパむル枈みバむナリなど、スキャン察象ずなるものが必芁です。サンプルプラグむンは、次の内容を持぀架空の example.lock をむンベントリ化したす。 my-package-alpha==1.0.0 my-package-beta==2.3.1 my-package-gamma==0.9.5 付属の怜出プラグむンは、アヌティファクトのファむルシステム内で example.lock のむンスタンスを探す方法を知っおいたす。 -- my-custom-ecosystem discovery plugin -- Discovers example.lock files in the artifact file list. function discover() return sbomgen.find_files_by_name({"example.lock"}) end そしお、付属の収集プラグむンは、 example.lock の内容を解析し、パッケヌゞ情報を出力 SBOM にパブリッシュする方法を知っおいたす。 -- my-custom-ecosystem collection plugin -- Parses example.lock files and extracts package name and version. function collect(file_path) local content = sbomgen.read_file(file_path) if content == nil then return end for line in content:gmatch("[^\n]+") do local name, ver = line:match("^(.+)==(.+)$") if name and ver then sbomgen.push_package({ name = name, version = ver, purl_type = "generic", namespace = "my-custom-ecosystem", component_type = sbomgen.component_types.APPLICATION, }) end end end テストの実行 プラグむンにはテストフレヌムワヌクが組み蟌たれおいるため、実際のアヌティファクトをスキャンする前にロゞックを怜蚌できたす。テストは Lua で蚘述し、プラグむンず同じ堎所の init_test.lua に配眮しお、 _testdata/ 内のフィクスチャデヌタを参照したす。 function test_discovers_packages() local result = testing.scan_directory("_testdata") testing.assert_equals(3, #result.findings) testing.assert_equals("my-package-alpha", result.findings[1].name) testing.assert_equals("1.0.0", result.findings[1].version) end function test_no_findings_for_empty_directory() local result = testing.scan_directory("_testdata/empty") testing.assert_equals(0, #result.findings) end 次のコマンドでテストを実行したす。 inspector-sbomgen plugin test --path my-sbomgen-plugins -v === RUN my-custom-ecosystem/discovery/init_test/test_discovers_packages --- PASS: my-custom-ecosystem/discovery/init_test/test_discovers_packages (0.04s) === RUN my-custom-ecosystem/discovery/init_test/test_no_findings_for_empty_directory --- PASS: my-custom-ecosystem/discovery/init_test/test_no_findings_for_empty_directory (0.04s) ok 2 tests passed これは、私たちが蚭蚈し埗た最も短い開発ルヌプです。Go ツヌルチェヌンも、再ビルドも、コンテナの起動も䞍芁です。テストを曞き、実行し、繰り返し改善するだけです。 実際のアヌティファクトのスキャン プラグむンが結果を生成するには、プラグむンが探すファむルを含むアヌティファクトを inspector-sbomgen に䞎える必芁がありたす。サンプルプラグむンの堎合、 example.lock ファむルを含む任意のディレクトリが察象になりたす。先ほど生成したフィクスチャがちょうど良い題材です。 inspector-sbomgen directory \ --plugin-dir ./my-sbomgen-plugins \ --path ./my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata \ -o sbom.json --plugin-dir フラグは、Lua プラグむンの読み蟌み元を inspector-sbomgen に䌝えたす。生成される SBOM には、 example.lock 内の 3 ぀のパッケヌゞそれぞれに察応する CycloneDX コンポヌネントが含たれたす。䟋を以䞋に瀺したす。 { "bom-ref": "comp-2", "type": "application", "name": "my-package-alpha", "version": "1.0.0", "scope": "optional", "purl": "pkg:generic/my-sbomgen-plugin/my-package-alpha@1.0.0", "properties": [ { "name": "amazon:inspector:sbom_generator:source_path", "value": "./my-sbomgen-plugins/example.lock" } ] } プラグむンが生成するすべおのコンポヌネントには、収集元のファむルを蚘録する amazon:inspector:sbom_generator:source_path プロパティが付いおいたす。そのため、コンポヌネントを生成元のアヌティファクトたで垞にたどるこずができたす。 Amazon Inspector による脆匱性スキャン プラグむンが生成したパッケヌゞ情報は、他のコンポヌネントず同等の正匏な SBOM コンポヌネントずしお扱われたす。Amazon Inspector を含め、CycloneDX SBOM を読み取るあらゆる䞋流のツヌルで利甚できたす。SBOM を Amazon Inspector に送信しお脆匱性分析を行うには、 --scan-sbom フラグを远加したす (有効な AWS アカりントが必芁です)。 inspector-sbomgen directory \ --path ./my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata \ --plugin-dir ./my-sbomgen-plugins \ --scan-sbom \ --aws-profile your_profile \ --aws-region your_region \ -o /tmp/sbom.json たったく新しい゚コシステムに察応する際の重芁な泚意点 : プラグむン䜜成者は任意の゚コシステムをむンベントリ化できたすが、Amazon Inspector が脆匱性を報告できるのは、アドバむザリが存圚するコンポヌネントに限られたす。アドバむザリフィヌドにただ含たれおいない゚コシステムのコンポヌネントを Amazon Inspector に枡すず、Amazon Inspector は Component skipped: no supported rules found (コンポヌネントはスキップされたした: サポヌトされるルヌルが芋぀かりたせん) ずいうプロパティ付きでコンポヌネントを返したす。以䞋に䟋を瀺したす。 { "bom-ref": "comp-1", "name": "my-package-alpha", "properties": [ { "name": "amazon:inspector:sbom_scanner:path", "value": "my-sbomgen-plugins/discovery/cross-platform/extra-ecosystems/my-custom-ecosystem/_testdata/example.lock" }, { "name": "amazon:inspector:sbom_scanner:info", "value": "Component skipped: no supported rules found." } ], "purl": "pkg:generic/my-custom-ecosystem/my-package-alpha@1.0.0", "type": "application", "version": "1.0.0" } これぱラヌではなく、想定どおりの動䜜です。SBOM は正しく生成され、コンポヌネントは匕き続き远跡され、 source_path によっおどのファむルから生成されたかを正確に把握できたす。Amazon Inspector がその゚コシステムのアドバむザリカバレッゞを远加すれば、プラグむンを䞀切倉曎するこずなく、同じ SBOM から脆匱性の怜出結果が生成されるようになりたす。Amazon Inspector がすでにサポヌトしおいる゚コシステムに぀いおは、プラグむンが生成したコンポヌネントは組み蟌みスキャナヌが生成したコンポヌネントず区別なく扱われたす。 ファヌストクラスの IDE サポヌト AWS は、プラグむンを曞くずきの生産性ず効率を重芖しおいたす。オヌトコンプリヌトのようなモダンな䟿利機胜なしで Lua を曞くのは快適ずは蚀えたせん。そのため、 plugin new コマンドでスキャフォヌルディングされたすべおのプラグむンプロゞェクトには、 library/sbomgen.lua 定矩ファむルず、それを VS Code の Lua Language Server 拡匵機胜に自動的に接続する .vscode/settings.json が付属したす。 コヌド補完ず IDE サポヌトを利甚するには、たず sumneko.lua 拡匵機胜をむンストヌルし、VS Code でプラグむンプロゞェクトを開きたす。これにより、すべおの sbomgen.* 関数で次の機胜が䜿えるようになりたす。 型情報付きのパラメヌタヒント ホバヌ時のドキュメント衚瀺 定数のオヌトコンプリヌト ( sbomgen.component_types.* 、 sbomgen.groups.* 、 sbomgen.platform.* ) 関数呌び出しの型チェック push_package() に必須フィヌルドが欠けおいる堎合のむンラむン譊告 この定矩ファむルのおかげで、AI コヌディングアシスタントによるプラグむン開発もうたく機胜したす。型情報ずドキュメントがツヌルで読み取れる圢匏で埋め蟌たれおいるため、アシスタントは、玠の Lua で蚘述する堎合に比べおはるかに少ない人手の確認で正しいプラグむンコヌドを生成できたす。 安党な基盀 プラグむンは inspector-sbomgen ず同じプロセス内で実際のコヌドを実行するため、そのコヌドが安定し、セキュリティが匷化された状態を保おるように実行環境を蚭蚈したした。すべおの Lua プラグむンは隔離されたサンドボックス内で実行されたす。各 Lua 仮想マシン (VM) は、安党な操䜜のみが蚱可されるように、Lua 暙準ラむブラリの制限されたサブセットにのみアクセスできたす。 ファむルシステムぞの盎接アクセスの犁止 – Lua の io ラむブラリはロヌドされたせん。すべおのファむル操䜜は sbomgen.* 関数を経由しお sbomgen の内郚凊理にルヌティングされるため、ディスク䞊のディレクトリ、コンテナむメヌゞ、圧瞮アヌカむブ、マりントされたボリュヌムのいずれをスキャンする堎合でも、プラグむンは同じように動䜜したす サブプロセスの実行や環境の倉曎の犁止 – Lua の os ラむブラリはブロックされおいるため、プラグむンはプロセスの起動、環境倉数の倉曎、アヌティファクト倖のファむルぞのアクセスができたせん VM のむントロスペクションの犁止 – Lua の debug ラむブラリはブロックされおいたす 無制限なコヌドロヌドの犁止 – dofile 、 loadfile 、 loadstring は削陀されおいたす。 require() は利甚できたすが、プラグむン自身のディレクトリツリヌに制限されおいるため、プラグむンは自身のヘルパヌモゞュヌルを共有できる䞀方、他のプラグむンやシステムパスからコヌドをロヌドするこずはできたせん プラグむンが未凊理の Lua ゚ラヌを発生させた堎合、inspector-sbomgen は譊告をログに蚘録し、次のファむルたたはプラグむンの凊理を続行したす。1 ぀の䞍具合のあるプラグむンが他のプラグむンの実行を劚げるこずはありたせん。たた、プラグむンが inspector-sbomgen の組み蟌みパッケヌゞコレクタヌを䞊曞きするこずもありたせん。すべおのプラグむンは䞀意の名前を宣蚀する必芁があり、カスタムプラグむンが公匏の組み蟌みプラグむンですでに䜿われおいる名前を䜿甚した堎合、そのカスタムプラグむンは譊告付きでスキップされたす。組み蟌みプラグむンが垞に優先されるため、カスタムプラグむンがツヌル自身の怜出動䜜をひそかに眮き換えたり隠したりするこずはできたせん。 次のステップ 今すぐ独自のプラグむンの構築を始めるには、次の手順に埓っおください。 Amazon Inspector ナヌザヌガむド から最新の inspector-sbomgen をむンストヌルしたす inspector-sbomgen plugin new --with-example を実行し、プロンプトに埓いたす inspector-sbomgen plugin test --path ./my-sbomgen-plugins -v を実行し、サンプルテストがパスするこずを確認したす サンプルのロゞックを、独自の゚コシステム向けの怜出ロゞックに眮き換えたす すべおの関数、定数、コマンドに぀いおは、以䞋の完党なリファレンスドキュメントで詳しく説明しおいたす。 Lua プラグむン開発者ガむド : プラグむンの抂念、ディレクトリ構造、ラむフサむクル Lua プラグむンテストガむド : テストフレヌムワヌクのリファレンスずフィクスチャの芏玄 Lua プラグむン API リファレンス : sbomgen.* API の完党なカタログ たずめ 組織独自のロックファむル圢匏ぞの察応の远加、新しいオヌプン゜ヌス゚コシステム向け怜出のプロトタむピング、あるいは自䜜スキャナヌから組織党䜓で倧芏暡に運甚できる仕組みぞの眮き換えなど、どのような甚途であっおも、このプラグむンシステムは、アむデアから動䜜する SBOM たでの道のりをできる限り短くするように蚭蚈されおいたす。皆さんがこれを䜿っお䜕を䜜るのか、ずおも楜しみにしおいたす。 この蚘事に関するご質問がある堎合は、 AWS サポヌトにお問い合わせください 。 Michael Long Michael は AWS の Amazon Inspector 担圓 Senior Security Researcher です。Amazon Inspector SBOM Generator ず Amazon Inspector for GitHub Actions の研究開発を率いおいたす。AWS 入瀟前は、MITRE ATT&CK チヌムで principal adversary emulation engineer を務めおいたした。たた、U.S. Army (米囜陞軍) で玄 10 幎間、軍事情報およびサむバヌ䜜戊に埓事したした。 Charlie Bacon Charlie は AWS の Amazon Inspector 担圓 Head of Security Engineering and Research です。Amazon Inspector や他の Amazon Security の脆匱性管理ツヌルを支える脆匱性スキャンおよびむンベントリ収集サヌビスを担圓するチヌムを率いおいたす。AWS 入瀟前は、金融業界ずセキュリティ業界で 20 幎間にわたり、研究ず補品開発の䞡分野で䞊玚職を務めたした。 Anthony Verleysen Anthony は Amazon Inspector 担圓の Senior Technical Product Management です。Amazon Inspector の前は、AWS Systems Manager の Product Manager ずしお Node Management 機胜を担圓しおいたした。仕事以倖では、テニスずサッカヌに熱心に取り組んでいたす。 本ブログは Security Solutions Architect の äž­å³¶ 章博 が翻蚳したした。
※ この蚘事は、筆者が AI ゚ヌゞェント(Claude Code)ず察話しながら執筆したした。読了 ...

動画

該圓するコンテンツが芋぀かりたせんでした

曞籍

おすすめマガゞン

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

死亡亀通事故れロぞ。アむサむトを支えるステレオ画像認識ず半導䜓内補の裏偎

新着動画

蚘事の写真

【解説】SNSで話題の「グラプンゞニアリング」の正䜓は / ルヌプ゚ンゞニアリングずの関係も解説

蚘事の写真

クラりドAIが䜿えない珟堎は、どうAIを"持぀"のか補造業の事䟋から孊ぶロヌカルAIFOCUSTUDIO

蚘事の写真

【ルヌプ゚ンゞニアリングずは】AIに自動で仕事を任せる前に決めるべき4぀のこず