2.2. The Update Framework


システム管理者として、Red Hat Trusted Artifact Signer (RHTAS) 向けの The Update Framework (TUF) の Red Hat の実装を理解することは、開発者向けの安全なコーディング環境を維持する上で重要です。コードベースでのミックスアンドマッチ攻撃を防ぐために、TUF のルートメタデータと非ルートメタデータを定期的に更新できます。TUF メタデータを更新することで、クライアントは古くなったファイルや改ざんされたファイルを検出して拒否できるようになります。

2.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 では、有効期限を短く選択し、公開鍵と証明書を頻繁にローテーションすることを推奨しています。これらのメンテナンスタスクを定期的に実行すると、コードベースへの攻撃を防ぐことができます。

2.2.2. The Update Framework のメタデータファイルの更新

デフォルトでは、The Update Framework (TUF) メタデータファイルは、Red Hat Trusted Artifact Signer (RHTAS) のデプロイメント日から 52 週間後に期限切れになります。少なくとも、有効期限が切れる前に 52 週間ごとに 1 回は TUF メタデータファイルを更新する必要があります。Red Hat では、メタデータファイルを 1 年に 1 回以上更新することを推奨しています。

この手順では、ルートメタデータファイルと非ルートメタデータファイルを更新する手順を説明します。

前提条件

  • Ansible 管理の Red Hat Enterprise Linux (RHEL) 上で実行される RHTAS のインストール。
  • rsync および podman バイナリーがインストールされたワークステーション。
  • 管理対象ノードに対するルートレベルの権限を持つ、管理対象ノードへの SSH 接続。

手順

  1. ローカルのコマンドラインインターフェイス (CLI) ツールのダウンロードページから tuftool バイナリーをワークステーションにダウンロードします。

    注記

    URL アドレスは、tas_single_node_base_hostname 変数によって定義された設定済みノードです。tas_single_node_base_hostname の値が example.com の場合、URL アドレスの例は https://cli-server.example.com です。

    重要

    現在、tuftool バイナリーは、x86_64 アーキテクチャー上の Linux オペレーティングシステムでのみ使用できます。

    1. ダウンロードページから、tuftool のダウンロードセクションに移動し、プラットフォームのリンクをクリックします。
    2. ワークステーションでターミナルを開き、バイナリー .gz ファイルを展開し、実行ビットを設定します。

      gunzip tuftool-amd64.gz
      chmod +x tuftool-amd64
      Copy to Clipboard Toggle word wrap

    3. バイナリーを $PATH 環境内の場所に移動し、名前を変更します。

      sudo mv tuftool-amd64 /usr/local/bin/tuftool
      Copy to Clipboard Toggle word wrap

  2. シェル環境を設定します。

    export WORK="${HOME}/trustroot-example"
    export ROOT="${WORK}/root/root.json"
    export KEYDIR="${WORK}/keys"
    export INPUT="${WORK}/input"
    export TUF_REPO="${WORK}/tuf-repo"
    export MANAGED_NODE_IP=IP_OF_ANSIBLE_MANAGED_NODE
    export MANAGED_NODE_SSH_USER=USER_TO_CONNECT_TO_MANAGED_NODE
    export REMOTE_KEYS_VOLUME=$(ssh ${MANAGED_NODE_SSH_USER}@${MANAGED_NODE_IP} -t "sudo podman volume mount tuf-signing-keys" | tr -d '[:space:]')
    export REMOTE_TUF_VOLUME=$(ssh ${MANAGED_NODE_SSH_USER}@${MANAGED_NODE_IP} -t "sudo podman volume mount tuf-repository" | tr -d '[:space:]')
    export TIMESTAMP_EXPIRATION="in 10 days"
    export SNAPSHOT_EXPIRATION="in 26 weeks"
    export TARGETS_EXPIRATION="in 26 weeks"
    export ROOT_EXPIRATION="in 26 weeks"
    Copy to Clipboard Toggle word wrap

    IP_OF_ANSIBLE_MANAGED_NODEUSER_TO_CONNECT_TO_MANAGED_NODE を適切な値に置き換えます。

    要件に応じて有効期限を設定します。

  3. 一時的な TUF ディレクトリー構造を作成します。

    mkdir -p "${WORK}/root/" "${KEYDIR}" "${INPUT}" "${TUF_REPO}"
    Copy to Clipboard Toggle word wrap

  4. TUF コンテンツを一時的な TUF ディレクトリー構造にダウンロードします。

    rsync -r --rsync-path="sudo rsync" ${MANAGED_NODE_SSH_USER}@${MANAGED_NODE_IP}:"${REMOTE_KEYS_VOLUME}/" "${KEYDIR}"
    rsync -r --rsync-path="sudo rsync" ${MANAGED_NODE_SSH_USER}@${MANAGED_NODE_IP}:"${REMOTE_TUF_VOLUME}/" "${TUF_REPO}"
    cp "${TUF_REPO}/root.json" "${ROOT}"
    Copy to Clipboard Toggle word wrap

  5. タイムスタンプ、スナップショット、ターゲットのメタデータをすべて 1 つのコマンドで更新できます。

    tuftool update \
      --root "${ROOT}" \
      --key "${KEYDIR}/timestamp.pem" \
      --key "${KEYDIR}/snapshot.pem" \
      --key "${KEYDIR}/targets.pem" \
      --timestamp-expires "${TIMESTAMP_EXPIRATION}" \
      --snapshot-expires "${SNAPSHOT_EXPIRATION}" \
      --targets-expires "${TARGETS_EXPIRATION}" \
      --outdir "${TUF_REPO}" \
      --metadata-url "file://${TUF_REPO}"
    Copy to Clipboard Toggle word wrap

    注記

    TUF メタデータファイルのサブセットに対して TUF メタデータ更新を実行することもできます。たとえば、timestamp.json メタデータファイルは、他のメタデータファイルよりも頻繁に期限切れになります。したがって、次のコマンドを実行するだけで、タイムスタンプメタデータファイルを更新できます。

    tuftool update \
      --root "${ROOT}" \
      --key "${KEYDIR}/timestamp.pem" \
      --timestamp-expires "${TIMESTAMP_EXPIRATION}" \
      --outdir "${TUF_REPO}" \
      --metadata-url "file://${TUF_REPO}"
    Copy to Clipboard Toggle word wrap
  6. ルートの有効期限が切れそうな場合にのみ、有効期限を更新します。

    tuftool root expire "${ROOT}" "${ROOT_EXPIRATION}"
    Copy to Clipboard Toggle word wrap

    注記

    ルートファイルの有効期限がまだ先の場合は、この手順をスキップできます。

  7. ルートバージョンを更新します。

    tuftool root bump-version "${ROOT}"
    Copy to Clipboard Toggle word wrap

  8. ルートメタデータファイルに再度署名します。

    tuftool root sign "${ROOT}" -k "${KEYDIR}/root.pem"
    Copy to Clipboard Toggle word wrap

  9. 新しいルートバージョンを設定し、ルートメタデータファイルを所定の場所にコピーします。

    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 Toggle word wrap

  10. これらの変更を TUF サーバーにアップロードします。

    1. TUF リポジトリーの圧縮アーカイブを作成します。

      tar -C "${WORK}" -czvf repository.tar.gz tuf-repo
      Copy to Clipboard Toggle word wrap

    2. 次の 2 行を追加して RHTAS Ansible Playbook を更新します。

      tas_single_node_trust_root:
        full_archive: "{{ lookup('file', 'repository.tar.gz') | b64encode }}"
      Copy to Clipboard Toggle word wrap

    3. 変更を適用するには、RHTAS Anisble Playbook を実行します。

      ansible-playbook -i inventory play.yml
      Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat