コンテナイメージのスキャン機能の概要Summary<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 機能の概要 trivy ツールを使用してイメージ OS パッケージを検出し、イメージ OS パッケージをそのコンテナーにマップします。イメージコマンドの詳細に基づいて、イメージに適した CI クラスを特定します。コンテナごとにアプリケーションレコードを作成し、コンテナ環境変数を使用してアプリケーションレコードを拡張します。既存の Docker および Kubernetes パターンは、コンテナ環境変数を収集するように拡張されています。 前提条件 ファミリーバージョンは Utah 以降である必要があります。Tokyo またはそれ以前のファミリーバージョンでは、この機能はサポートされていません。Kubernetes または Docker 検出を実行して、コンテナイメージを取り込みます。イメージスキャン機能用の MID サーバー構成。 MID サーバーの機能専用の MID サーバーを使用している場合は、「Scan Container Images」機能のみを追加します。共通の MID サーバーを使用している場合は、すべての機能を追加します。 すべての機能を備えた MID サーバーには、イメージスキャンが正しく機能するように、すべてのイメージスキャン機能の前提条件が必要です。 イメージスキャン機能を有効にします。 「sn_itom_pattern.container_image_scan」システムプロパティ値を true に設定しますデフォルト値は false です。 Trivy ツールは Linux MID サーバーにインストールする必要があります。 Trivyのインストール方法については、以下のTrivy文書を参照してください。 https://trivy.dev/docs/latest/getting-started/installation/ コンテンツ 「コンテナイメージのスキャン」 スケジュール済みジョブが定期的に実行され、次のことが行われます。 テーブルsn_itom_pattern_container_image_scan_status内の cmdb_ci_oslv_image CI ごとに新しいレコードを作成します。イメージスキャンステータスでのレコードの追加は、システムプロパティ「sn_itom_pattern.container_image_batch_size」を使用して構成できますsn_itom_pattern_container_image_scan_status 内の scan_status が「none」のレコードに対してコンテナイメージのスキャンパターンをトリガーし、scan_status を「none」から「in_progress」に更新します。 各バッチでスキャンできるイメージの数は、システムプロパティ「sn_itom_pattern.container_image_batch_size」を使用して構成でき、デフォルト値は 10 ですコンテナイメージのスキャンをトリガーします。MID は、「Scan Container Images」と呼ばれる新機能に基づいて選択されます。Trivy は Linux でのみ実行されるため、MID の選択を Linux ホスト(「Host Os」が「Linux」のホスト)に制限する必要があります。「Scan Container Image」パターンは Trivy ツールを実行し、インストールされているパッケージとイメージの追加情報 (アーキテクチャ、os、os_family、os_version、コマンド) を含むペイロードを返します。ペイロードがインスタンスに到着すると、cmdb_ci_docker_image のフィールドが更新され、イメージのスキャンステータスが in_progress から scanned / error に更新されます。追加のテーブル [sn_itom_pattern_container_image_os_packages] も、イメージに関連付けられた OS パッケージの説明で更新されます。 注意:デフォルトでは、「コンテナイメージのスキャン」 スケジュール済みジョブ は 1 分ごとに実行されます。「Scan Container Image パターンが失敗し、「TOOMANYREQUESTS: You have reached your pull rate limit」を含むエラーとメッセージが表示された場合は、次の操作を行います。 コンテナイメージのスキャン スケジュール済みジョブの頻度をより長い間隔(6時間以上など、最適な値)に変更します。イメージスキャンが TOOMANYREQUESTS エラーで失敗した sn_itom_pattern_container_image_scan_status の scan_status を「error」から「none」に変更します。scan_status が「error」から「none」に変更されると、スケジュール済みジョブはこのイメージを選択し、「コンテナイメージのスキャン」パターンをトリガーします。 この機能では、次の前後スクリプトを コンテナイメージのスキャン パターンフローとともに使用します。 プリセンサースクリプト: スキャンされたコンテナイメージを処理: ソフトウェアパッケージに関する情報を収集し、現在のイメージに関連付けられているパッケージの情報を sn_itom_pattern_container_image_os_packages テーブルに挿入します。パターンのtrivyコマンドがエラーを返した場合、エラーメッセージを sn_itom_pattern_container_image_scan_statusテーブルのメッセージとして更新します。 ポストセンサースクリプト: UpdateImageCIClass: イメージコマンドの詳細に基づいてsn_itom_pattern_container_image_scan_statusのci_classフィールドを更新します。既存の ADM ロジックを使用して、プロセスコマンドをアプリケーションクラスにマップします。 イメージ OS パッケージをコンテナに更新: 指定されたイメージを使用するすべてのコンテナを処理します。コンテナごとに、インストール済みパッケージとアプリケーション CI を追加しますsn_itom_pattern_container_image_os_packagesに基づいてこのイメージのソフトウェアパッケージのマップを準備します各コンテナにパッケージを適用しますアプリケーションクラスが検出された場合は、アプリケーション CI も作成し、関係の runs::runs を使用してそれをホスティングコンテナーに関連付けます コンテナイメージスキャンステータスを更新: パターンでの Trivy コマンドの実行結果に基づいて、イメージのスキャンステータスを in_progress から scanned / error に更新します。 注意: 1.認証を必要としないコンテナイメージのみがサポートされています。 2.Trivyコマンドエラーは、 sn_itom_pattern_container_image_scan_statusのメッセージ列に入力されます。 3.EnrichMSSQLcontainer - MSSQL レコードは、コンテナ環境変数を使用して拡張されます。 「コンテナ内のインストール済みパッケージとアプリケーション CI の更新」スケジュール済みジョブは定期的に実行され、次のことを行います 新しく作成されたコンテナのバッチを処理します。指定されたイメージを使用するすべてのコンテナを処理します。コンテナごとに、コンテナイメージスキャンの結果に基づいて、インストール済みパッケージとアプリケーション CI を追加しますsn_itom_pattern_container_image_os_packagesに基づいてこのイメージのソフトウェアパッケージのマップを準備します各コンテナにパッケージを適用します テーブル : cmdb_container_environment_variables拡張:cmdb_key_valueフィールド: コンテナ : 参照 [cmdb_ci_oslv_container]、32キー:文字列、255値:文字列、255 sn_itom_pattern_container_enrich_scripts 拡張:sys_metadataフィールド: Active: Boolean、デフォルトは true Ci_type: String、255 Order: Integer、デフォルトは 0Script: Script (Server side)– デフォルトは、予想される入力と出力を説明するコメントです sn_itom_pattern_container_image_os_packages フィールド: Image: Reference、cmdb_ci_oslv_image、255Package Name: String、255Package Version: String、255 Package Maintainer: String、255 sn_itom_pattern_container_image_scan_status フィールド: last_scan: Time fieldscan_status: Choice list None (empty value)In ProgressScanned Error Skipped Ci_class: String、512 charactersImage: Reference to cmdb_ci_oslv_imageMessage: String、1000 charactersDiscovery status: Reference、discovery_status 結果 コンテナイメージのスキャンステータス sn_itom_pattern_container_image_scan_status テーブルに移動して、イメージスキャンステータスを表示します。 コンテナ OS パッケージ sn_itom_pattern_container_image_os_packages テーブルに移動して、コンテナイメージ OS パッケージを表示します。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } この機能は SR - ITOM - ディスカバリーとサービスマッピング - 202302 で利用できます Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } トラブルシューティング コンテナイメージのスキャンパターンが TOOMANYREQUESTS で失敗する 問題の重大性と頻度、および修正を試みるコストとリスクを慎重に検討した結果、現在および近い将来のリリースではこの問題に対処しないことが決定されました。軽々しく決断するわけではなく、ご不便をおかけして申し訳ございません。 この問題は制限に関連しており、Docker Hub サブスクリプションによって異なる場合があります。したがって、アドミニストレーターは、お客様のサブスクリプションに基づいて、スケジュールジョブ頻度とシステムプロパティ「sn_itom_pattern.container_image_batch_size」の値を変更する必要があります。 KB1228017: Scan container image pattern fails with "TOOMANYREQUESTS"