翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Inspector Dockerfile チェック
このセクションでは、Amazon Inspector SBOM Generator を使用して、セキュリティの脆弱性を引き起こす設定ミスがないかイメージをスキャンしDockerfiles、Dockerコンテナ化する方法について説明します。
Dockerfile Sbomgen チェックの使用
Dockerfile チェックは、 Dockerfile
または *.Dockerfile
という名前のファイルが検出されたとき、および Docker イメージがスキャンされたときに自動的に実行されます。
引--skip-scanners dockerfile
数を使用して Dockerfile チェックを無効にすることができます。Dockerfile チェックを OS やサードパーティパッケージなど、使用可能な任意のスキャナーと組み合わせることもできます。
Docker チェックコマンドの例
次のコマンド例は、Dockerfiles SBOMs と Docker コンテナイメージ、OS およびサードパーティパッケージの を生成する方法を示しています。
# generate SBOM only containing Docker checks for Dockerfiles in a local directory ./inspector-sbomgen directory --path ./project/ --scanners dockerfile # generate SBOM for container image will by default include Dockerfile checks ./inspector-sbomgen container --image image:tag # generate SBOM only containing Docker checks for specific Dockerfiles and Alpine, Debian, and Rhel OS packages in a local directory /inspector-sbomgen directory --path ./project/ --scanners dockerfile,dpkg,alpine-apk,rhel-rpm # generate SBOM only containing Docker checks for specific Dockerfiles in a local directory ./inspector-sbomgen directory --path ./project/ --skip-scanners dockerfile
ファイルコンポーネントの例
以下は、ファイルコンポーネントの Dockerfile 検出結果の例です。
{ "bom-ref": "comp-2", "name": "dockerfile:data/docker/Dockerfile", "properties": [ { "name": "amazon:inspector:sbom_scanner:dockerfile_finding:IN-DOCKER-001", "value": "affected_lines:27-27" } ], "type": "file" },
脆弱性レスポンスコンポーネントの例
以下は、脆弱性レスポンスコンポーネントの Dockerfile 検出結果の例です。
{ "advisories": [ { "url": "https://docs.docker.com/develop/develop-images/instructions/" } ], "affects": [ { "ref": "comp-2" } ], "analysis": { "state": "in_triage" }, "bom-ref": "vuln-13", "created": "2024-03-27T14:36:39Z", "description": "apt-get layer caching: Using apt-get update alone in a RUN statement causes caching issues and subsequent apt-get install instructions to fail.", "id": "IN-DOCKER-001", "ratings": [ { "method": "other", "severity": "info", "source": { "name": "AMAZON_INSPECTOR", "url": "https://aws.amazon.com/inspector/" } } ], "source": { "name": "AMAZON_INSPECTOR", "url": "https://aws.amazon.com/inspector/" }, "updated": "2024-03-27T14:36:39Z" },
注記
--scan-sbom
フラグSbomgenなしで を呼び出すと、未加工の Dockerfile の検出結果のみを表示できます。
サポートされている Dockerfile チェック
Sbomgen Dockerfile チェックは、以下でサポートされています。
-
Sudo バイナリパッケージ
-
Debian APTユーティリティ
-
ハードコードされたシークレット
-
ルートコンテナ
-
ランタイムの弱化コマンドフラグ
-
ランタイムの弱化環境変数
これらの各 Dockerfile チェックには対応する重要度評価があり、以下のトピックの上部に記載されています。
注記
以下のトピックで説明する推奨事項は、業界のベストプラクティスに基づいています。
Sudo バイナリパッケージ
注記
このチェックの重要度評価は情報 です。
Sudo バイナリパッケージは、予測不可能でシグナル転送動作があるためTTY、インストールまたは使用しないことをお勧めします。詳細については、Docker Docs ウェブサイトの「ユーザー
Debian APT ユーティリティ
注記
このチェックの重要度評価は高 です。
Debian APT ユーティリティを使用するためのベストプラクティスを次に示します。
キャッシュの問題を回避するための 1 つのRun
ステートメントでのapt-get
コマンドの組み合わせ
Docker コンテナ内の単一のRUNステートメントにapt-get
コマンドを組み合わせることをお勧めします。apt-get update
単独で を使用すると、キャッシュの問題とその後のapt-get install
手順が失敗します。詳細については、Docker Docs ウェブサイトの「apt-get
注記
Docker Dockerコンテナソフトウェアが古くなっている場合、記述されたキャッシュ動作がコンテナ内で発生することもあります。
APT コマンドラインユーティリティを非インタラクティブ方式で使用する
APT コマンドラインユーティリティをインタラクティブに使用することをお勧めします。APT コマンドラインユーティリティはエンドユーザーツールとして設計されており、その動作はバージョン間で変化します。詳細については、Debian ウェブサイトのスクリプトの使用状況と他のAPTツールとの違い
ハードコードされたシークレット
注記
このチェックの重要度評価は重大 です。
Dockerfile の機密情報はハードコードされたシークレットと見なされます。Sbomgen Docker ファイルチェックでは、次のハードコードされたシークレットを特定できます。
-
AWS アクセスキー IDs –
AKIAIOSFODNN7EXAMPLE
-
DockerHub 個人用アクセストークン –
dckr_pat_thisisa27charexample1234567
-
GitHub 個人用アクセストークン –
ghp_examplev61wY7Pj1YnotrealUoY123456789
-
GitLab 個人用アクセストークン –
glpat-12345example12345678
ルートコンテナ
注記
このチェックの重要度マーカーは情報 です。
ルート権限なしで Docker コンテナを実行することをお勧めします。ルート権限がないと実行できないコンテナ化されたワークロードの場合は、最小限の権限でプリンシパルを使用してアプリケーションを構築することをお勧めします。詳細については、Docker Docs ウェブサイトの「ユーザー
ランタイムの弱化環境変数
注記
このチェックの重要度評価は高 です。
いくつかのコマンドラインユーティリティまたはプログラミング言語ランタイムは、安全なデフォルトをバイパスすることをサポートしているため、安全でないメソッドで実行できます。
NODE_TLSREJECT__UNAUTHORIZED=0
を NODE_TLS_REJECT_UNAUTHORIZED
に設定してNode.jsプロセスを実行すると0
、TLS証明書の検証は無効になります。詳細については、Node.js ウェブサイトのNODE「_TLSREJECT_UNAUTHORIZED=0
GIT_SSL_NO_VERIFY=*
git コマンドラインプロセスが GIT_SSL_NO_VERIFY
set で実行されると、Git はTLS証明書の検証をスキップします。詳細については、Git ウェブサイトの「環境変数
PIP_TRUSTED_HOST=*
pip コマンドラインプロセスが PIP_TRUSTED_HOST
set Python で実行されると、Pip は指定されたドメインのTLS証明書の検証をスキップします。詳細については、Pip ウェブサイトの「--trusted-host
NPM_CONFIG_STRICT_SSL=false
Node.js npm コマンドラインプロセスが false にNPM_CONFIG_STRICT_SSL
設定された状態で実行されると、Node Package Manager (npm) ユーティリティはTLS証明書を検証せずにNPMレジストリに接続します。詳細については、npm Docs ウェブサイトの「strict-ssl
ランタイムの弱化コマンドフラグ
注記
このチェックの重要度評価は高 です。
ランタイムの弱体化環境変数と同様に、いくつかのコマンドラインユーティリティまたはプログラミング言語ランタイムは、安全なデフォルトをバイパスすることをサポートしているため、安全でないメソッドで実行できます。
npm ––strict-ssl=false
Node.js npm コマンドラインプロセスが --strict-ssl=false
フラグで実行されると、Node Package Manager (npm) ユーティリティはTLS証明書を検証せずにNPMレジストリに接続します。詳細については、npm Docs ウェブサイトの「strict-ssl
apk ––allow-untrusted
Alpine Package Keeper ユーティリティが --allow-untrusted
フラグで実行されると、 apk
は、 または信頼できない署名のないパッケージをインストールします。詳細については、Apline ウェブサイトの次のリポジトリ
apt-get ––allow-unauthenticated
Debian apt-get
パッケージユーティリティが --allow-unauthenticated
フラグで実行されている場合、 apt-get
はパッケージの有効性をチェックしません。詳細については、Debian ウェブサイトのAPT「-Get(8)
pip ––trusted-host
Python pip ユーティリティを --trusted-host
フラグで実行すると、指定されたホスト名はTLS証明書の検証をバイパスします。詳細については、Pip ウェブサイトの「--trusted-host
rpm ––nodigest, ––nosignature, ––noverify, ––nofiledigest
RPMベースのパッケージマネージャーを --nodigest
、--nosignature
、、および --nofiledigest
フラグでrpm
実行する--noverify
と、RPMパッケージマネージャーはパッケージのインストール時にパッケージヘッダー、署名、またはファイルを検証しません。詳細については、 RPMウェブサイトの次のRPMマニュアルページ
yum-config-manager ––setopt=sslverify false
RPMベースのパッケージマネージャーが --setopt=sslverify
フラグを false に設定してyum-config-manager
実行されると、YUMパッケージマネージャーはTLS証明書を検証しません。詳細については、Man7 ウェブサイトの次のYUMマニュアルページ
yum ––nogpgcheck
RPMベースのパッケージマネージャーを --nogpgcheck
フラグでyum
実行すると、YUMパッケージマネージャーはパッケージGPGの署名の確認をスキップします。詳細については、Man7 ウェブサイトの「yum(8)
curl ––insecure, curl –k
curl
が --insecure
または -k
フラグで実行されると、TLS証明書の検証は無効になります。デフォルトでは、 curl
が行うすべての安全な接続は、転送が行われる前に安全であることが検証されます。このオプションでは、検証ステップをcurl
スキップし、チェックせずに続行します。詳細については、Curl ウェブサイトの次の Curl 手動ページ
wget ––no-check-certificate
wget
フラグを使用して を実行すると--no-check-certificate
、TLS証明書の検証は無効になります。詳細については、 GNUウェブサイトの次の Wget 手動ページ