12.3. OpenShift CLI を使用したイメージ署名の検証
oc adm verify-image-signature
コマンドを使用して、OpenShift Container レジストリーにインポートされたイメージの署名を検証できます。このコマンドは、イメージ署名に含まれるイメージ ID が信頼できるかどうかを検証します。 ここでは、パブリック GPG キーを使用して署名自体を検証し、提供される予想 ID と指定イメージの ID (プル仕様) のマッチングが行われます。
デフォルトで、このコマンドは通常 $GNUPGHOME/pubring.gpg にあるパブリック GPG キーリングをパス ~/.gnupg で使用します。デフォルトで、このコマンドは検証結果をイメージオブジェクトに保存し直すことはありません。これを実行するには、以下に示すように --save
フラグを指定する必要があります。
イメージの署名を検証するには、ユーザーに image-auditor
クラスターロールがなければなりません。クラスター管理者は、以下を使用してこれを追加できます。
$ oc adm policy add-cluster-role-to-user system:image-auditor <user_name>
検証済みのイメージで無効な GPG キーまたは無効な予想 ID と共に --save
フラグを使用すると、保存された検証ステータスおよびすべての署名が削除され、イメージは未検証の状態になります。
誤ってすべての署名を削除してしまうことを避けるために、最初は --save
フラグなしでコマンドを実行し、ログで潜在的な問題の有無を確認できます。
イメージ署名を検証するには、以下の形式を使用します。
$ oc adm verify-image-signature <image> --expected-identity=<pull_spec> [--save] [options]
<pull_spec>
はイメージストリームを記述することで確認でき、<image>
はイメージストリームタグを記述して確認することができます。以下のコマンド出力例を参照してください。
イメージ署名の検証例
$ oc describe is nodejs -n openshift Name: nodejs Namespace: openshift Created: 2 weeks ago Labels: <none> Annotations: openshift.io/display-name=Node.js openshift.io/image.dockerRepositoryCheck=2017-07-05T18:24:01Z Docker Pull Spec: 172.30.1.1:5000/openshift/nodejs ... $ oc describe istag nodejs:latest -n openshift Image Name: sha256:2bba968aedb7dd2aafe5fa8c7453f5ac36a0b9639f1bf5b03f95de325238b288 ... $ oc adm verify-image-signature \ sha256:2bba968aedb7dd2aafe5fa8c7453f5ac36a0b9639f1bf5b03f95de325238b288 \ --expected-identity 172.30.1.1:5000/openshift/nodejs:latest \ --public-key /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release \ --save
oc adm verify-image-signature
コマンドが、x509: certificate signed by unknown authority
エラーを返す場合、レジストリーの認証局 (CA) をシステム上で信頼される CA の一覧に追加する必要がある場合があります。これには、以下の手順を実行します。
CA 証明書をクラスターからクライアントマシンに転送します。
たとえば、docker-registry.default.svc の CA を追加するには、/etc/docker/certs.d/docker-registry.default.svc\:5000/node-client-ca.crt にあるファイルを転送します。
CA 証明書を /etc/pki/ca-trust/source/anchors/ ディレクトリーにコピーします。以下に例を示します。
# cp </path_to_file>/node-client-ca.crt \ /etc/pki/ca-trust/source/anchors/
update-ca-trust
を実行して、信頼できる CA の一覧を更新します。# update-ca-trust