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


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

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

コンテナー署名を実行できるようにシステムをデプロイするには、まず 自動化コンテンツ収集とコンテナー署名が有効 になっていることを確認します。その後、署名スクリプトを作成するか、手動で 実行環境を追加して署名 できます。

注記

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

手順

  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. インストールが完了したら、Ansible Automation Platform にログインし、Automation Content Signature Keys に移動します。
  4. container-default または container-anyname というタイトルのキーがあることを確認します。
注記

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

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

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

  • リモートの作成
  • 自動化実行環境の使用

手順

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

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

3.6.3. 実行環境の追加および署名

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

手順

  1. ナビゲーションパネルから、Automation Content Execution Environments を選択します。
  2. Create execution environment をクリックし、表示されるフィールドに関連情報を入力します。

    1. Name フィールドには、ローカルレジストリー上の実行環境の名前が表示されます。
    2. Upstream name フィールドは、リモートサーバー上のイメージの名前です。
    3. Registry で、ドロップダウンメニューからレジストリーの名前を選択します。
    4. オプション: Add tag(s) to include フィールドにタグを入力します。フィールドが空白の場合、すべてのタグが渡されます。どのリポジトリー固有のタグを渡すかを指定する必要があります。
    5. オプション: Add tag(s) to exclude フィールドに除外するタグを入力します。
  3. Create execution environment をクリックします。表示されるリストに新しい実行環境が表示されます。
  4. 新しい自動化実行環境を同期して署名します。

    1. More Actions アイコン をクリックし、Sync execution environment を選択します。
    2. More Actions アイコン をクリックし、Sign execution environment を選択します。
  5. 新しい実行環境をクリックします。Details ページで Signed ラベルを見つけて、実行環境が署名されていることを確認します。

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 Content Execution Environments に移動します。
  5. 新しい実行環境を表示するには、Refresh アイコンをクリックします。
  6. イメージの名前をクリックすると、プッシュされたイメージが表示されます。

トラブルシューティング

各実行環境の詳細ページには、署名されているかどうかが表示されます。詳細ページにイメージが Unsigned であることが示されている場合は、次の手順で Automation Hub から実行環境に署名できます。

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

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

検証

署名サービスによって実行環境が署名されます。実行環境が署名されると、ステータスが "signed" に変わります。

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

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

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

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

手順

  1. ナビゲーションパネルから、Automation Content Signature Keys を選択します。
  2. 使用している署名の横にある Download key アイコンをクリックします。新しいウィンドウが開き、鍵がダウンロードされたことが示されます。

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

© 2025 Red Hat