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