ansible-signを使ってみる

はじめに

本記事は Ansible Advent Calendar 2022, Ansible Advent Calendar 2022 – Qiitaの10日目の記事になります。

ここでは、Ansible Automation Platform 2.3から追加された機能の一つである「プロジェクトの署名検証」を試してみたいと思います。

署名をするツールは ansible-sign を使用します。
署名をすることでAnsibleのコンテンツが改ざんされていた場合や想定していない修正が入ってるものは検知して実行できなくすることが可能です。

環境

項目 バージョン
RHEL 8.6
Ansible Automation Platform 2.3
ansible-sign 0.1.1
python 3.9.13
gpg 1.8.5

環境準備

gpgインストール

gpgをインストールします。

ansible-signインストール

Python 3.9をインストールした後にvenvを作成してansible-signをインストールします。

証明検証用コンテンツ準備

今回は検証用として以下のような構造でサンプルを作成しました。

Ansibleコンテンツの署名

GPGキーペア作成

署名用で使用GPGキーペアを作成します。

次にパスワード入力が求められるのでパスワードを入れててエンターを押します。

パスワードの再入力が求められるので入力してエンターを押します。

GPGキーペアが作成されたか確認します。

コンテンツ署名

署名に必要な MANIFEST.in を作成します。

今回のケースでは以下のように記述しています。

ファイル単体の場合は include を指定します。
再帰的に指定する場合は recursive-include を指定します。
再帰的に除外する場合は recursive-exclude を指定します。

MANIFEST.in の詳細については以下を参照ください。

MANIFEST.in を作成したら署名を実行します。

パスワード入力が求められるため入力しエンターを押します。

コンテンツに署名が実行されます。

コンテンツ検証のハッシュ値などは以下に保存されています。

これで署名が完了したのでGitHub/GitLabなどにプッシュしてください。

GPG公開鍵登録

Ansible Automation Platform(AAP)に登録する公開鍵を取得します。
まず、取得する公開鍵を確認します。

公開鍵を表示します。

上記で表示された公開鍵を以下の手順でAPPに登録します。

認証情報 へ移動して 追加 をクリックします。
以下の情報を入力して 保存 をクリックします。

項目 説明
名前 任意の名前
認証情報タイプ GPG Public Key
GPG Public Key 作成したGPGキーの公開鍵をコピペする

プロジェクト へ移動して 追加 をクリックします。
以下の情報を入力して 保存 をクリックします。

項目 説明
名前 任意の名前
ソースコントロールのタイプ Git
コンテンツ署名検証の認証情報 作成したGPG Public Keyを指定
ソースコントロールのURL リポジトリのURLを指定
ソースコントロール認証情報 必要な場合は作成して指定

問題ない場合はプロジェクトの同期が 成功 します。

もし、何かしらのファイル修正後に再度署名を実行しなかった場合(意図しない改ざんがされている場合)は同期が 失敗 します。

実行結果に問題のあるファイルが表示されます。

こんな感じで検証することができます 🙂

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください