3.6. 署名済みコンテナーの操作


自動化実行環境は、Ansible Automation Controller がジョブを実行するために使用するコンテナーイメージです。このコンテンツを Private Automation Hub にダウンロードし、組織内で公開できます。

3.6.1. コンテナー署名用のシステムのデプロイ

Automation Hub は、実行環境コンテナーイメージのセキュリティーを強化するために、イメージ署名を実装します。

コンテナー署名の準備ができるようにシステムをデプロイするには、署名スクリプトを作成します。

注記

インストーラーは、インストーラーが配置されているサーバーと同じサーバー上でスクリプトとキーを探します。

手順

  1. ターミナルから署名スクリプトを作成し、スクリプトパスをインストーラーパラメーターとして渡します。

    :

    #!/usr/bin/env bash
    
    # pulp_container SigningService will pass the next 4 variables to the script.
    MANIFEST_PATH=$1
    FINGERPRINT="$PULP_SIGNING_KEY_FINGERPRINT"
    IMAGE_REFERENCE="$REFERENCE"
    SIGNATURE_PATH="$SIG_PATH"
    
    # Create container signature using skopeo
    skopeo standalone-sign \
      $MANIFEST_PATH \
      $IMAGE_REFERENCE \
      $FINGERPRINT \
      --output $SIGNATURE_PATH
    
    # Optionally pass the passphrase to the key if password protected.
    # --passphrase-file /path/to/key_password.txt
    
    # Check the exit status
    STATUS=$?
    if [ $STATUS -eq 0 ]; then
      echo {\"signature_path\": \"$SIGNATURE_PATH\"}
    else
      exit $STATUS
    fi
    Copy to Clipboard Toggle word wrap
  2. Ansible Automation Platform インストーラーインベントリーファイルで、automationhub_* で始まるコンテナー署名のオプションを確認してください。

    [all:vars]
    .
    .
    .
    
    automationhub_create_default_container_signing_service = True
    automationhub_container_signing_service_key = /absolute/path/to/key/to/sign
    automationhub_container_signing_service_script = /absolute/path/to/script/that/signs
    Copy to Clipboard Toggle word wrap
  3. インストールが完了したら、Automation Hub に移動します。
  4. ナビゲーションパネルから、Signature Keys を選択します。
  5. container-default または container-anyname というタイトルのキーがあることを確認します。
注記

Container-default サービスは、Ansible Automation Platform インストーラーによって作成されます。

3.6.2. Automation Hub に対するリモートでのコンテナーの追加

次の 2 つの方法のいずれかで、コンテナーを Automation Hub にリモートで追加できます。

  • リモートの作成
  • Execution Environment

手順

  1. Automation Hub にログインします。
  2. ナビゲーションパネルから、Execution Environments Remote Registries を選択します。
  3. Add remote registry をクリックします。

    • Name フィールドに、コンテナーが存在するレジストリーの名前を入力します。
    • URL フィールドに、コンテナーが存在するレジストリーの URL を入力します。
    • Username フィールドに、必要に応じてユーザー名を入力します。
    • Password フィールドに、必要に応じてパスワードを入力します。
    • Save をクリックします。

3.6.3. 実行環境の追加

自動化実行環境は、システムレベルの依存関係とコレクションベースのコンテンツを組み込むことを可能にするコンテナーイメージです。各実行環境では、ジョブを実行するためのカスタマイズされたイメージを使用できます。各イメージには、ジョブの実行時に必要なものだけを含めます。

手順

  1. ナビゲーションパネルから、Execution Environments Execution Environments を選択します。
  2. Add execution environment をクリックします。
  3. 実行環境の名前を入力します。
  4. オプション: アップストリーム名を入力します。
  5. Registry で、ドロップダウンメニューからレジストリーの名前を選択します。
  6. Add tag(s) to include フィールドにタグを入力します。フィールドが空白の場合、すべてのタグが渡されます。どのリポジトリー固有のタグを渡すかを指定する必要があります。
  7. 残りのフィールドはオプションです。

    • Currently included tags
    • Add tag(s) to exclude
    • Currently excluded tag(s)
    • Description
  8. Save をクリックします。
  9. イメージを同期します。

3.6.4. ローカル環境からのコンテナーイメージのプッシュ

次の手順を使用して、ローカルシステム上のイメージに署名し、それらの署名されたイメージを Automation Hub レジストリーにプッシュします。

手順

  1. ターミナルから、Podman または現在使用しているコンテナークライアントにログインします。

    > podman pull <container-name>
    Copy to Clipboard Toggle word wrap
  2. イメージをプルした後、タグを追加します (例: latest、rc、beta、または 1.0、2.3 などのバージョン番号)。

    > podman tag <container-name> <server-address>/<container-name>:<tag name>
    Copy to Clipboard Toggle word wrap
  3. 変更を加えた後にイメージに署名し、Automation Hub レジストリーにプッシュし直します。

    > podman push <server-address>/<container-name>:<tag name> --tls-verify=false --sign-by <reference to the gpg key on your local>
    Copy to Clipboard Toggle word wrap

    イメージが署名されていない場合は、現在の署名が埋め込まれている場合にのみプッシュできます。あるいは、次のスクリプトを使用して、署名せずにイメージをプッシュすることもできます。

    > podman push <server-address>/<container-name>:<tag name> --tls-verify=false
    Copy to Clipboard Toggle word wrap
  4. イメージがプッシュされたら、Automation Hub に移動します。
  5. ナビゲーションパネルから、Execution Environments Execution Environments を選択します。
  6. 新しい実行環境を表示するには、Refresh アイコンをクリックします。
  7. イメージの名前をクリックすると、プッシュされたイメージが表示されます。

トラブルシューティング

Automation Hub の詳細ページには、イメージが署名されているかが示されます。詳細ページに、イメージが Unsigned であることが示されている場合は、次の手順を使用して Automation Hub からイメージに署名できます。

  1. イメージ名をクリックすると詳細ページに移動します。
  2. More Actions アイコン をクリックします。次の 3 つのオプションが利用可能です。

    • Use in Controller
    • Delete
    • Sign
  3. ドロップダウンメニューから Sign をクリックします。

署名サービスがイメージに署名します。イメージが署名されると、ステータスが "signed" に変わります。

3.6.5. 署名済みイメージでのポリシーの使用

Podman またはその他のイメージクライアントがポリシーを使用して、特定のポリシーをその署名に割り当てることにより、イメージの有効性を保証できます。

3.6.6. Podman を使用して、イメージが特定の署名によって署名されていることを確認する

署名が特定の署名によって署名されていることを確認する場合は、その署名がローカル環境に存在する必要があります。

手順

  1. ナビゲーションパネルから、Signature Keys を選択します。
  2. 使用している署名の横にある More Actions アイコン をクリックします。
  3. ドロップダウンメニューから Download key を選択します。新しいウィンドウが開きます。
  4. Name フィールドに、キーの名前を入力します。
  5. Save をクリックします。

3.6.7. 署名を検証するためのクライアントの設定

リモートレジストリーからプルしたコンテナーイメージが適切に署名されていることを確認するには、まずポリシーファイルで適切な公開キーを使用してイメージを設定する必要があります。

前提条件

  • 署名を検証するには、クライアントに sudo 権限が設定されている必要があります。

手順

  1. ターミナルを開き、次のコマンドを使用します。

    >  sudo <name of editor> /etc/containers/policy.json
    Copy to Clipboard Toggle word wrap

    表示されるファイルは次のようなものです。

    {
      "default": [{"type": "reject"}],
      "transports": {
      	"docker": {
        	"quay.io": [{"type": "insecureAcceptAnything"}],
        	"docker.io": [{"type": "insecureAcceptAnything"}],
        	"<server-address>": [
          	{
              	    "type": "signedBy",
              	    "keyType": "GPGKeys",
              	    "keyPath": "/tmp/containersig.txt"
          	}]
      	}
      }
    }
    Copy to Clipboard Toggle word wrap

    このファイルは、quay.iodocker.io も検証を実行しないことを示しています。タイプが insecureAcceptAnything であり、これによってデフォルトのタイプの reject がオーバーライドされるためです。ただし、パラメーターの type"signedBy" に設定されているため、<server-address> によって検証が実行されます。

    注記

    現在サポートされている唯一の keyType は GPG キーです。

  2. <server-address> エントリーの下で、keyPath <1> を変更してキーファイルの名前を含めます。

    {
        	"default": [{"type": "reject"}],
        	"transports": {
            	"docker": {
              	  "quay.io": [{"type": "insecureAcceptAnything"}],
              	  "docker.io": [{"type": "insecureAcceptAnything"}],
              	  "<server-address>": [{
                    	"type": "signedBy",
                    	"keyType": "GPGKeys",
                    	"keyPath": "/tmp/<key file name>",
                    	"signedIdentity": {
                      	  "type": "matchExact"
                        }
                	  }]
                }
        	}
    }
    Copy to Clipboard Toggle word wrap
  3. ファイルを保存してから閉じます。

検証

  • Podman または任意のクライアントを使用して、ファイルをプルします。
> podman pull <server-address>/<container-name>:<tag name> --tls-verify=false
Copy to Clipboard Toggle word wrap

この応答は、イメージがエラーなしで署名されたことを確認します。イメージが署名されていない場合、コマンドは失敗します。

関連情報

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る