1.3. Tekton Chains でデータに署名するための秘密


クラスター管理者は、キーペアを生成し、Tekton Chains を使用して、Kubernetes シークレットでアーティファクトに署名できます。Tekton Chains が機能するには、暗号化されたキーの秘密鍵とパスワードが、openshift-pipelines namespace の signing-secrets シークレットの一部として存在している必要があります。

現在、Tekton Chains は x509 および cosign 署名スキームをサポートしています。

注記

使用できるのは、サポートされている署名スキームのいずれか 1 つのみです。

Tekton Chains で x509 署名スキームを使用するには、ed25519 または ecdsa 型の x509.pem 秘密鍵を signing-secrets Kubernetes シークレットに保存します。

1.3.1. cosign を使用した署名

cosign 署名ツールを使用すると、Tekton Chains で cosign スキームを使用できます。

前提条件

  • cosign ツールをインストールしている。

手順

  1. 次のコマンドを実行して、cosign.keycosign.pub キーのペアを生成します。

    $ cosign generate-key-pair k8s://openshift-pipelines/signing-secrets

    Cosign はパスワードの入力を求め、Kubernetes シークレットを作成します。

  2. 暗号化された cosign.key 秘密鍵と cosign.password 復号化パスワードを、signing-secrets Kubernetes シークレットに保存します。秘密鍵が ENCRYPTED COSIGN PRIVATE KEY 型の暗号化された PEM ファイルとして保存されていることを確認します。

1.3.2. skopeo を使用した署名

skopeo ツールを使用して鍵を生成し、Tekton Chains で cosign 署名スキームで使用できます。

前提条件

  • skopeo ツールをインストールしている。

手順

  1. 次のコマンドを実行して、公開鍵と秘密鍵のペアを生成します。

    $ skopeo generate-sigstore-key --output-prefix <mykey> 1
    1
    <mykey> を選択した鍵名に置き換えます。

    Skopeo は秘密鍵のパスフレーズの入力を求め、<mykey>.private および <mykey>.pub という名前の鍵ファイルを作成します。

  2. 次のコマンドを実行し、base64 ツールを使用して <mykey>.pub ファイルをエンコードします。

    $ base64 -w 0 <mykey>.pub > b64.pub
  3. 次のコマンドを実行し、base64 ツールを使用して <mykey>.private ファイルをエンコードします。

    $ base64 -w 0 <mykey>.private > b64.private
  4. 次のコマンドを実行し、base64 ツールを使用してパスフレーズをエンコードします。

    $ echo -n '<passphrase>' | base64 -w 0 > b64.passphrase 1
    1
    <passphrase> を鍵ペアに使用したパスフレーズに置き換えます。
  5. 次のコマンドを実行して、openshift-pipelines namespace に signed-secrets シークレットを作成します。

    $ oc create secret generic signing-secrets -n openshift-pipelines
  6. 以下のコマンドを実行して signing-secrets シークレットを編集します。

    $ oc edit secret -n openshift-pipelines signing-secrets

    次の方法で、エンコードされた鍵をシークレットのデータに追加します。

    apiVersion: v1
    data:
      cosign.key: <Encoded <mykey>.private> 1
      cosign.password: <Encoded passphrase> 2
      cosign.pub: <Encoded <mykey>.pub> 3
    immutable: true
    kind: Secret
    metadata:
      name: signing-secrets
    # ...
    type: Opaque
    1
    <Encoded <mykey>.private>b64.private ファイルの内容に置き換えます。
    2
    <Encoded passphrase>b64.passphrase ファイルの内容に置き換えます。
    3
    <Encoded <mykey>.pub>b64.pub ファイルの内容に置き換えます。

1.3.3. "secret already exists" エラーの解決

signed-secret シークレットがすでに入力されている場合、このシークレットを作成するコマンドは次のエラーメッセージを出力する可能性があります。

Error from server (AlreadyExists): secrets "signing-secrets" already exists

このエラーは、シークレットを削除することで解決できます。

手順

  1. 次のコマンドを実行して、signing-secret シークレットを削除します。

    $ oc delete secret signing-secrets -n openshift-pipelines
  2. 鍵ペアを再作成し、任意の署名スキームを使用してシークレットに保存します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.