3.6. 署名済みコンテナーの操作
自動化実行環境は、Ansible Automation Platform がジョブを実行するために使用するコンテナーイメージです。このコンテンツを Private Automation Hub にダウンロードし、組織内で公開できます。
3.6.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 fiAnsible 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インストールが完了したら、Ansible Automation Platform にログインし、
に移動します。 注記container-defaultサービスは、Ansible Automation Platform インストーラーによって作成されます。
検証
container-default または container-anyname というタイトルのキーがあることを確認します。
3.6.2. Automation Hub に対するリモートでのコンテナーの追加 リンクのコピーリンクがクリップボードにコピーされました!
次の 2 つの方法のいずれかで、コンテナーを Automation Hub にリモートで追加できます。
- リモートの作成
- 自動化実行環境の使用
手順
- Ansible Automation Platform にログインします。
-
ナビゲーションパネルから、
を選択します。 をクリックします。
- Name フィールドに、コンテナーが存在するレジストリーの名前を入力します。
- URL フィールドに、コンテナーが存在するレジストリーの URL を入力します。
- Username フィールドに、必要に応じてユーザー名を入力します。
- Password フィールドに、必要に応じてパスワードを入力します。
- をクリックします。
3.6.3. 実行環境の追加および署名 リンクのコピーリンクがクリップボードにコピーされました!
自動化実行環境は、システムレベルの依存関係とコレクションベースのコンテンツを組み込むことを可能にするコンテナーイメージです。各実行環境では、ジョブを実行するためのカスタマイズされたイメージを使用できます。各イメージには、ジョブの実行時に必要なものだけを含めます。
手順
-
ナビゲーションパネルから、
を選択します。 をクリックし、表示されるフィールドに関連情報を入力します。
- Name フィールドには、ローカルレジストリー上の実行環境の名前が表示されます。
- Upstream name フィールドは、リモートサーバー上のイメージの名前です。
- Registry で、ドロップダウンメニューからレジストリーの名前を選択します。
- オプション: Add tag(s) to include フィールドにタグを入力します。フィールドが空白の場合、すべてのタグが渡されます。どのリポジトリー固有のタグを渡すかを指定する必要があります。
- オプション: Add tag(s) to exclude フィールドに除外するタグを入力します。
- をクリックします。表示されるリストに新しい実行環境が表示されます。
新しい自動化実行環境を同期して署名します。
- アイコン ⋮ をクリックし、Sync execution environment を選択します。
- アイコン ⋮ をクリックし、Sign execution environment を選択します。
- 新しい実行環境をクリックします。Details ページで Signed ラベルを見つけて、実行環境が署名されていることを確認します。
3.6.4. ローカル環境からのコンテナーイメージのプッシュ リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、ローカルシステム上の自動化実行環境に署名し、署名された実行環境を Automation Hub レジストリーにプッシュします。
手順
ターミナルから、Podman または現在使用しているコンテナークライアントにログインします。
> podman pull <container-name>実行環境を取得したら、タグ (例: latest、rc、beta、またはバージョン番号 (1.0、2.3 など)) を追加します。
> podman tag <container-name> <server-address>/<container-name>:<tag name>変更を加えた後、実行環境に署名し、Automation Hub レジストリーにプッシュし直します。
> podman push <server-address>/<container-name>:<tag name> --tls-verify=false --sign-by <reference to the gpg key on your local>実行環境が署名されていない場合は、現在の署名が埋め込まれている場合にのみプッシュできます。または、次のスクリプトを使用して、署名せずに実行環境をプッシュすることもできます。
> podman push <server-address>/<container-name>:<tag name> --tls-verify=false-
実行環境がプッシュされたら、
に移動します。 - 新しい実行環境を表示するには、Refresh アイコンをクリックします。
- イメージの名前をクリックすると、プッシュされたイメージが表示されます。
トラブルシューティング
各実行環境の詳細ページには、署名されているかどうかが表示されます。詳細ページにイメージが Unsigned であることが示されている場合は、次の手順で Automation Hub から実行環境に署名できます。
- 実行環境名をクリックすると、詳細ページに移動します。
アイコン ⋮ をクリックします。次の 3 つのオプションが利用可能です。
- Sign execution environment
- Use in Controller
- Delete execution environment
- ドロップダウンメニューから Sign execution environment をクリックします。
検証
署名サービスによって実行環境が署名されます。実行環境が署名されると、ステータスが "signed" に変わります。
3.6.5. 署名済みイメージでのポリシーの使用 リンクのコピーリンクがクリップボードにコピーされました!
Podman またはその他のイメージクライアントがポリシーを使用して、特定のポリシーをその署名に割り当てることにより、イメージの有効性を保証できます。
3.6.6. Podman を使用して、イメージが特定の署名によって署名されていることを確認する リンクのコピーリンクがクリップボードにコピーされました!
実行環境が特定の署名によって署名されていることを確認するには、まず署名がローカル環境に存在する必要があります。
手順
-
ナビゲーションパネルから、
を選択します。 - 使用している署名の横にある アイコンをクリックします。新しいウィンドウが開き、鍵がダウンロードされたことが示されます。
3.6.7. 署名を検証するためのクライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
リモートレジストリーから取得した実行環境が適切に署名されていることを確認するには、まずポリシーファイルで適切な公開鍵を使用して実行環境を設定する必要があります。
前提条件
- 署名を検証するには、クライアントに sudo 権限が設定されている必要があります。
手順
ターミナルを開き、次のコマンドを使用します。
> sudo <name of editor> /etc/containers/policy.json表示されるファイルは次のようなものです。
{ "default": [{"type": "reject"}], "transports": { "docker": { "quay.io": [{"type": "insecureAcceptAnything"}], "docker.io": [{"type": "insecureAcceptAnything"}], "<server-address>": [ { "type": "signedBy", "keyType": "GPGKeys", "keyPath": "/tmp/containersig.txt" }] } } }このファイルは、
quay.ioもdocker.ioも検証を実行しないことを示しています。タイプがinsecureAcceptAnythingであり、これによってデフォルトのタイプのrejectがオーバーライドされるためです。ただし、パラメーターのtypeが"signedBy"に設定されているため、<server-address>によって検証が実行されます。注記現在サポートされている唯一の
keyTypeは GPG キーです。<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" } }] } } }- ファイルを保存してから閉じます。
検証
- Podman または任意のクライアントを使用して、ファイルをプルします。
> podman pull <server-address>/<container-name>:<tag name> --tls-verify=false
この応答により、実行環境がエラーなしで署名されていることを確認できます。実行環境が署名されていない場合、コマンドは失敗します。
3.6.8. コンテナーリポジトリーの削除 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform からリモートリポジトリーを削除して、ディスク領域を管理します。Execution Environment リストビューで、Red Hat Ansible Automation Platform インターフェイスからリポジトリーを削除できます。
前提条件
- リポジトリーを管理する権限があります。
手順
- Ansible Automation Platform にログインします。
-
ナビゲーションパネルから、
を選択します。 - 削除するコンテナーリポジトリーの アイコン ⋮ をクリックし、 クリックします。
- 確認メッセージが表示されたら、チェックボックスをクリックし、 をクリックします。
検証
- automation execution environments のリストビューに戻ります。自動化実行環境が正常に削除された場合、リストに表示されなくなります。