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


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

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

注記

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

x509 署名スキーム

Tekton Chains で x509 署名スキームを使用するには、次の要件を満たす必要があります。

  • x509.pem 構造を使用して signing-secrets に秘密鍵を保存します。
  • 秘密鍵を暗号化されていない PKCS #8 PEM ファイルとして保存します。
  • 鍵は ed25519 または ecdsa タイプです。

cosign 署名スキーム

Tekton Chains で cosign 署名スキームを使用するには、次の要件を満たす必要があります。

  • 秘密鍵を cosign.key 構造を使用して signing-secrets に保存します。
  • パスワードを cosign.password 構造で signing-secrets に保存します。
  • 秘密鍵を ENCRYPTED COSIGN PRIVATE KEY タイプの暗号化された PEM ファイルとして保存します。

1.3.1. TektonConfig CR を使用した x509 キーペアの生成

Tekton Chains シークレット用に x509 署名スキームを使用するには、x509 キーペアを生成する必要があります。

TektonConfig カスタムリソース (CR) の generateSigningSecret フィールドを true に設定することで、x509 キーペアを生成できます。Red Hat OpenShift Pipelines Operator は、ecdsa タイプのキーペア (x509.pem 秘密鍵および x509-pub.pem 公開鍵) を生成します。Operator はキーを openshift-pipelines namespace の signing-secrets シークレットに保存します。

警告

generateSigningSecret フィールドを true から false に設定すると、Red Hat OpenShift Pipelines Operator は signing-secrets シークレットの値をオーバーライドおよび空にします。鍵が削除されないようにするには、シークレットの外部に x509-pub.pem 公開鍵を保存するようにしてください。Operator は後でキーを使用して、アーティファクトの証明を検証できます。

Red Hat OpenShift Pipelines Operator は、潜在的なセキュリティー問題を制限するために、以下の機能を提供しません。

  • キーのローテーション
  • 鍵の使用の監査
  • 鍵への適切なアクセス制御

前提条件

  • OpenShift CLI (oc) ユーティリティーがインストールされている。
  • openshift-pipelines namespace の管理者権限で OpenShift Container Platform クラスターにログインしている。

手順

  1. 次のコマンドを実行して、TektonConfig CR を編集します。

    $ oc edit TektonConfig config
  2. TektonConfig CR で、generateSigningSecret の値を true に設定します。

    TektonConfig CR を使用して ecdsa キーペアを作成する例

    apiVersion: operator.tekton.dev/v1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
      chain:
        disabled: false
        generateSigningSecret: true 1
    # ...

    1
    デフォルト値は false です。値を true に設定すると、ecdsa キーペアが生成されます。

1.3.2. 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.3. 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 に signing-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.4. "secret already exists" エラーの解決

signing-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.