1.2. The Update Framework
システム管理者として、Red Hat Trusted Artifact Signer (RHTAS) 向けの The Update Framework (TUF) の Red Hat の実装を理解することは、開発者向けの安全なコーディング環境を維持する上で重要です。コードベースでのミックスアンドマッチ攻撃を防ぐために、TUF のルートメタデータと非ルートメタデータを定期的に更新できます。TUF メタデータを更新することで、クライアントは古くなったファイルや改ざんされたファイルを検出して拒否できるようになります。
1.2.1. Trusted Artifact Signer による The Update Framework の実装 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Trusted Artifact Signer (RHTAS) バージョン 1.1 以降では、RHTAS サービスで使用される公開鍵と証明書を保存するための信頼されたルートとして The Update Framework (TUF) を実装しました。The Update Framework は、ソフトウェア更新システムを保護するための洗練されたフレームワークであり、提供されたアーティファクトを保護するのに最適です。The Update Framework は、RHTAS サービスを信頼されたルートターゲットとして参照します。信頼できるターゲットは 4 つで、RHTAS サービスごとに 1 つずつあります (Fulcio、Certificate Transparency (CT) ログ、Rekor、および Timestamp Authority (TSA))。cosign
などのクライアントソフトウェアは、RHTAS 信頼ルートターゲットを使用してアーティファクト署名に署名し、検証します。シンプルな HTTP サーバーが公開鍵と証明書をクライアントソフトウェアに配布します。このシンプルな HTTP サーバーには、個々のターゲットの TUF リポジトリーがあります。
デフォルトでは、RHTAS を Red Hat OpenShift または Red Hat Enterprise Linux にデプロイするときに、TUF リポジトリーが作成され、個々のターゲットが事前に設定されます。デフォルトでは、すべてのメタデータファイルの有効期限は、RHTAS サービスをデプロイした時点から 52 週間です。Red Hat では、有効期限を短く選択し、公開鍵と証明書を頻繁にローテーションすることを推奨しています。これらのメンテナンスタスクを定期的に実行すると、コードベースへの攻撃を防ぐことができます。
1.2.2. The Update Framework のメタデータファイルの更新 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、The Update Framework (TUF) メタデータファイルは、Red Hat Trusted Artifact Signer (RHTAS) のデプロイメント日から 52 週間後に期限切れになります。少なくとも、有効期限が切れる前に 52 週間ごとに 1 回は TUF メタデータファイルを更新する必要があります。Red Hat では、メタデータファイルを 1 年に 1 回以上更新することを推奨しています。
この手順では、ルートメタデータファイルと非ルートメタデータファイルを更新する手順を説明します。
前提条件
- Red Hat OpenShift Container Platform 上で実行される RHTAS Operator をインストールする。
- Securesign インスタンスを実行する。
-
oc
バイナリーがインストールされているワークステーション。
手順
OpenShift クラスターからワークステーションに
tuftool
バイナリーをダウンロードします。重要現在、
tuftool
バイナリーは、x86_64 アーキテクチャー上の Linux オペレーティングシステムでのみ使用できます。- ホームページから ? アイコンをクリックして、Command line tools をクリックし、tuftool ダウンロードセクションに移動し、プラットフォームのリンクをクリックします。
ワークステーションでターミナルを開き、バイナリー
.gz
ファイルを展開し、実行ビットを設定します。例
gunzip tuftool-amd64.gz chmod +x tuftool-amd64
gunzip tuftool-amd64.gz chmod +x tuftool-amd64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バイナリーを
$PATH
環境内の場所に移動し、名前を変更します。例
sudo mv tuftool-amd64 /usr/local/bin/tuftool
sudo mv tuftool-amd64 /usr/local/bin/tuftool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
コマンドラインから OpenShift にログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。
RHTAS プロジェクトに切り替えます。
例
oc project trusted-artifact-signer
oc project trusted-artifact-signer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シェル環境を設定します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要件に応じて有効期限を設定します。
一時的な TUF ディレクトリー構造を作成します。
例
mkdir -p "${WORK}/root/" "${KEYDIR}" "${INPUT}" "${TUF_REPO}"
mkdir -p "${WORK}/root/" "${KEYDIR}" "${INPUT}" "${TUF_REPO}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TUF コンテンツを一時的な TUF ディレクトリー構造にダウンロードします。
例
oc extract --to "${KEYDIR}/" secret/tuf-root-keys oc cp "${TUF_SERVER_POD}:/var/www/html" "${TUF_REPO}" cp "${TUF_REPO}/root.json" "${ROOT}"
oc extract --to "${KEYDIR}/" secret/tuf-root-keys oc cp "${TUF_SERVER_POD}:/var/www/html" "${TUF_REPO}" cp "${TUF_REPO}/root.json" "${ROOT}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow タイムスタンプ、スナップショット、ターゲットのメタデータをすべて 1 つのコマンドで更新できます。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記TUF メタデータファイルのサブセットに対して TUF メタデータ更新を実行することもできます。たとえば、
timestamp.json
メタデータファイルは、他のメタデータファイルよりも頻繁に期限切れになります。したがって、次のコマンドを実行するだけで、タイムスタンプメタデータファイルを更新できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートの有効期限が切れそうな場合にのみ、有効期限を更新します。
例
tuftool root expire "${ROOT}" "${ROOT_EXPIRATION}"
tuftool root expire "${ROOT}" "${ROOT_EXPIRATION}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ルートファイルの有効期限がまだ先の場合は、この手順をスキップできます。
ルートバージョンを更新します。
例
tuftool root bump-version "${ROOT}"
tuftool root bump-version "${ROOT}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートメタデータファイルに再度署名します。
例
tuftool root sign "${ROOT}" -k "${KEYDIR}/root.pem"
tuftool root sign "${ROOT}" -k "${KEYDIR}/root.pem"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいルートバージョンを設定し、ルートメタデータファイルを所定の場所にコピーします。
例
export NEW_ROOT_VERSION=$(cat "${ROOT}" | jq -r ".signed.version") cp "${ROOT}" "${TUF_REPO}/root.json" cp "${ROOT}" "${TUF_REPO}/${NEW_ROOT_VERSION}.root.json"
export NEW_ROOT_VERSION=$(cat "${ROOT}" | jq -r ".signed.version") cp "${ROOT}" "${TUF_REPO}/root.json" cp "${ROOT}" "${TUF_REPO}/${NEW_ROOT_VERSION}.root.json"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの変更を TUF サーバーにアップロードします。
例
oc rsync "${TUF_REPO}/" "${TUF_SERVER_POD}:/var/www/html"
oc rsync "${TUF_REPO}/" "${TUF_SERVER_POD}:/var/www/html"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow