レジストリスキャンの設定

レジストリスキャンには、SUSE® Security Allinone または Controller コンテナがホスト/ノードにデプロイされている必要があります。インストール/デプロイメント セクションを参照して、SUSE® Security コンテナをデプロイする方法を確認してください。マネージャーにログインした後、SUSE® Security コンソールからレジストリスキャンを設定してください。

さらに、SUSE® Security スキャナコンテナがデプロイされ、Allinone または Controller に接続するように設定されていることを確認してください。4.0 以降では、neuvector/scanner コンテナは allinone または controller とは別にデプロイする必要があります。

レジストリイメージスキャンはスキャナによって実行され、イメージはメモリにプルされて展開されます。500MB を超える展開されたイメージサイズが予想される場合は、スキャナのメモリを 1.5GB 以上に増やして、スキャナに容量と余裕を提供することを検討してください。

レジストリスキャンのパフォーマンスとスケーラビリティを向上させるために、複数のスキャナポッドを異なるノードにデプロイして、スキャンタスクを複数のスキャナに分散させることができます。詳細については、複数の並列スキャナ セクションを参照してください。

マルチクラスター(フェデレーテッド)環境では、プライマリ(マスター)クラスターがフェデレーテッドレジストリとして指定されたレジストリ/リポジトリをスキャンできます。これらのレジストリからのスキャン結果は、すべての管理(リモート)クラスターに同期されます。これにより、管理クラスターコンソールでスキャン結果を表示できるようになり、Admission Controlのルールで結果を使用できるようになります。レジストリは各クラスターによってスキャンされるのではなく、一度だけスキャンされる必要があり、CPU/メモリおよびネットワーク帯域幅の使用を削減します。詳細については、マルチクラスター セクションを参照してください。

レジストリスキャンの設定

スキャンするレジストリとリポジトリを設定するには、SUSE® Security コンソールの資産 → レジストリメニューに移動してください。スキャンするレジストリを追加または編集します。フィルターを使用して、スキャンするリポジトリまたはイメージのサブセットを定義します。レジストリがプロキシを通じてアクセスを必要とする場合、設定 → 設定でこれを設定できます。

レジストリ

レジストリは、スケジュールに従ってスキャンされます。これは設定可能です。デフォルトでは、新しいまたは更新されたイメージのみがスキャンされます。CVEデータベースが更新されるたびにすべての適用可能なイメージを再スキャンしたい場合は、レジストリの設定時に「CVE DB 更新後に再スキャン」ボタンを選択してください。レイヤースキャンを選択すると、イメージの各階層ごとの脆弱性を表示できます(注:レイヤースキャンは完了するまでに時間がかかり、より多くのリソースを消費する可能性があります)。

スキャンが完了すると、その下に結果が表示されます。リポジトリ/タグをクリックして脆弱性を確認し、脆弱性をクリックして詳細情報を表示します。CSVファイルでレポートをダウンロードするか、イベントログで結果を確認することもできます。

レイヤー

NeuVectorは、"すべてのスキャンされたイメージを表示"オプションを提供します。ユーザーは特定のイメージを確認するためにレジストリを調べる必要はありません。代わりに、ユーザーは最後の行をクリックしてすべてのスキャンされたイメージを一覧表示できます。

レジストリ

ユーザーはレジストリページにアクセスし、コンテナページのハイパーリンクから特定のイメージを開くこともできます。イメージ名がクリックできない場合、それはイメージがまだスキャンされていないことを意味します。

コンテナ

スキャン結果には、レジストリ/リポジトリの設定時にこのオプションが選択されていた場合、イメージ階層ごとの脆弱性とコンプライアンスチェックの結果が含まれます。イメージのスキャン結果を表示する際にコンプライアンスタブをクリックして、コンプライアンスチェックを確認します。

スキャンは、イメージ内のすべてのモジュール(すなわち、インベントリ)を発見し、一覧表示します。それはまた、モジュールごとの脆弱性リスクを要約し、各モジュールのすべての脆弱性を一覧表示します。

モジュール

スキャンは、Native Docker、Amazon ECR、Redhat/Openshift、jFrog、Microsoft ACR、Sonatype Nexus、Harbor、Google CloudなどのパブリックおよびプライベートのDockerレジストリに基づく画像に対してサポートされています。 画像のスキャンレポートは、画像内のさまざまなパッケージとバイナリの脆弱性ステータスで構成されています。スキャンレポートの簡単な要約は、ポリシー → のレスポンスルール設定を使用してWebhook経由で送信するか、設定 → のSyslogサーバーを構成してSyslog経由で送信できます。結果はイベントログでも表示できます。

少なくとも1つのリポジトリフィルタが必要です(空白のままにすることはできません)。

リポジトリフィルターの例

フィルタ

  1. すべてのイメージタグをスキャンするには、フィルターを * または *:* として追加します。これは、パブリックDockerレジストリを除くすべてのレジストリタイプで機能します。

  2. リポジトリは、パブリックDockerレジストリの場合、組織がnilであればフルネームである必要があります。または、上記のようにリポジトリの前にライブラリを追加します。

  3. 仮想リポジトリを作成し、すべてのローカルリポジトリを追加して、サブドメインDockerアクセス方法を使用してJFrogレジストリのすべてのタグをスキャンします。

  4. フィルターには正規表現を使用できます。例えば、alpine:3.[8|9].* は、Docker Hub上のすべての3.8.xおよび3.9.xのイメージとタグをスキャンします。

レジストリスキャンオプション

  • 階層スキャン:

    • 各イメージ階層の脆弱性スキャン結果を個別に提供します。

    • 階層内で実行されたコマンドや追加されたパッケージに関する情報を提供します。

    • 各階層のイメージサイズ

  • 自動スキャン:

    • 自動スキャンはOpenShift imagestream統合でのみサポートされています。適切なロールバインディングを事前に設定する必要があります。

    • 自動スキャンが有効になっている場合、イメージがレジストリにプッシュされると、即座にイメージスキャンがスケジュールされます。

  • 定期スキャン:

    • 定期的にスキャンするために定期スキャンを有効にしてください。

    • スキャン間隔は5分から7日ごとに設定できます。

    • 多くのAdmission Controlチェックがイメージスキャンの結果に依存しているため、定期スキャンを有効にすることで、Admission Controlが最新のイメージ情報を持つことが確実になります。

    • SUSE® Securityは、前回のスキャンから新しい/変更されたレジストリ内のイメージをスキャンします。

  • CVE DBの更新後に再スキャン

    • 脆弱性データベースが更新された後、すべてのイメージを再スキャンするためにこのオプションを有効にしてください。

レジストリのためのプロキシサーバーの設定

レジストリスキャンのためのプロキシ設定を設定するには、設定 → 設定に移動してください。

ネイティブDockerレジストリ(QuayおよびHarborも含む)

ネイティブDockerレジストリを追加

  • タイプとしてDockerレジストリを選択

  • レジストリにユニークな名前を付ける

  • ポートを含むレジストリURLを入力

  • レジストリによって要求される場合は、ユーザー名とパスワードを提供してください。

  • 以下の形式でフィルターとしてリポジトリを追加

    • 組織/リポジトリ:タグ

    • リポジトリは、先頭文字列を持つワイルドカードを使用できます

    • 例: neuvector/all*:2*

ユーザー名/パスワードを使用してプライベートDockerレジストリを追加し、レイヤースキャンを有効にし、30分ごとの定期スキャンを有効にし、すべてのリポジトリからすべてのタグをスキャンするためのフィルターとして*を使用します。

docker

ユーザー名/パスワードなしでスキャンするためのパブリックDockerレジストリを追加し、ワイルドカードを持つ2つのリポジトリ、レイヤーのスキャンを有効にし、定期スキャンを有効にします。

docker3

ユーザー名/パスワードを使用してスキャンするためのパブリックDockerレジストリを追加し、ワイルドカードリポジトリ、レイヤーのスキャンを有効にし、定期スキャンを有効にします。

docker4

Quayレジストリ
  • QuayレジストリのトップレベルURLを入力してください。パスにディレクトリを入力しないでください。

  • Quayサーバー/アカウントで暗号化されたパスワードを生成し、ここでこれらの認証情報を使用する必要があります。 次に、上記のようにフィルターを渡します。

4 1-quay

Dockerレジストリのスキャンを開始します

  • スキャンするレジストリを選択します

  • スキャンするためにスタートボタンをクリックします

  • ステータスがスキャン中からアイドルに変わるまで待ちます

    • スキャン時間はリポジトリのサイズによって異なります

scandocker

スキャン結果を表示します

  • 画像ペインから画像をクリックして、その画像のスキャン結果を表示します。

  • スキャン結果にアクセスして、画像の脆弱性ステータスを確認します。

  • 必要に応じて、スキャン結果をダウンロードするにはダウンロードボタンをクリックしてください。

  • CVEの詳細と画像の間にマウスを移動させると、要約に戻ります。

選択したレジストリのスキャンされた画像を表示しています。

スキャン済み

画像のレイヤースキャン結果を示す例で、各レイヤーの脆弱性、レイヤーサイズ、および各レイヤーで実行されたコマンドが表示されます。さらに、画像のコンプライアンステスト結果を表示するコンプライアンスタブがあります。

レイヤード

Amazon ECRレジストリ

Amazon ECRレジストリを追加

  • タイプとしてAmazonレジストリを選択

  • レジストリにユニークな名前を付ける

  • レジストリURLは他の情報と共に自動的に見つかります。

  • レジストリのために以下の情報を提供してください。上記のAmazonリンクを参照して、以下の情報を取得してください。

    • レジストリID

    • 地域

    • アクセスキーID

    • シークレットアクセスキー

  • 以下の形式でフィルターとしてリポジトリを追加してください。

    • 組織/リポジトリ:タグ

    • リポジトリは、先頭文字列を持つワイルドカードを使用できます

    • 例: neuvector/all*:2*

    • そのようなイメージがレジストリに存在する場合、組織を空欄にできます。

    • * ですべての画像タグをスキャンします。

aws

Red Hatレジストリ

Red Hatレジストリを追加

  • タイプとしてRed Hatレジストリを選択

  • レジストリにユニークな名前を付ける

  • レジストリURLを入力してください https://registry.connect.redhat.com/

  • レジストリ管理に使用するアカウントのユーザー名とパスワードを提供してください

  • 以下の形式でフィルターとしてリポジトリを追加してください。

    • 組織/リポジトリ:タグ

    • リポジトリは、先頭文字列を持つワイルドカードを使用できます

    • 例: neuvector/all*:2*

    • * ですべての画像タグをスキャンします。

redhat

OpenShiftレジストリ

ユーザー名とパスワードでOpenShiftレジストリを追加

  • タイプとしてOpenShiftレジストリを選択

  • レジストリにユニークな名前を付ける

  • レジストリURLを入力してください(デフォルトと異なる場合はOpenShiftネットワークで"oc get is"コマンドの出力から取得してください)

    • デフォルトのレジストリURL https://docker-registry.default.svc:5000/

  • レジストリ管理に使用するアカウントのユーザー名とパスワードを提供してください

  • 以下の形式でフィルターとしてリポジトリを追加してください。

    • 組織/リポジトリ:タグ

    • 例: openshift/htt*:*

    • * ですべての画像タグをスキャンします。

  • 自動スキャンを有効にして、OpenShiftイメージストリームでイメージが更新されるとすぐにスキャンを開始します。

openshift

トークンでOpenShiftレジストリを追加

  • タイプとしてOpenShiftレジストリを選択

  • レジストリにユニークな名前を付ける

  • レジストリURLを入力してください(デフォルトと異なる場合はOpenShiftネットワークで"oc get is"コマンドの出力から取得してください)

    • デフォルトのレジストリURL https://docker-registry.default.svc:5000/

  • すべてのネームスペースにアクセスできるサービスアカウントのトークンを提供してください

    • サービスアカウントを作成し、トークンを取得するための下記の注意事項を確認してください。

    • サービスアカウントを作成

      • ocプロジェクトデフォルト

      • oc create sa nvqa

      • oc get sa

    • すべてのレジストリを読み取るためにサービスアカウントにクラスター管理者ロールを割り当てます

      • oc adm policy add-cluster-role-to-user cluster-admin system:serviceaccount:default:nvqa

    • サービスアカウントのトークンを取得します

      • oc sa get-token nvqa

  • 以下の形式でフィルターとしてリポジトリを追加してください。

    • 組織/リポジトリ:タグ

    • 例: openshift/htt*:*

    • * ですべての画像タグをスキャンします。

  • 自動スキャンを有効にして、OpenShiftイメージストリーム上でイメージが更新されるとすぐにスキャンを開始します。

openshift

OpenShift 3.7レジストリの安定性の問題

OpenShift 3.7では、コンテナイメージのメタデータを取得またはイメージをダウンロードするためのAPI呼び出しがランダムに失敗することがあります。異なるスキャン実行でランダムなイメージでも失敗することがあります。このような場合、不完全なイメージリストが表示されたり、いくつかのイメージでスキャンが失敗することがあります。この場合、リポジトリを再スキャンできます。

JFrog Artifactory

JFrog Artifactoryレジストリを追加します(Dockerアクセス方式は-- リポジトリパス)。JFrog管理ページの管理者用→ HTTP設定に、Dockerアクセス方式としてリポジトリパスが表示されます。

jfrog

JFrog Artifactoryレジストリを追加します(Dockerアクセス方法 — リポジトリパス)

  • タイプとしてJFrog Artifactoryを選択します

  • レジストリに一意の名前を付けます

  • レジストリによって必要な場合は、ユーザー名とパスワードを提供します

  • 以下の形式でリポジトリをフィルターとして追加してください

    • 組織/リポジトリ:タグ

    • リポジトリまたはタグの末尾にはワイルドカードを使用できます。例:abc/*、abc/n*

    • リポジトリのすべてのタグをスキャンするには、例えばalpineを使用します:alpine:*

    • ワイルドカードの前には、完全な名前、パス、または開始文字列が必要です

    • * すべてのタグをスキャンするには

JFrog Artifactoryレジストリを追加します(Dockerアクセス方法—​サブドメイン)

JFrog管理ページの管理者用→ HTTP設定で、Dockerアクセス方式としてサブドメインが表示されます。

artifactory

JFrog Artifactoryレジストリを追加します(Dockerアクセス方法—​サブドメイン)

  • タイプとしてJFrog Artifactoryを選択します

  • レジストリに一意の名前を付けます

  • ポートを含むレジストリのURLを入力します。例えば http://10.1.7.122:8081/

  • JFrog Dockerアクセス方法としてサブドメインを選択してください

  • レジストリによって必要な場合は、ユーザー名とパスワードを提供します

  • 以下の形式でリポジトリをフィルターとして追加してください

    • サブドメイン/リポジトリ:タグ

    • リポジトリまたはタグの末尾にはワイルドカードを使用できます。例:abc/*、abc/n*

    • リポジトリのすべてのタグをスキャンするには、例えばalpineを使用します:alpine:*

    • ワイルドカードの前には、完全な名前、パス、または開始文字列が必要です

    • * すべてのサブドメインからすべてのタグをスキャンするには

仮想リポジトリを作成し、すべてのローカルおよびリモートリポジトリを追加します。この仮想リポジトリをフィルターセクションに指定して、ローカルおよびリモートリポジトリからすべてのタグをスキャンします。

docker-localサブドメインからイメージをスキャンするために、サブドメインベースのJFrogレジストリを追加します。

local

すべてのサブドメインからすべてのタグをスキャンするために、サブドメインベースのJFrogレジストリを追加します。

all

JFrog Artifactoryレジストリを追加します(Dockerアクセス方法—​ポート)。

JFrog管理ページ管理者→HTTP設定にdockerアクセス方法 - ポートが表示されます。

jfrogport

JFrog管理ページ管理者→ローカルリポジトリ→docker-localリポジトリ→ 詳細 - リポジトリのURLとレジストリポート8181を表示。

jfrogport

JFrog管理ページ管理者→ローカルリポジトリ→guoリポジトリ→ 詳細 - リポジトリのURLとレジストリポート8182を表示。

jfrogport

  • タイプとしてJFrog Artifactoryを選択します。

  • レジストリに一意の名前を付けます。

  • ポートを含むレジストリのURLを入力します。例えば http://10.1.7.122:8181/

    • すべてのレジストリ名にはユニークなポートがあります。

  • JFrog Dockerアクセス方法としてポートを選択してください。

  • レジストリによって必要な場合は、ユーザー名とパスワードを提供します。

  • 以下の形式でリポジトリをフィルターとして追加してください。

    • 組織/リポジトリ:タグ。

    • リポジトリまたはタグの末尾にはワイルドカードを使用できます。例えば、abc/、abc/n

    • リポジトリのすべてのタグをスキャンするには、例えばalpineを使用してalpine:*を使用します。

    • ワイルドカードの前には、完全な名前、パス、または開始文字列が必要です。

    • * すべてのタグをスキャンするために。

ポート8181でレジストリdocker-localのポートアクセス方法としてJFrogレジストリを追加しています。

jfrogport

ポート8182でレジストリのポートアクセス方法としてJFrogレジストリを追加しています。

jfrogport

すべてのローカルレジストリが追加されたポート8188の仮想レジストリのポートアクセス方法としてJFrogレジストリを追加しています。

jfrogport

docker-localレジストリのスキャン結果を表示しています。

jfrogport

SaaS JFrog Artifactoryレジストリを追加します(Dockerアクセス方法 — ポート)。

タイプとしてJFrog Artifactoryを選択します

  • レジストリに一意の名前を付けます

  • レジストリのURLを入力してください。例えば https://jfrogtraining-docker-nv-virtual.jfrog.io

  • JFrog Dockerアクセス方法としてポートを選択してください

  • レジストリによって必要な場合は、ユーザー名とパスワードを提供します

  • 以下の形式でリポジトリをフィルターとして追加してください

    • 組織/リポジトリ:タグ

    • * ですべてのリポジトリのすべてのタグをスキャンします

jfrogsaas

JFrog Artifactoryレジストリのスキャンを開始します

  • スキャンするレジストリを選択します

  • スキャンするためにスタートボタンをクリックします

  • ステータスがスキャン中からアイドルに変わるまで待ってください

    • スキャン時間はリポジトリのサイズによって異なります

JFrogレジストリを使用したNeuVectorレジストリのスキャン

サブドメインモードでJFrogレジストリを使用したNeuVectorレジストリのスキャンでは、サブドメインは通常JFrogレジストリURLのプレフィックスです。

標準JFrogサブドメインの例

JFrogレジストリURL: https://mysubdomain.myhost.com

  • mysubdomain: サブドメイン

  • myhost.com:JFrogレジストリホスト名

レジストリフィルターの例: mysubdomain/docker-service-broker-tmp-local/devop/test/joe/*

JFrogが調整されたサブドメインを使用する場合

レジストリURLで修正されたサブドメインを使用する場合。

JFrogレジストリURL: https://artifact-mysubdomain.myhost.com

  • artifact-mysubdomain: レジストリURLでのみ使用される修正されたサブドメイン

  • mysubdomain: JFrogサーバーの実際のサブドメイン

  • myhost.com:JFrogレジストリホスト名

レジストリフィルターの例: myrepo/docker-service-broker-tmp-local/devop/test/joe/*

NeuVectorは以前これらの環境をサポートしていました。しかし、NeuVectorは真のサブドメイン値がURLから来ているのかフィルターから来ているのかを判断できないため、新しいJFrogサーバーのバージョンにアップグレードした後、サポートが壊れました(例えば、artifact-mysubdomainとmysubdomain)。

必要な修正

サブドメインがJFrogレジストリサーバーURLのプレフィックスでない場合、この形式を使用してレジストリフィルターを構成する必要があります:

JFrogレジストリURL: https://artifact-mysubdomain.myhost.com

レジストリフィルター: <mysubdomain>/docker-service-broker-tmp-local/devop/test/joe/*

必要な形式: <actual-subdomain>/…​

この形式でフィルターを指定することにより、NeuVectorはサブドメインモードでJFrogサーバーとの通信に使用される実際のサブドメインを正しく特定できます。

Googleコンテナレジストリ

プロジェクトのためにCloud Resource Manager APIを有効にする

Google Cloud Platform→プロジェクトを選択→APIとサービス→APIとサービスを有効にする→検索 “Cloud Resource Manager API”→APIを有効にする https://console.cloud.google.com/apis/library?project=nvtest-219600&q=Cloud%20Resource%20Manager%20API (プロジェクト名を変更)

gcp

コンテナサービスアカウントのキーを作成する

Google Cloud Platform→IAM→サービスアカウント→コンテナレジストリ→キーを作成(アクション)

gcpiam

jsonファイルをクライアントマシンにコピーする

SUSE® Security GUIからGoogleコンテナレジストリを追加する

  • タイプとしてGoogleレジストリを選択する

  • レジストリにユニークな名前を付ける

  • レジストリURLを入力してください。サンプル https://gcr.io/ (これはus.gcr.io、eu.gcr.ioなどでも可能です)

  • 上記でキャプチャしたjsonファイルのすべての内容をJSONキーに貼り付ける。

  • 以下の形式でフィルターとしてリポジトリを追加

    • プロジェクトID/リポジトリ:タグ

    • 例 nvtestid-1/neuvector*:*

    • * ですべての画像タグをスキャンします。

gcpscan

Googleコンテナレジストリのスキャンを開始する

  • スキャンするレジストリを選択します

  • スキャンするためにスタートボタンをクリックします

  • ステータスがスキャン中からアイドルに変わるまで待ってください

    • スキャン時間はリポジトリのサイズによって異なります

Azureコンテナレジストリ

以下に示すようにAzureコンテナのユーザー名とパスワードを取得する

Azureコンテナレジストリ → ユーザー→ アクセスキー→パスワード

コンテナレジストリアクセスのためのAzureポータルのユーザー名とパスワードを表示

azure

SUSE® Security GUIからAzure Container Registryを追加します

  • タイプとしてAzureレジストリを選択します

  • レジストリにユニークな名前を付ける

  • レジストリURLを入力してください。サンプル`\https://neuvector.azure.io`(Azureポータルから取得)

    • コンテナレジストリ→ユーザー→概要→ログインサーバー

  • ユーザー名とパスワードを追加します。

    • Azureコンテナレジストリ → ユーザー→ アクセスキー→パスワード

  • 以下の形式でフィルターとしてリポジトリを追加

    • リポジトリ:タグ

    • 例 alpine:*

    • * ですべての画像タグをスキャンします。

AzureコンテナレジストリのためのAzureポータルログインサーバーを表示しています

azure

すべてのタグをスキャンするためにAzureコンテナレジストリを追加しています

azureadd

Azure Container Registryのスキャンを開始します

  • スキャンするレジストリを選択します

  • スキャンするためにスタートボタンをクリックします

  • ステータスがスキャン中からアイドルに変わるまで待ってください

    • スキャン時間はリポジトリのサイズによって異なります

Sonatype Nexus Dockerレジストリ

Sonatype Nexus Dockerレジストリを追加します

  • タイプとしてSonatype Nexusを選択します

  • レジストリにユニークな名前を付けてください。

  • ポートを含むレジストリURLを入力してください。

  • レジストリによって要求される場合は、ユーザー名とパスワードを提供してください。

  • 以下の形式でフィルターとしてリポジトリを追加してください。

    • 組織/リポジトリ:タグ

    • リポジトリは、先頭文字列を持つワイルドカードを使用できます。

    • 例: neuvector/all*:2*

    • *ですべてのイメージタグをスキャンします。

スキャンのためにユーザー名/パスワードとリポジトリ*:*を持つSonatype Nexus Dockerレジストリを追加しています。

sonatype

Sonatype Nexus Dockerレジストリのスキャンを開始します

  • スキャンするレジストリを選択します

  • スキャンするためにスタートボタンをクリックします

  • ステータスがスキャン中からアイドルに変わるまで待ちます

    • スキャン時間はリポジトリのサイズによって異なります

Gitlab Container Registry

サンプルGitLab環境設定

sudo docker run --detach \
  --hostname gitlab \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://10.1.7.73:9096'; gitlab_rails['lfs_enabled'] = true;" \
  --publish 10.1.7.73:9095:9095 --publish 10.1.7.73:9096:9096 --publish 10.1.7.73:6222:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
External_URL:  http://10.1.7.73:9096
Registry_URL: https://10.1.7.73:9095

以下の手順に従ってGitLabのプライベートトークンを取得します。

  • 以下に示すように、GitLabのログインページの右上隅にあるアイコンから設定ページに移動します:

gitlab

  • ユーザー設定ページから以下に示すように、Access_Tokensページに移動します:

gitlab

  • すべての該当するフィールドに入力し、アクセストークンを生成する準備ができたら"`Create personal access token`"をクリックします:

gitlab

  • ユーザーが生成されたトークンページから移動すると、アクセストークンはもはや利用できなくなります。 したがって、次のページを移動または閉じる前にアクセストークンのコピーを作成することを強くお勧めします:

gitlab

外部およびレジストリのURLを取得する

外部URL: 外部URLはAPIサーバーのURLです。
レジストリURL: これはGitLabのWebコンソールのコンテナレジストリページから取得できます。 このページにアクセスする方法の一つは、GitLabのWebコンソールからプロジェクト > あなたのプロジェクト > 管理者 / …​ > 左ペイン(コンテナレジストリ) > マウスオーバー(root/…​/)を経由することです。

以下は、外部URLとレジストリURLの両方を表示するページのサンプルスクリーンキャプチャです:

gitlab

SUSE® SecurityコンソールからGitLabレジストリを追加します。

  • レジストリタイプとしてGitLabを選択します。

  • レジストリにユニークな名前を付けてください。

  • ポートを含むレジストリURLを入力してください。

  • レジストリによって要求される場合は、ユーザー名とパスワードを提供してください。

  • 前のセクションから取得したGitLabの外部URLとプライベートトークンを入力してください。

gitlab

レジストリURLは、GitLabからSUSE® Securityスキャナープラットフォームに画像をプルするために使用され、レジストリスキャンを行います。 外部URLは、レジストリスキャン機能によって使用される画像、レジストリ、およびメタデータのリストを取得するために使用されます。

IBM Cloud Container Registry

IBMコンテナレジストリを追加する

  • タイプとしてIBM Cloud Container Registryを選択する

  • レジストリにユニークな名前を付ける

  • レジストリURLを入力 https://us.icr.io/

  • iamapikeyをユーザー名として提供し、以下のapikeyをパスワードとして使用する

    • CLIからapikeyを作成する

      • ibmcloud iam api-key-create atibmKey

    • GUIからapikeyを作成する

      • IBM Cloud→アクセス管理(IAM)-IBM Cloud APIキー

  • IBM Cloudアカウントを提供する

    • CLIからIBM Cloudアカウントを取得する

      • ibmcloud cr info

  • 以下の形式でフィルターとしてリポジトリを追加

    • 組織/リポジトリ:タグ

    • リポジトリは、先頭文字列を持つワイルドカードを使用できます

    • 例 neuvector/all:2

      • すべてのイメージタグをスキャンするため

  • 必要に応じて他のパラメータを有効にする

ibm

レジストリアクセス認証のユーザー名は 'iamapikey' でなければなりません

Harborレジストリ

ネイティブDockerレジストリと同じ手順を使用し、レジストリとしてHarborレジストリを選択します。

Harbor

フィルターフィールドは空白のままにすることはできません。リポジトリフィルターを入力するか、すべてのリポジトリをスキャンするためにフィルターを*として追加してください。

GitHubコンテナレジストリ

NeuVector v5.4.3以降で利用可能になったイメージスキャンは、 GitHub Container Registry (GHCR)からサポートされており、ユーザーはGitHubに保存されたイメージをセキュリティおよびコンプライアンスのワークフローに含めることができます。

GitHubコンテナレジストリを追加

NeuVectorでGHCRを設定するには、Add Registryに移動し、レジストリタイプのドロップダウンからGitHub Container Registryを選択します。

フィールド 説明

名前

このレジストリ設定を識別するための名前。

レジストリに保存される設定

GHCRレジストリのURL。例: https://ghcr.io/

[ユーザ名]

あなたのGitHubユーザー名。

トークン

GitHub Personal Access Tokenで`read:packages`の権限を持つトークン(プライベートイメージにアクセスする場合は`repo`も必要)。

フィルタ

ネームスペースをスキャンする対象として指定します(例: github_user/hello-world:*`または`repo/package_name:version)。

トークンの権限

GHCRにアクセスするには、次のスコープを持つGitHubトークンを生成する必要があります:

  • read:packages(必須)

  • repo(プライベートリポジトリにアクセスする場合)

トークンを こちらで作成できます。

トラブルシューティング

`403 Forbidden`や`invalid credentials`のような問題が発生した場合は、次のことを確認してください:

  • トークンに正しいスコープが設定されています。

  • レジストリURLが正しくフォーマットされています(例: https://ghcr.io/)。