Ansible Tower / AWX / Automation controller Security
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ansible Tower またはそのオープンソース版 AWX は、Ansibleのユーザーインターフェース、ダッシュボード、REST API としても知られています。ロールベースのアクセス制御、ジョブスケジューリング、グラフィカルなインベントリ管理を使用して、最新のUIからAnsibleインフラストラクチャを管理できます。TowerのREST APIとコマンドラインインターフェースにより、現在のツールやワークフローに簡単に統合できます。
Automation Controllerは新しい バージョンのAnsible Towerで、より多くの機能を備えています。
こちらによると、Ansible TowerとAWXの主な違いは受けたサポートであり、Ansible Towerにはロールベースのアクセス制御、カスタムAPIのサポート、ユーザー定義のワークフローなどの追加機能があります。
Webインターフェース: これは、ユーザーがインベントリ、資格情報、テンプレート、ジョブを管理できるグラフィカルインターフェースです。直感的に設計されており、オートメーションジョブの状態や結果を理解するのに役立つ視覚化を提供します。
REST API: Webインターフェースでできるすべてのことは、REST APIを介しても行えます。これにより、AWX/Towerを他のシステムと統合したり、インターフェースで通常実行するアクションをスクリプト化したりできます。
データベース: AWX/Towerは、設定、ジョブ結果、その他の必要な運用データを保存するためにデータベース(通常はPostgreSQL)を使用します。
RabbitMQ: これは、AWX/Towerが異なるコンポーネント間、特にWebサービスとタスクランナー間で通信するために使用するメッセージングシステムです。
Redis: Redisは、キャッシュおよびタスクキューのバックエンドとして機能します。
インベントリ: インベントリは、ジョブ(Ansibleプレイブック)を実行できるホスト(またはノード)のコレクションです。AWX/Towerでは、インベントリを定義してグループ化でき、AWS、Azureなどの他のシステムからホストリストを取得する動的インベントリもサポートしています。
プロジェクト: プロジェクトは、バージョン管理システム(Gitなど)から取得したAnsibleプレイブックのコレクションです。必要に応じて最新のプレイブックを取得します。
テンプレート: ジョブテンプレートは、特定のプレイブックがどのように実行されるかを定義し、ジョブのためのインベントリ、資格情報、およびその他のパラメータを指定します。
資格情報: AWX/Towerは、SSHキー、パスワード、APIトークンなどの秘密を管理および保存する安全な方法を提供します。これらの資格情報は、プレイブックが実行されるときに必要なアクセスを持つように、ジョブテンプレートに関連付けることができます。
タスクエンジン: ここで魔法が起こります。タスクエンジンはAnsibleに基づいて構築されており、プレイブックを実行する責任があります。ジョブはタスクエンジンに送信され、指定されたインベントリに対して指定された資格情報を使用してAnsibleプレイブックが実行されます。
スケジューラとコールバック: これらはAWX/Towerの高度な機能で、ジョブを特定の時間にスケジュールしたり、外部イベントによってトリガーしたりできます。
通知: AWX/Towerは、ジョブの成功または失敗に基づいて通知を送信できます。メール、Slackメッセージ、Webhookなど、さまざまな通知手段をサポートしています。
Ansibleプレイブック: Ansibleプレイブックは、構成、デプロイメント、およびオーケストレーションツールです。自動化された再現可能な方法でシステムの望ましい状態を記述します。YAMLで記述され、プレイブックはAnsibleの宣言型自動化言語を使用して、実行する必要がある構成、タスク、およびステップを記述します。
ユーザーインタラクション: ユーザーは、WebインターフェースまたはREST APIを介してAWX/Towerと対話できます。これにより、AWX/Towerが提供するすべての機能にフロントエンドアクセスが提供されます。
ジョブの開始:
ユーザーは、WebインターフェースまたはAPIを介して、ジョブテンプレートに基づいてジョブを開始します。
ジョブテンプレートには、インベントリ、プロジェクト(プレイブックを含む)、および資格情報への参照が含まれています。
ジョブの開始時に、実行のためにジョブをキューに入れるリクエストがAWX/Towerのバックエンドに送信されます。
ジョブのキューイング:
RabbitMQは、Webコンポーネントとタスクランナー間のメッセージングを処理します。ジョブが開始されると、RabbitMQを使用してタスクエンジンにメッセージが送信されます。
Redisは、実行待ちのキューに入れられたジョブを管理するタスクキューのバックエンドとして機能します。
ジョブの実行:
タスクエンジンは、キューに入れられたジョブを取得します。ジョブに関連付けられたプレイブック、インベントリ、および資格情報に関する必要な情報をデータベースから取得します。
関連するプロジェクトから取得したAnsibleプレイブックを使用して、タスクエンジンは指定されたインベントリノードに対して提供された資格情報を使用してプレイブックを実行します。
プレイブックが実行されると、その実行出力(ログ、ファクトなど)がキャプチャされ、データベースに保存されます。
ジョブ結果:
プレイブックの実行が終了すると、結果(成功、失敗、ログ)がデータベースに保存されます。
ユーザーは、Webインターフェースを介して結果を表示したり、REST APIを介してクエリを実行したりできます。
ジョブの結果に基づいて、通知が送信され、ユーザーや外部システムにジョブの状態を通知できます。通知はメール、Slackメッセージ、Webhookなどです。
外部システムとの統合:
インベントリは外部システムから動的に取得でき、AWX/TowerはAWS、Azure、VMwareなどのソースからホストを取得できます。
プロジェクト(プレイブック)はバージョン管理システムから取得でき、ジョブ実行中に最新のプレイブックを使用することが保証されます。
スケジューラとコールバックは、他のシステムやツールと統合するために使用でき、AWX/Towerが外部トリガーに反応したり、事前に決められた時間にジョブを実行したりすることができます。
ドキュメントに従って、docker-composeを使用してAWXを実行することができます:
最も特権のある役割はシステム管理者と呼ばれます。この役割を持つ者は何でも変更できます。
ホワイトボックスセキュリティレビューの場合、システム監査役が必要で、これによりすべてのシステムデータを表示できますが、変更はできません。別の選択肢として組織監査役を取得することもできますが、前者を取得する方が良いでしょう。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)