Red Hat Ansible Automation Platform ハードニングガイド
Red Hat Enterprise Linux 上で実行する Ansible Automation Platform をセキュアな方法でインストール、設定、保守する
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
このガイドでは、Red Hat Enterprise Linux に Ansible Automation Platform をセキュアな方法でインストール、設定、保守するために必要な、さまざまなプロセスの推奨プラクティスを提供します。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
このドキュメントの改善に関するご意見がある場合や、エラーを発見した場合は、https://access.redhat.com から Technical Support チームに連絡してください。
第1章 Ansible Automation Platform のハードニングの概要 リンクのコピーリンクがクリップボードにコピーされました!
このドキュメントは、Red Hat Enterprise Linux 上の Red Hat Ansible Automation Platform デプロイメントのセキュリティー体制改善 (このガイド全体で “ハードニング” と呼んでいます) に関するガイダンスを提供するものです。
OpenShift などの他のデプロイメントターゲットは、現時点ではこのガイドの範囲外です。クラウドサービスプロバイダーマーケットプレイスを通じて利用できる Ansible Automation Platform マネージドサービスも、このガイドの範囲外です。
このガイドでは、Ansible Automation Platform のセキュリティー体制のハードニングについて、実践的なアプローチを採用しています。デプロイメントの計画とアーキテクチャーのフェーズから始めて、インストール、初期設定、Day 2 運用に関する具体的なガイダンスを取り上げます。このガイドでは、Red Hat Enterprise Linux 上で実行される Ansible Automation Platform について特に説明しているため、Automation Platform のコンポーネントに影響する Red Hat Enterprise Linux のハードニングガイダンスも取り上げます。また、米国国防情報システム局 (DISA) の Security Technical Implementation Guides (STIG) に関する追加の考慮事項を、組織全体のセキュリティー戦略の一部として DISA STIG を統合する組織向けに提供しています。
これらの推奨事項は、Ansible Automation Platform のデプロイメントのセキュリティーやコンプライアンスを保証するものではありません。組織固有の要件に基づいてセキュリティーを評価して、特定の脅威やリスクに対処し、リスクと実装要素のバランスを取る必要があります。
1.1. 対象者 リンクのコピーリンクがクリップボードにコピーされました!
このガイドは、Red Hat Enterprise Linux にデプロイする Ansible Automation Platform 2.4 のインストール、設定、保守を担当する担当者を対象に書かれています。また、セキュリティー運用、コンプライアンス評価、および関連するセキュリティープロセスに関連するその他の機能に関する追加情報を提供します。
1.2. Ansible Automation Platform の概要 リンクのコピーリンクがクリップボードにコピーされました!
Ansible は、Python で書かれたオープンソースのコマンドライン IT 自動化ソフトウェアアプリケーションです。Ansible Automation Platform を使用すると、システムの設定、ソフトウェアのデプロイ、高度なワークフローのオーケストレーションを行い、アプリケーションのデプロイやシステムの更新などをサポートできます。Ansible の主な長所は、シンプルさと使いやすさです。Ansible は可変部分を最小限に抑え、セキュリティーと信頼性にも重点を置いています。SSH、HTTPS、WinRM など、セキュアでよく知られた通信プロトコルを転送に使用します。また、大規模なトレーニングなしですぐに使用できるように設計された、人間が判読できる言語を使用しています。
Ansible Automation Platform は、ロールベースのアクセス制御 (RBAC)、一元的なロギングと監査、認証情報管理、ジョブスケジューリング、複雑な自動化ワークフローなど、エンタープライズクラスの機能で Ansible 言語を強化します。Ansible Automation Platform では、強力なパートナーエコシステムが提供する認定コンテンツや、セキュリティー強化、レポート作成、および分析機能に加え、ライフサイクルテクニカルサポートを利用して、組織全体に自動化を拡張できます。Ansible Automation Platform は、エンタープライズアプリケーションインフラストラクチャーのライフサイクルを管理する自動化ワークロードの開発と運用を簡素化します。運用、ネットワーク、セキュリティー、開発など、さまざまな IT ドメインだけでなく、多様なハイブリッド環境全体にも対応して機能します。
1.2.1. Ansible Automation Platform のコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform は、Automation Controller、Automation Hub、Event-Driven Ansible Controller、および Insights for Ansible Automation Platform を含むモジュール式プラットフォームです。
第2章 Ansible Automation Platform のハードニング リンクのコピーリンクがクリップボードにコピーされました!
このガイドでは、Ansible Automation Platform のセキュリティー体制のハードニングについて、実践的なアプローチを採用しています。デプロイメントの計画とアーキテクチャーのフェーズから始めて、インストールフェーズの具体的なガイダンスを取り上げます。このガイドでは、Red Hat Enterprise Linux 上で実行される Ansible Automation Platform について特に説明しているため、Automation Platform のコンポーネントに影響する Red Hat Enterprise Linux のハードニングガイダンスも取り上げます。
2.1. プランニングに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform のインストールを計画する際には、次のコンポーネントが含まれていることを確認してください。
インストーラーによって管理されるコンポーネント
- Automation Controller
- Event-Driven Ansible Controller
- Private Automation Hub
PostgreSQL データベース (外部のものでない場合)
- 外部サービス
- Red Hat Insights for Red Hat Ansible Automation Platform
- Automation Hub
-
registry.redhat.io(デフォルトの実行環境コンテナーレジストリー)
詳細は、Red Hat Ansible Automation Platform 計画ガイド の システム要件 セクションを参照してください。
2.1.1. Ansible Automation Platform リファレンスアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
可用性に関する要件がある大規模な実稼働環境の場合は、Red Hat Enterprise Linux 上の Red Hat Ansible Automation Platform の リファレンスアーキテクチャー ドキュメントの手順を使用して、このガイドのセクション 2.1 で説明されているコンポーネントをデプロイすることを推奨します。特定の技術要件に合わせて若干の変更を加えることも妥当な選択ですが、リファレンスアーキテクチャーに従うと、サポート対象の実稼働環境が実現します。
図2.1 リファレンスアーキテクチャーの概要
Event-Driven Ansible は、Ansible Automation Platform 2.4 の新機能です。この機能は、「図 1: リファレンスアーキテクチャーの概要」で詳しく説明されているリファレンスアーキテクチャーを初めて作成したときには提供されていませんでした。現在、サポートされる構成は、単一の Automation Controller、単一の Automation Hub、および外部 (インストーラー管理) データベースを備えた単一の Event-Driven Ansible Controller ノードです。Event-Driven Ansible に関心をお持ちの場合は、Ansible Automation Platform インストールガイド に記載されている設定に従ってインストールすることを推奨します。このドキュメントでは、Event-Driven Ansible 固有のハードニング設定が必要な場合の追加の説明を提供します。
完全なリファレンスアーキテクチャーが必要ない小規模な実稼働環境の場合は、専用の PostgreSQL データベースサーバー (インストーラーによって管理されるか、外部で提供されるもの) を使用して Ansible Automation Platform をデプロイすることを推奨します。
2.1.2. Ansible Automation Platform のネットワーク、ファイアウォール、およびネットワークサービスの計画 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform は、外部の補助サービスを統合し、ホスト、他のネットワークデバイス、アプリケーション、クラウドサービスなどのターゲット環境とリソースを管理するために、ネットワークへのアクセスを必要とします。「Ansible Automation Platform 計画ガイド」の ネットワークポートおよびプロトコル のセクションでは、次の図に示すように、Ansible Automation Platform コンポーネントがネットワーク上でどのように対話するか、またどのポートとプロトコルが使用されるかについて説明しています。
図2.2 Ansible Automation Platform のネットワークポートおよびプロトコル
Ansible Automation Platform に関連するファイアウォールまたはクラウドネットワークセキュリティーグループの設定を計画する際には、「Ansible Automation Platform 計画ガイド」の ネットワークポートおよびプロトコル セクションを参照して、ファイアウォールまたはセキュリティーグループでどのネットワークポートを開く必要があるかを確認してください。
ロードバランサーの使用方法の詳細と、Ansible Automation Platform と互換性のあるサービスの送信トラフィック要件については、Red Hat ナレッジベースの記事 What ports need to be opened in the firewall for Ansible Automation Platform 2 Services? を参照してください。この記事では、インターネットに接続されたシステムに関して、Ansible Automation Platform が使用するように設定できるサービス (Ansible Automation Hub、Red Hat Insights for Red Hat Ansible Automation Platform、Ansible Galaxy、registry.redhat.io コンテナーイメージレジストリーなど) の送信トラフィック要件も定義しています。
この記事では、インターネットに接続されたシステムに関して、Ansible Automation Platform が使用するように設定できるサービス (Ansible Automation Hub、Insights for Red Hat Ansible Automation Platform、Ansible Galaxy、registry.redhat.io コンテナーイメージレジストリーなど) の送信トラフィック要件も定義しています。
Ansible Automation Platform コンポーネントによって使用されるポートへのアクセスを、保護対象のネットワークとクライアントに制限してください。次の制限を強く推奨します。
- 他の Ansible Automation Platform コンポーネントサーバー (Automation Controller、Automation Hub、Event-Driven Ansible Controller) にのみアクセスを許可するように、データベースサーバーの PostgreSQL データベースポート (5432) を制限します。
- SSH アクセスを、Ansible Automation Platform サーバーへのメンテナンスアクセスに使用する インストールホスト およびその他の信頼できるシステムから Ansible Automation Platform サーバーへのアクセスに制限します。
- HTTPS アクセスを、信頼できるネットワークおよびクライアントから Automation Controller、Automation Hub、および Event-Driven Ansible Controller へのアクセスに制限します。
2.1.3. DNS、NTP、およびサービスの計画 リンクのコピーリンクがクリップボードにコピーされました!
2.1.3.1. DNS リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform をインストールするとき、インストーラースクリプトは、特定のインフラストラクチャーサーバーがインストーラーのインベントリー内で完全修飾ドメイン名 (FQDN) を使用して定義されていることを確認します。すべての Ansible Automation Platform インフラストラクチャーノードに、ルーティング可能な IP アドレスに解決される有効な FQDN を DNS で定義し、この FQDN をインストーラーインベントリーファイルで使用することを推奨します。
2.1.3.2. DNS とロードバランシング リンクのコピーリンクがクリップボードにコピーされました!
リファレンスアーキテクチャーで説明されているように、Ansible Automation Platform でロードバランサーを使用する場合、負荷分散されるコンポーネント (Automation Controller および Private Automation Hub) ごとに追加の FQDN が必要です。
たとえば、次のホストを Ansible Automation Platform インストーラーのインベントリーファイルで定義したとします。
これにより、ロードバランサーは、ユーザーに表示されるこれらの Ansible Automation Platform サービス名として、FQDN の controller.example.com および hub.example.com を使用できるようになります。
ロードバランサーを Private Automation Hub の前で使用する場合、インストーラーがロードバランサーの FQDN を認識している必要があります。Ansible Automation Platform をインストールする前に、インストールのインベントリーファイルで、automationhub_main_url 変数をロードバランサーの FQDN に設定してください。たとえば、前の例に合わせて、変数を automationhub_main_url = hub.example.com に設定します。
2.1.3.3. NTP リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform インフラストラクチャー内の各サーバーを、NTP プールまたは組織の NTP サービスと時刻を同期するように設定します。これにより、Ansible Automation Platform によって生成されたイベントのログと監査に正確なタイムスタンプが付けられ、Automation Controller から実行されるスケジュールされたジョブが正しい時刻に実行されます。
NTP と同期するように chrony サービスを設定する方法の詳細は、Red Hat Enterprise Linux ドキュメントの chrony の使用 を参照してください。
2.1.4. ユーザー認証の計画 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform ユーザーインターフェイスまたは API へのアクセスを計画する際、ユーザーアカウントは、ローカルのものを使用することも、LDAP などの外部認証ソースにマップすることもできます。可能であれば、すべての主なユーザーアカウントを外部認証ソースにマップすることを推奨します。外部アカウントソースを使用すると、このコンテキストで権限を操作する際のエラーの原因が排除され、Ansible Automation Platform 内ですべてのユーザーを維持するのに費やされる時間が最小限に抑えられます。これには、個人に割り当てられたアカウントだけでなく、外部アプリケーションの統合に使用されるサービスアカウントなど、個人以外のエンティティーに割り当てられたアカウントも含まれます。デフォルトの "admin" アカウントなどのローカル管理者アカウントは、外部認証メカニズムが利用できない緊急アクセスや "緊急時" のシナリオ用に予約しておきます。
Event-Driven Ansible Controller は現在外部認証をサポートしておらず、ローカルアカウントのみをサポートしています。
Ansible Automation Platform サービスを実行する Red Hat Enterprise Linux サーバー上のユーザーアカウントの場合は、組織のポリシーに従って、個々のユーザーアカウントをローカルにするか、外部認証ソースからのものにするかを決定します。Ansible Automation Platform コンポーネント自体でメンテナンスタスクを実行する必要があるユーザーのみに、基盤となる Red Hat Enterprise Linux サーバーへのアクセスを許可する必要があります。サーバーには暗号化キーやサービスパスワードなどの機密情報が含まれる設定ファイルがあるためです。このようなユーザーには Ansible Automation Platform サービスを維持するために特権アクセスを付与する必要があるため、基盤となる Red Hat Enterprise Linux サーバーへのアクセスを最小限に抑えることが重要です。root アカウントまたはローカルの Ansible Automation Platform サービスアカウント (awx、pulp、postgres) への sudo アクセスを信頼できないユーザーに付与しないでください。
awx、pulp、postgres などのローカルの Ansible Automation Platform サービスアカウントは、Ansible Automation Platform インストーラーによって作成および管理されます。基盤となる Red Hat Enterprise Linux ホスト上のこれらの特定のアカウントは、外部認証ソースから取得することはできません。
2.1.4.1. Automation Controller の認証 リンクのコピーリンクがクリップボードにコピーされました!
Automation Controller は現在、次の外部認証メカニズムをサポートしています。
- Microsoft Entra ID (以前は Microsoft Azure Active Directory と呼ばれていました)
- GitHub シングルサインオン
- Google OAuth2 シングルサインイン
- LDAP
- RADIUS
- SAML
- TACACS+
- 汎用 OIDC
組織の認証ポリシーに準拠する認証メカニズムを選択し、コントローラーの設定 - 認証に関するドキュメントを参照して、関連する認証メカニズムの前提条件を理解してください。使用する認証メカニズムは、Ansible Automation Platform と認証バックエンド間の認証関連のトラフィックが、トラフィックが公開または非セキュアなネットワークで発生する際に暗号化されるようにする必要があります(例:LDAPS または TLS 経由の LDAP、OAuth2 および SAML プロバイダーの HTTPS など)。
Automation Controller では、どの “システム管理者“ アカウントでも、インベントリーまたは自動化の定義を編集、変更、更新できます。このようなアカウント権限は、可能な限り、低レベルの Automation Controller 設定および障害復旧用の最小限のユーザーだけに制限してください。
2.1.4.2. Private Automation Hub の認証 リンクのコピーリンクがクリップボードにコピーされました!
Private Automation Hub は現在、次の外部認証メカニズムをサポートしています。
- Ansible Automation Platform Central Authentication (RHSSO ベース)
- LDAP
実稼働環境で使用する場合は、LDAP が Private Automation Hub の外部認証メカニズムとして推奨されます。Ansible Automation Platform Central Authentication は、Ansible Automation Platform インストーラーでデプロイできる選択肢です。ただし、中央認証サーバーインスタンスが 1 つしかデプロイされないため、これが単一障害点となる可能性があります。実稼働環境では、Ansible Automation Platform Central Authentication のスタンドアロンモードは推奨されません。一方、実稼働環境に別の Red Hat Single Sign-On (RHSSO) 製品がすでにデプロイされている場合は、それを Private Automation Hub の外部認証ソースとして使用できます。
Ansible Automation Platform インストーラーは、インストール中に Private Automation Hub の LDAP 認証を設定します。詳細は、Private Automation Hub での LDAP 設定 を参照してください。
インストール前に、インストーラーインベントリーファイルの次の変数を入力する必要があります。
| 変数 | 詳細 |
|---|---|
|
| LDAP 認証を使用するには、"ldap" に設定します。 |
|
| LDAP サーバーの URI (例: "ldap://ldap-server.example.com" または "ldaps://ldap-server.example.com:636")。 |
|
| LDAP サーバーへの接続に使用するアカウント。このアカウントは、LDAP サーバーにユーザーとグループをクエリーできる権限を持つアカウントである必要があります。ただし、管理者アカウントや LDAP レコードを変更できるアカウントは指定しないでください。 |
|
| バインドアカウントが LDAP サーバーにアクセスするために使用するパスワード。 |
|
| ユーザーの検索に使用するベース DN。 |
|
| グループの検索に使用するベース DN。 |
Private Automation Hub と LDAP サーバー間の LDAP トラフィックを確実に暗号化するには、LDAP サーバーが LDAP over TLS または LDAP over SSL (LDAPS) をサポートしている必要があります。
2.1.5. Ansible Automation Platform の認証情報管理の計画 リンクのコピーリンクがクリップボードにコピーされました!
Automation Controller は、マシンに対するジョブへのリクエストの認証、インベントリーソースとの同期、バージョン管理システムからのプロジェクトコンテンツのインポートに認証情報を使用します。Automation Controller は 3 つのシークレットのセットを管理します。
- ローカル Automation Controller ユーザー のユーザーパスワード。詳細は、このガイドの ユーザー認証の計画 セクションを参照してください。
- Automation Controller の 運用に使用 するシークレット (データベースのパスワード、メッセージバスのパスワードなど)。
- 自動化に使用 するシークレット (SSH キー、クラウドの認証情報、外部パスワード vault の認証情報など)。
認証情報を侵害から保護するために、特権アクセスまたは認証情報管理ソリューションを実装することを強く推奨します。アクセスおよび権限昇格の使用を監査し、追加のプログラムによる制御を提供する必要があります。
自動化認証情報が一意であることを確認し、Automation Controller にのみ保存することで、自動化認証情報のセキュリティーをさらに強化できます。OpenSSH などのサービスは、特定のアドレスからの接続時にのみ認証情報を許可するように設定できます。自動化には、システム管理者がサーバーにログインするために使用する認証情報とは異なる認証情報を使用してください。直接アクセスは可能な限り制限する必要がありますが、障害復旧やその他の臨時の管理目的に使用できるため、監査が容易になります。
自動化ジョブは、場合によっては、さまざまなレベルでシステムにアクセスする必要があります。たとえば、パッチを適用してセキュリティーベースラインチェックを実行する低レベルのシステム自動化を設定する一方で、アプリケーションをデプロイする高レベルの自動化を設定することが考えられます。自動化の各部分に異なるキーまたは認証情報を使用することにより、1 つのキーの脆弱性の影響が最小限に抑えられます。これにより、ベースライン監査も容易になります。
2.1.5.1. Automation Controller の運用に使用するシークレット リンクのコピーリンクがクリップボードにコピーされました!
Automation Controller の運用に使用するシークレットには、次のものがあります。
| ファイル | 詳細 |
|
|
データベース内の自動化シークレットを暗号化するために使用するシークレットキー。 |
|
|
Automation Controller Web サービスの SSL 証明書とキー。自己署名付きの |
|
| Automation Controller がデータベースに接続するために使用するパスワードが含まれます。 |
|
| Automation Controller が WebSocket ブロードキャストに使用するシークレットが含まれます。 |
これらのシークレットは暗号化されずに Automation Controller サーバーに保存されます。Automation Controller サービスが起動時にこれらをすべて自動的に読み取る必要があるためです。すべてのファイルは、Unix パーミッションによって保護され、root ユーザーまたは Automation Controller サービスユーザー awx に制限されます。これらのファイルは定期的に監視して、不正なアクセスや変更が行われていないことを確認する必要があります。
Automation Controller は以前は Ansible Tower という名前でした。これらのファイルの場所には、以前の製品名がそのまま使用されています。
2.1.5.2. 自動化に使用するシークレット リンクのコピーリンクがクリップボードにコピーされました!
Automation Controller は、自動化に使用するシークレットや、自動化の結果であるさまざまなシークレットをデータベースに保存します。自動化に使用するシークレットには、次のものがあります。
- すべての認証情報タイプの全シークレットフィールド (パスワード、シークレットキー、認証トークン、シークレットクラウド認証情報)。
- Automation Controller 設定で定義された外部サービスのシークレットトークンとパスワード。
- “password” タイプのサーベイフィールドのエントリー。
実際に認証情報をユーザーに公開せずに、ユーザーとチームにこれらの認証情報を使用する権限を付与できます。そのため、ユーザーが別のチームに移動したり、組織を離れたりした場合も、すべてのシステムのキーを再設定する必要はありません。
Automation Controller は、SSH (または Windows の同等のもの) を使用してリモートホストに接続します。キーを Automation Controller から SSH に渡すには、キーを復号化してから名前付きパイプに書き込む必要があります。Automation Controller はそのパイプを使用してキーを SSH に送信します (キーがディスクに書き込まれることはありません)。パスワードが使用されている場合、Automation Controller はパスワードプロンプトに直接応答し、パスワードを復号化してからプロンプトに書き込むことでパスワードを処理します。
スーパーユーザーアクセス権を持つ管理者は、YAML/JSON のような定義を使用して標準形式でカスタム認証情報タイプを定義し、ジョブやインベントリー更新に新しい認証情報タイプを割り当てることができます。これにより、既存の認証情報タイプと同様の方法で機能するカスタム認証情報タイプを定義できます。たとえば、サードパーティー Web サービスの API トークンを環境変数に挿入するカスタム認証情報タイプを作成し、Playbook またはカスタムインベントリースクリプトで使用できます。
シークレットフィールドを暗号化するために、Ansible Automation Platform は、暗号化用の 256 ビットキーを使用した CBC モードの AES、PKCS7 パディング、および認証用の SHA256 を使用した HMAC を使用します。暗号化/復号化プロセスでは、SECRET_KEY、モデルフィールドのフィールド名、およびデータベースによって割り当てられた自動増分レコード ID から AES-256 ビット暗号化キーが導出されます。したがって、キー生成プロセスで使用される属性が変更された場合、Ansible Automation Platform はシークレットを正しく復号化できません。Ansible Automation Platform が起動する Playbook では SECRET_KEY が読み取れないように設計されているため、Ansible Automation Platform ユーザーがこれらのシークレットを読み取ることはできません。また、Ansible Automation Platform REST API を通じてシークレットフィールド値が利用可能になることもありません。Playbook でシークレット値が使用されている場合は、誤ってログに記録されないように、タスクで no_log を使用する必要があります。詳細は、Protecting sensitive data with no log を参照してください。
2.1.6. ロギングとログキャプチャー リンクのコピーリンクがクリップボードにコピーされました!
可視性と分析は、エンタープライズセキュリティーとゼロトラストアーキテクチャーを支える重要な柱です。ロギングは、動作を記録して監査するうえで重要です。Red Hat Enterprise Linux の「セキュリティーの強化ガイド」の システムの監査 セクションで説明されているビルトインの監査サポートを使用して、ロギングと監査を管理できます。Controller のビルトインロギングとアクティビティーストリームは、監査目的で使用する Automation Controller 内のすべての変更ログと自動化ログの記録をサポートします。詳細は、Automation Controller ドキュメントの Logging and Aggregation セクションを参照してください。
Ansible Automation Platform と基盤となる Red Hat Enterprise Linux システムを設定する際には、ログと監査をローカルシステムで確認するのではなく、一元的に収集するように設定することを推奨します。Automation Controller は、外部のロギングを使用して、Controller サーバー内の複数のコンポーネントからのログレコードを収集するように設定する必要があります。正確なフォレンジック分析を行うには、発生したイベントが時間と関連付けられている必要があります。そのため、Controller サーバーは、Controller のターゲットだけでなく、ロギングアグリゲーターサービスでも使用される NTP サーバーを使用して設定する必要があります。時間との関連付けは、業界の一定の許容要件を満たしている必要があります。つまり、ログに記録されたさまざまなイベントのタイムスタンプが X 秒を超えて異なってはならないなど、さまざまな要件が存在する可能性があります。このような機能は外部のロギングサービスで利用できます。
ロギングのもう 1 つの重要な機能は、暗号化を使用してログツールの整合性を保護する機能です。ログデータには、情報システムのアクティビティーを正常に記録するために必要なすべての情報 (ログレコード、ログ設定、ログレポートなど) が含まれます。一般的に、攻撃者はログツールを置き換えたり、既存のツールにコードを挿入したりして、システムアクティビティーをログから隠したり消去したります。このリスクに対処するには、ログツールがいつ変更、操作、または置換されたかを識別できるように、ログツールに暗号で署名する必要があります。ログツールが変更、操作、または置換されていないことを検証する方法としては、たとえば、ツールファイルに対してチェックサムハッシュを使用する方法があります。これにより、ツールの整合性が損なわれていないことが確認されます。
2.1.7. 監査とインシデント検出 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform は、次のような一般的なユースケースに NIST サイバーセキュリティーフレームワークを適用して、セキュリティーポリシー要件を満たすように使用する必要があります。
- Red Hat Enterprise Linux 上の Web サーバーで HTTPS を必須にする。
- Red Hat Enterprise Linux 上の Web サーバーとデータベースサーバー間の内部通信で TLS 暗号化を必須にする。
- ポリシーが適切にデプロイされていることを示すレポートを生成する。
- ポリシーに違反するドリフトを監視する。
- ポリシー違反の修正を自動化する。
これは、サイバーセキュリティーフレームワークの 5 つのステップを通じて実行できます。
- 識別
- セキュリティーポリシーに従って実装すべき要件を定義します。
- 防御
- 要件を Ansible Playbook として実装して適用します。
- 検知
- ドリフトを監視し、監査レポートを生成します。
- 対応
- インシデントが検出されたときに実行できるアクションを検討します。
- 復旧
- Ansible を使用して、システムを既知の正常な設定に復元します。
2.1.8. Red Hat Enterprise Linux ホストの計画 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform のセキュリティーは、基盤となる Red Hat Enterprise Linux サーバーの設定に部分的に依存します。このため、各 Ansible Automation Platform コンポーネントの基盤となる Red Hat Enterprise Linux ホストは、Red Hat Enterprise Linux 8 セキュリティー強化 または Red Hat Enterprise Linux 9 セキュリティー強化 (使用するオペレーティングシステムによって異なります) および組織で使用するセキュリティープロファイル要件 (CIS、STIG、HIPAA など) に従ってインストールおよび設定する必要があります。
STIG または他のセキュリティープロファイルから特定のセキュリティー制御を適用すると、Ansible Automation Platform のサポート要件と競合する可能性があることに注意してください。Automation Controller STIG に関する考慮事項 セクションにいくつかの例が挙げられていますが、これは完全なリストではありません。サポート対象の設定を維持するために、セキュリティー監査者とそのような競合について必ず相談し、Ansible Automation Platform の要件について理解と承認を得てください。
2.1.8.1. Ansible Automation Platform と追加のソフトウェア リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform コンポーネントを Red Hat Enterprise Linux サーバーにインストールする場合、Red Hat Enterprise Linux サーバーはその用途専用にする必要があります。Ansible Automation Platform の他に追加のサーバー機能をインストールすることは避けてください。これはサポート対象外の設定であり、Ansible Automation Platform ソフトウェアのセキュリティーとパフォーマンスに影響を与える可能性があります。
同様に、Ansible Automation Platform を Red Hat Enterprise Linux ホストにデプロイすると、nginx Web サーバー、Pulp ソフトウェアリポジトリー、PostgreSQL データベースサーバーなどのソフトウェアがインストールされます。このソフトウェアを変更することや、一般的な方法で使用することは避けてください (たとえば、nginx を使用して追加の Web サイトコンテンツをサーバーに追加したり、PostgreSQL を使用して追加のデータベースをホストしたりしないでください)。これはサポート対象外の設定であり、セキュリティーとパフォーマンスに影響を与える可能性があります。このソフトウェアの設定は Ansible Automation Platform インストーラーによって管理されます。アップグレードを実行すると、手動による変更が元に戻される可能性があります。
2.2. インストール リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform のセキュリティー体制に影響を与えるインストール時の決定がいくつかあります。インストールプロセスには多数の変数の設定が含まれます。その一部は Ansible Automation Platform インフラストラクチャーのハードニングに関連します。Ansible Automation Platform をインストールする前に、このガイドのインストールセクションのガイダンスを考慮してください。
2.2.1. 専用のインストールホストからのインストール リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform インストーラーは、Automation Controller などのインフラストラクチャーサーバーの 1 つから、または Ansible Automation Platform のインフラストラクチャーサーバーに SSH アクセスできる外部システムから実行できます。Ansible Automation Platform インストーラーは、インストールだけでなく、バックアップや復元、アップグレードなどのその後の Day 2 オペレーションにも使用されます。インストールと Day 2 オペレーションは、専用の外部サーバー (以降、インストールホストと呼びます) から実行することを推奨します。そうすることで、これらの機能を実行するためにインフラストラクチャーサーバーの 1 つにログインする必要がなくなります。インストールホストは、Ansible Automation Platform の管理にのみ使用してください。インストールホストで他のサービスやソフトウェアを実行しないでください。
インストールホストは、Red Hat Enterprise Linux セキュリティー強化 および組織に関連するセキュリティープロファイル要件 (CIS、STIG など) に従ってインストールおよび設定された Red Hat Enterprise Linux サーバーである必要があります。Automation Platform 計画ガイド の説明に従って Ansible Automation Platform インストーラーを入手し、Automation Platform インストールガイド の説明に従ってインストーラーインベントリーファイルを作成します。このインベントリーファイルは、インストーラーによるアップグレード、インフラストラクチャーコンポーネントの追加、および Day 2 運用に使用されるため、今後の運用に使用できるようにインストール後にファイルを保存してください。
インストールホストへのアクセスは、Ansible Automation Platform インフラストラクチャーの管理を担当する担当者のみに制限する必要があります。インストールホストには、時間の経過とともに、インストーラーインベントリー (これには Ansible Automation Platform の初期ログイン認証情報が含まれます)、ユーザーが提供した PKI 鍵と証明書のコピー、バックアップファイルなどの機密情報が格納されます。インストールホストは、インフラストラクチャーの管理と保守に必要な場合、SSH 経由で Ansible Automation Platform インフラストラクチャーサーバーにログインするときにも使用する必要があります。
2.2.2. インストールインベントリー内のセキュリティー関連の変数 リンクのコピーリンクがクリップボードにコピーされました!
インストールインベントリーファイルは、Ansible Automation Platform インフラストラクチャーのアーキテクチャーを定義し、インフラストラクチャーコンポーネントの初期設定を変更するために使用できる多数の変数を提供します。インストーラーインベントリーの詳細は、Ansible Automation Platform インストールガイド を参照してください。
次の表に、いくつかのセキュリティー関連の変数と、インストールインベントリーの作成に推奨される値を示します。
| 変数 | 推奨値 | 詳細 |
|
| true | この変数を設定すると、インストーラーは、SSL ベースの接続を受け入れるように、インストーラーによって管理される Postgres データベースを設定します。 |
|
| verify-full |
デフォルトでは、Controller はデータベースに接続するときに暗号化された接続を試行しますが、強制はしません。この変数を "verify-full" に設定するには、Controller とデータベースの間で相互 TLS ネゴシエーションが必要です。この 注記: インストーラーによって管理されるデータベースの代わりにサードパーティーのデータベースを使用する場合は、mTLS 接続を受け入れるようにサードパーティーのデータベースを個別にセットアップする必要があります。 |
|
| false | この変数を "true" に設定すると、Controller への HTTPS 接続が無効になります。デフォルトは "false" であるため、この変数がインストーラーインベントリーにない場合、変数を明示的に "false" に定義することと実質的に同じになります。 |
|
| false | この変数を "true" に設定すると、Private Automation Hub への HTTPS 接続が無効になります。デフォルトは "false" であるため、この変数がインストーラーインベントリーにない場合、変数を明示的に "false" に定義することと実質的に同じになります。 |
|
| false | この変数を "true" に設定すると、Event-Driven Ansible Controller への HTTPS 接続が無効になります。デフォルトは "false" であるため、この変数がインストーラーインベントリーにない場合、変数を明示的に "false" に定義することと実質的に同じになります。 |
複数の Controller または Hub でロードバランサーを使用するリファレンスアーキテクチャーのようなシナリオでは、SSL クライアント接続をロードバランサーで終了することも、個々の Ansible Automation Platform サーバーにパススルーすることもできます。SSL をロードバランサーで終了する場合は、エンドツーエンドの暗号化が確実に使用されるように、ロードバランサーから個々の Ansible Automation Platform サーバーへのトラフィックを再暗号化することを推奨します。このようなシナリオでは、表 2.3 にリストされている *_disable_https 変数は、デフォルト値の "false" のままにします。
このガイドでは、実稼働環境で外部データベースを使用することを推奨していますが、開発およびテストのシナリオでは、データベースを Automation Controller 上に共存させることもできます。現在の PostgreSQL 13 の制限により、データベースが Automation Controller 上に共存しているときに pg_sslmode = verify-full を設定すると、TLS ネゴシエーション中にホスト名の検証でエラーが発生します。この問題が解決されるまでは、外部データベースを使用して、Automation Controller とデータベース間の相互 TLS 認証を確保する必要があります。
2.2.3. ユーザー提供の PKI 証明書を使用したインストール リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Ansible Automation Platform は、プラットフォームのインフラストラクチャーコンポーネント用の自己署名 PKI 証明書を作成します。既存の PKI インフラストラクチャーが利用可能な場合は、Automation Controller、Private Automation Hub、Event-Driven Ansible Controller、および postgres データベースサーバー用の証明書を生成する必要があります。証明書ファイルとその関連キーファイルを、証明書の検証に使用する CA 証明書とともにインストーラーディレクトリーにコピーします。
次のインベントリー変数を使用し、新しい証明書を使用してインフラストラクチャーコンポーネントを設定します。
| 変数 | 詳細 |
|
| インストーラーディレクトリーにある CA 証明書のファイル名。 |
|
| インストーラーディレクトリーにある Automation Controller の PKI 証明書のファイル名。 |
|
| インストーラーディレクトリーにある Automation Controller の PKI キーのファイル名。 |
|
| インストーラーディレクトリーにある Private Automation Hub の PKI 証明書のファイル名。 |
|
| インストーラーディレクトリーにある Private Automation Hub の PKI キーのファイル名。 |
|
| インストーラーディレクトリーにあるデータベースサーバーの PKI 証明書のファイル名。この変数は、インストーラーによって管理されるデータベースサーバーにのみ必要です。サードパーティーのデータベースを使用する場合は不要です。 |
|
| インストーラーディレクトリーにあるデータベースサーバーの PKI 証明書のファイル名。この変数は、インストーラーによって管理されるデータベースサーバーにのみ必要です。サードパーティーのデータベースを使用する場合は不要です。 |
|
| インストーラーディレクトリーにある Event-Driven Ansible Controller の PKI 証明書のファイル名。 |
|
| インストーラーディレクトリーにある Event-Driven Ansible Controller の PKI キーのファイル名。 |
複数の Automation Controller をロードバランサーとともにデプロイした場合、web_server_ssl_cert と web_server_ssl_key は各 Controller で共有されます。ホスト名の不一致を防ぐには、証明書の共通名 (CN) がロードバランサーで使用する DNS FQDN と一致する必要があります。これは、複数の Private Automation Hub と、automationhub_ssl_cert および automationhub_ssl_key 変数をデプロイする場合にも当てはまります。組織のポリシーでサービスごとに固有の証明書が必要な場合、各証明書には、負荷分散サービスで使用する DNS FQDN と一致するサブジェクト代替名 (SAN) が必要です。各 Automation Controller に固有の証明書とキーをインストールするには、インストールインベントリーファイル内の証明書とキーの変数を、[all:vars] セクション内にではなく、ホストごとの変数として定義する必要があります。以下に例を示します。
[automationcontroller] controller0.example.com web_server_ssl_cert=/path/to/cert0 web_server_ssl_key=/path/to/key0 controller1.example.com web_server_ssl_cert=/path/to/cert1 web_server_ssl_key=/path/to/key1 controller2.example.com web_server_ssl_cert=/path/to/cert2 web_server_ssl_key=/path/to/key2
[automationcontroller]
controller0.example.com web_server_ssl_cert=/path/to/cert0 web_server_ssl_key=/path/to/key0
controller1.example.com web_server_ssl_cert=/path/to/cert1 web_server_ssl_key=/path/to/key1
controller2.example.com web_server_ssl_cert=/path/to/cert2 web_server_ssl_key=/path/to/key2
[automationhub] hub0.example.com automationhub_ssl_cert=/path/to/cert0 automationhub_ssl_key=/path/to/key0 hub1.example.com automationhub_ssl_cert=/path/to/cert1 automationhub_ssl_key=/path/to/key1 hub2.example.com automationhub_ssl_cert=/path/to/cert2 automationhub_ssl_key=/path/to/key2
[automationhub]
hub0.example.com automationhub_ssl_cert=/path/to/cert0 automationhub_ssl_key=/path/to/key0
hub1.example.com automationhub_ssl_cert=/path/to/cert1 automationhub_ssl_key=/path/to/key1
hub2.example.com automationhub_ssl_cert=/path/to/cert2 automationhub_ssl_key=/path/to/key2
2.2.4. インストールインベントリー内の機密性の高い変数 リンクのコピーリンクがクリップボードにコピーされました!
インストールインベントリーファイルには、主に Ansible Automation Platform が使用する初期パスワードの設定に使用される機密性の高い変数が多数含まれています。これらの変数は、通常はインベントリーファイル内にプレーンテキストで保存されます。これらの変数の不正な表示を防ぐために、暗号化された Ansible vault に変数を保存できます。これを行うには、インストーラーディレクトリーに移動し、vault ファイルを作成します。
-
cd /path/to/ansible-automation-platform-setup-bundle-2.4-1-x86_64 -
ansible-vault create vault.yml
新しい Ansible vault へのパスワードの入力を求められます。vault のパスワードは、Day 2 運用やバックアップ手順の実行時など、vault ファイルにアクセスする必要があるたびに必要になるため、紛失しないように注意してください。vault のパスワードは、暗号化されたパスワードマネージャーに保存するか、パスワードをセキュアに保存するための組織のポリシーに従ってセキュリティー保護することができます。
機密性の高い変数を vault に追加します。次に例を示します。
これらの変数がインストールインベントリーファイルにも含まれていないことを確認してください。インストーラーで新しい Ansible vault を使用するには、コマンド ./setup.sh -e @vault.yml — --ask-vault-pass 使用してインストーラーを実行します。
2.2.5. Automation Controller STIG に関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
組織全体のセキュリティー戦略の一部として米国国防情報システム局 (DISA) の Security Technical Implementation Guides (STIG) を使用している場合は、Ansible Automation Platform Automation Controller 向け STIG を利用できるようになりました。現時点では、STIG は Ansible Automation Platform の Automation Controller コンポーネントにのみ対応しています。STIG を Automation Controller に適用する場合、留意すべき考慮事項がいくつかあります。
Automation Controller STIG の概要ドキュメントには、Red Hat Enterprise Linux 8 の STIG と組み合わせて使用することを想定していると記載されています。このバージョンの Automation Controller STIG は、Red Hat Enterprise Linux 9 の STIG が利用可能になる前にリリースされたため、Automation Controller STIG を適用する場合は、基盤となるホスト OS として Red Hat Enterprise Linux 8 を使用する必要があります。Red Hat Enterprise Linux 8 STIG の一部のコントロールは、Ansible Automation Platform のインストールおよび操作と競合します。ただし、これは次のセクションで説明するように軽減することができます。
2.2.5.1. fapolicyd リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 8 STIG は、fapolicyd デーモンの実行を要求します。しかし、fapolicyd ポリシーを適用すると、Ansible Automation Platform のインストールおよび操作中にエラーが発生するため、fapolicyd ポリシー適用時の Ansible Automation Platform は、現在サポート対象外となっています。このため、インストーラーは、fapolicyd がポリシーを適用していることを検出した場合にインストールを停止するプリフライトチェックを実行します。次の手順を使用して、Automation Controller で fapolicyd を permissive モードに設定することを推奨します。
-
ファイル
/etc/fapolicyd/fapolicyd.confを編集し、"permissive = 1" を設定します。 -
コマンド
sudo systemctl restart fapolicyd.serviceを使用してサービスを再起動します。
STIG コントロールが定期的に監査される環境では、fapolicy 関連の STIG コントロールの免除についてセキュリティー監査者と相談してください。
Red Hat Enterprise Linux 8 STIG がインストールホストにも適用されている場合、デフォルトの fapolicyd 設定により Ansible Automation Platform インストーラーが失敗します。この場合、インストールホスト上で fapolicyd を permissive モードに設定することを推奨します。
2.2.5.2. "noexec" でマウントされたファイルシステム リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 8 STIG は、多くのファイルシステムを noexec オプションを使用してマウントすることを要求します。これは、これらのファイルシステムにあるバイナリーの実行を防ぐためです。Ansible Automation Platform インストーラーは、次のいずれかのファイルシステムが noexec オプションを使用してマウントされている場合、プリフライトチェックを実行しますが、失敗します。
-
/tmp -
/var -
/var/tmp
Ansible Automation Platform をインストールするには、noexec オプションを削除してこれらのファイルシステムを再マウントする必要があります。インストールが完了したら、次の手順に進みます。
-
noexecオプションを/tmpおよび/var/tmpファイルシステムに再適用します。 -
Automation Controller ジョブの実行パスを
/tmpから、noexecオプションが有効になっていない代替ディレクトリーに変更します。 - この変更を行うには、Automation ControllerUI に管理者としてログインし、 に移動して Jobs settings を選択します。
- "Job execution path" 設定を代替ディレクトリーに変更します。
通常の運用中は、/var/lib/awx サブディレクトリー (通常は /var) を含むファイルシステムを noexec オプションを使用してマウントしないでください。使用すると、Automation Controller が実行環境で自動化ジョブを実行できません。
STIG コントロールが定期的に監査される環境では、ファイルシステム noexec に関連する STIG コントロールの免除についてセキュリティー監査者と相談してください。
2.2.5.3. ユーザー名前空間 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 8 STIG は、カーネル設定 user.max_user_namespaces を "0" に設定することを要求します。ただし、これは Linux コンテナーを使用していない場合に限ります。Ansible Automation Platform は実行環境機能の一部としてコンテナーを使用するため、この STIG コントロールは Automation Controller には適用されません。
user.max_user_namespaces カーネル設定を確認するには、次の手順を実行します。
- コマンドラインで Automation Controller にログインします。
-
コマンド
sudo sysctl user.max_user_namespacesを実行します。 -
値がゼロであることが出力に示された場合は、ファイル
/etc/sysctl.confの内容と/etc/sysctl.d/の下のすべてのファイルを確認し、user.max_user_namespaces設定を含むファイルを編集して、値を "65535" に設定します。 -
この新しい値を適用するために、コマンド
sudo sysctl -p <file>を実行します。<file>は直前に変更したファイルです。 -
コマンド
sudo sysctl user.max_user_namespacesを再実行し、値が "65535" に設定されていることを確認します。
2.2.5.4. sudo と NOPASSWD リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 8 STIG は、sudo 権限を持つすべてのユーザーがパスワードを入力することを要求します (つまり、sudoers ファイルで "NOPASSWD" ディレクティブを使用することはできません)。Ansible Automation Platform インストーラーは、特権ユーザーとして多くのタスクを実行し、パスワードなしで特権を昇格できることをデフォルトで想定しています。権限を昇格するためにインストーラーにパスワードを提供するには、インストーラースクリプトの起動時にオプション ./setup.sh <setup options> — –-ask-become-pass を追加します。
これは、バックアップや復元などの Day 2 運用でインストーラースクリプトを実行するときにも当てはまります。
2.3. 初期設定 リンクのコピーリンクがクリップボードにコピーされました!
システムの特定の部分へのアクセスを許可すると、セキュリティーの脆弱性が露呈します。アクセスのセキュリティーを確保するために、次のプラクティスを適用してください。
- システム管理アカウントへのアクセスは最小限に抑えます。ユーザーインターフェイス (Web インターフェイス) と、Automation Controller が実行されているオペレーティングシステムへのアクセスには違いがあります。システム管理者または root ユーザーは、あらゆるシステムアプリケーションにアクセス、編集、および中断できます。Controller への root アクセス権を持つユーザーは、これらの認証情報を復号化できる可能性があります。そのため、システム管理アカウントへのアクセスを最小限に抑えることが、セキュアなシステムを維持するうえで重要です。
- ローカルシステムへのアクセスを最小限に抑えます。Automation Controller は、管理目的以外のローカルユーザーアクセスを必要としません。管理者以外のユーザーに Controller システムへのアクセス権を付与しないでください。
- 職務の分離を徹底します。自動化の各コンポーネントは、場合によっては、さまざまなレベルでシステムにアクセスする必要があります。コンポーネントごとに異なるキーまたは認証情報を使用して、1 つのキーまたは認証情報の脆弱性による影響を最小限に抑えてください。
- Automation Controller を、可能な限り、低レベルの Controller 設定および障害復旧専用の最小限のユーザーだけに制限します。Controller のコンテキストでは、Controller の ‘システム管理者’ または ‘スーパーユーザー’ アカウントが、Controller 内のインベントリーまたは自動化定義を編集、変更、および更新できます。
2.3.1. インフラストラクチャーをコードパラダイムとして使用する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Community of Practice は、Ansible Automation Platform インフラストラクチャーと設定をコードとして管理するために、コレクションを通じて利用できる自動化コンテンツセットを作成しました。これにより、Infrastructure as Code (IaC) または Configuration as Code (CaC) を通じてプラットフォーム自体の自動化が可能になります。このアプローチの多くの利点は明白ですが、一方で考慮すべき重要なセキュリティー上の影響もあります。
以下の Ansible コンテンツコレクションは、Infrastructure as Code 手法を使用した Ansible Automation Platform コンポーネントの管理に利用できます。これらはすべて Ansible Automation Hub にあります。
| 検証済みコレクション | コレクションの目的 |
|
| インストール、バックアップと復元、証明書管理など、Ansible Automation Platform の Day 1 および Day 2 オペレーションを自動化するための Ansible コンテンツ。 |
|
| ユーザーとグループ (RBAC)、プロジェクト、ジョブテンプレートとワークフロー、認証情報などの管理を含む、Automation Controller コンポーネントを管理するためのロールのコレクション。 |
|
| ユーザーとグループ (RBAC)、コレクションのアップロードと管理、コレクションの承認、実行環境イメージレジストリーの管理など、Automation Hub と対話するための Ansible コンテンツ。 |
|
| 実行環境イメージの作成と管理、または古い Tower virtualenvs から実行環境への移行のためのロールのコレクション。 |
多くの組織では、CI/CD プラットフォームを使用してパイプラインを設定するか、その他の方法を使用してこの種のインフラストラクチャーを管理しています。一方、Ansible Automation Platform をネイティブで使用すると、Git ベースのリポジトリーにネイティブにリンクするように Webhook を設定できます。そのため、Ansible は git イベントに応答してジョブテンプレートを直接トリガーできます。これにより、このプロセス全体から外部の CI コンポーネントが不要になるため、攻撃対象領域が減少します。
これらのプラクティスにより、すべてのインフラストラクチャーと設定のバージョン管理が可能になります。Git のベストプラクティスを適用して、適切なコード品質検査を実現してから、Ansible Automation Platform に同期してください。関連する Git のベストプラクティスには次のようなものがあります。
- プルリクエストを作成します。
- 検査ツールが適切に整備されていることを確認します。
- プレーンテキストのシークレットがコミットされないようにします。
- コミット前のフックとその他のポリシーが遵守されていることを確認します。
IaC では、外部 vault システムの使用も推奨しています。これにより、機密データをリポジトリーに保存したり、必要に応じてファイルを個別に vault に保存する必要がなくなります。外部 vault システムの使用の詳細は、このガイドのセクション 2.3.2.3 外部の認証情報 vault に関する考慮事項 を参照してください。
2.3.2. Controller の設定 リンクのコピーリンクがクリップボードにコピーされました!
2.3.2.1. 一元的なロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
ロギングの重要な機能は、ストレージ容量の不足などの障害を Automation Controller が検出して軽減するためのアクションを実行する機能です。容量の不足が発生すると、デフォルトでは Controller がシャットダウンします。アプリケーションサーバーは、高可用性システムの一部とすることを推奨します。このような場合、Automation Controller は障害を軽減するために次の手順を実行します。
- 障害の原因がログレコードのストレージ容量の不足である場合、アプリケーションは可能であればログレコードの生成を続行し (必要に応じてログサービスを自動的に再起動し)、最も古いログレコードを先入れ先出し方式で上書きする必要があります。
- ログレコードが一元収集サーバーに送信され、このサーバーとの通信が失われるかサーバーに障害が発生した場合、通信が回復するかログレコードが手動で取得されるまで、アプリケーションはログレコードをローカルでキューに入れる必要があります。一元収集サーバーへの接続が回復したら、ローカルログデータを収集サーバーと同期するためのアクションを実行する必要があります。
各 Automation Controller ホストの rsyslog 設定を確認するには、Automation Controller ごとに次の手順を実行します。
管理者は、各 Automation Controller ホストの rsyslog 設定をチェックして、組織で定義したログキャプチャーサイズに対してログロールオーバーを検証する必要があります。これを行うには、次の手順を実行し、必要に応じて設定手順を使用して修正します。
Automation Controller 設定の
LOG_AGGREGATOR_ACTION_MAX_DISK_USAGE_GBフィールドを確認します。ホスト上で、次のコマンドを実行します。awx-manage print_settings LOG_AGGREGATOR_ACTION_MAX_DISK_USAGE_GB
awx-manage print_settings LOG_AGGREGATOR_ACTION_MAX_DISK_USAGE_GBCopy to Clipboard Copied! Toggle word wrap Toggle overflow このフィールドが、組織で定義したログキャプチャーサイズに設定されていない場合は、設定手順に従います。
Automation Controller 設定の
LOG_AGGREGATOR_MAX_DISK_USAGE_PATHフィールドで、ログファイルの場所が/var/lib/awxに設定されていることを確認します。ホスト上で、次のコマンドを実行します。awx-manage print_settings LOG_AGGREGATOR_MAX_DISK_USAGE_PATH
awx-manage print_settings LOG_AGGREGATOR_MAX_DISK_USAGE_PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow このフィールドが
/var/lib/awxに設定されていない場合は、次の設定手順に従います。- Web ブラウザーを開き、https://<automation controller server>/api/v2/settings/logging/ に移動します。<automation controller server> は、Automation Controller の完全修飾ホスト名です。 オプションが表示された場合は、それをクリックし、Automation Controller 管理者アカウントとしてログインして、続行します。
コンテンツセクションで次の値を変更し、 をクリックします。
- LOG_AGGREGATOR_ACTION_MAX_DISK_USAGE_GB = <new log buffer in GB>
-
LOG_AGGREGATOR_MAX_DISK_USAGE_PATH =
/var/lib/awx
負荷分散シナリオでは、この変更を各 Automation Controller で行う必要があることに注意してください。
可視性と分析のためのトラブルシューティング、デバッグ、フォレンジック分析をサポートするには、すべてのユーザーセッションデータをログに記録する必要があります。Controller の Web サーバーからこのデータを取得しないと、イベント調査のための重要な監査と分析が実現しません。ユーザーセッションデータを記録するようにシステムが設定されていることを確認するには、次の手順を実行します。
各 Automation Controller ホストで、コンソールの Settings >> System >> Miscellaneous System に移動します。
- をクリックします。
以下を設定します。
- Enable Activity Stream = On
- Enable Activity Stream for Inventory Sync = On
- Organization Admins Can Manage Users and Teams = Off
- All Users Visible to Organization Admins = On
- をクリックします。
アグリゲータータイプへのロギングを設定するには、サポート対象のログアグリゲーター に関するドキュメントを参照し、次の手順を使用してログアグリゲーターを設定します。
- Ansible Automation Platform に移動します。
- をクリックします。
- System オプションのリストで、Logging 設定を選択します。
- Logging 設定画面の下部にある をクリックします。
表示されたフィールドで設定可能なオプションを設定します。
- Enable External Logging: ログを外部ログアグリゲーターに送信する場合は、トグルボタンをクリックして にします。これを完了する前に、UI で Logging Aggregator フィールドと Logging Aggregator Port フィールドに値を入力する必要があります。
- Logging Aggregator: ログを送信するホスト名または IP アドレスを入力します。
- Logging Aggregator Port: アグリゲーターのポートが必要な場合は、ポートを指定します。
Logging Aggregator Type: ドロップダウンメニューからアグリゲーターサービスを選択します。
- Splunk
- Loggly
- Sumologic
- Elastic stack (以前の ELK stack)
- Logging Aggregator Username: 必要に応じて、ロギングアグリゲーターのユーザー名を入力します。
- Logging Aggregator Password/Token: 必要に応じて、ロギングアグリゲーターのパスワードを入力します。
- Log System Tracking Facts Individually: ツールチップアイコンをクリックすると、オンに切り替えるか、デフォルトのままオフにしておくかなど、追加情報が表示されます。
- Logging Aggregator Protocol: ログアグリゲーターと通信するための接続タイプ (プロトコル) を選択します。その後に表示されるオプションは、選択したプロトコルによって異なります。
- Logging Aggregator Level Threshold: ログハンドラーで報告する重大度のレベルを選択します。
- TCP Connection Timeout: 接続タイムアウトを秒単位で指定します。このオプションは、HTTPS および TCP ログアグリゲータープロトコルにのみ適用されます。
- Enable/disable HTTPS certificate verification: HTTPS ログプロトコルの証明書検証はデフォルトで有効になっています。接続を確立する前に、外部ログアグリゲーターによって送信された HTTPS 証明書をログハンドラーで検証しない場合は、トグルボタンをクリックして にします。
- Loggers to Send Data to the Log Aggregator Form: デフォルトでは、4 種類のデータすべてが事前に入力されています。各データ型の追加情報を表示するには、フィールドの横にあるツールチップアイコンをクリックします。不要なデータ型を削除します。
- Log Format For API 4XX Errors: 特定のエラーメッセージを設定します。
- をクリックして設定を適用するか、 をクリックして変更を破棄します。
- 設定が正しく設定されているかどうかを確認するには、 で保存してから をクリックします。すると、Automation Controller の現在のロギング設定を使用して、テストログメッセージがログアグリゲーターに送信されます。このテストメッセージが外部ログアグリゲーターによって受信されたことを確認する必要があります。
Automation Controller アカウントが、LDAP ユーザー名とパスワードを使用してログインするユーザーに対して自動的に作成されます。これらのユーザーは、通常のユーザーまたは組織管理者として組織に自動的に配置されます。そのため、LDAP 統合を使用する場合はロギングをオンにする必要があります。LDAP のログを有効にするのと同じ方法で、SAML アダプターのメッセージのロギングを有効にできます。
次の手順で LDAP ロギングを有効にします。
LDAP のロギングを有効にするには、設定ウィンドウでレベルを DEBUG に設定する必要があります。
- 左側のナビゲーションペインで をクリックし、System オプションリストから Logging を選択します。
- をクリックします。
- Logging Aggregator Level Threshold フィールドを Debug に設定します。
- をクリックして変更を保存します。
2.3.2.2. 外部認証ソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザー認証の計画 セクションで説明したように、Automation Controller へのユーザーアクセスには外部認証が推奨されます。ニーズに最適な認証タイプを選択したら、 → → → 接続の関連する手順に従います。
Automation Controller で外部認証に LDAP を使用する場合は、 に移動して Authentication を選択し、Automation Controller で LDAP 設定 を選択して、次のいずれかが設定されていることを確認します。
-
LDAP over SSL の場合、LDAP サーバーの URI 設定は
ldaps://`で始まり、ポート 636 を使用する必要があります (例:ldaps://ldap-server.example.com:636)。 - LDAP over TLS の場合、LDAP Start TLS 設定を "On" に設定する必要があります。
2.3.2.3. 外部の認証情報 vault に関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
シークレット管理は、Automation Platform のセキュリティーを維持するために不可欠なコンポーネントです。次のシークレット管理プラクティスを推奨します。
- システムへのアクセス権を持つ無許可のユーザーが存在しないことを確認し、アクセスを必要とするユーザーのみにアクセスが許可されていることを確認します。Automation Controller は、パスワードや API トークンなどの機密情報を暗号化しますが、復号化するためのキーも保存します。許可されたユーザーはあらゆるものにアクセスできる可能性があります。
- 外部システムを使用してシークレットを管理します。認証情報を更新する必要がある場合、外部システムは、内部システムよりも簡単に更新された認証情報を取得できます。シークレットを管理するための外部システムには、CyberArk、HashiCorp Vault、Microsoft Azure Key Management などがあります。詳細は、「Automation Controller User Guide v4.4」の Secret Management System セクションを参照してください。
2.4. Day 2 運用 リンクのコピーリンクがクリップボードにコピーされました!
Day 2 運用には、ホスト、プロジェクト、環境レベルの維持を含むクラスターのヘルスチェックとスケーリングチェックが含まれます。設定とセキュリティーのドリフトを継続的に分析する必要があります。
2.4.1. RBAC に関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、Automation Controller に組み込まれているロールベースのアクセス制御 (RBAC) を使用して、サーバーインベントリー、組織などへのアクセスを委譲できます。管理者はさまざまな認証情報の管理を一元化することもできます。管理を一元化することで、エンドユーザーが必要なシークレットをエンドユーザー自身に表示することなく利用できるようになります。RBAC コントロールを使用すると、Controller でセキュリティーを強化し、管理を合理化できます。
RBAC は、ユーザーまたはチームにロールを付与する方法です。RBAC は、ロールの観点から考えるのが最も簡単です。ロールは、特定の機能が設定されている “オブジェクト” を、誰または何が参照、変更、または削除できるかを正確に定義したものです。
Automation Controller の RBAC 設計に関して、理解しておくべき主要な概念は、ロール、リソース、ユーザーです。ユーザーはロールのメンバーになることができます。これにより、そのロールに関連付けられたリソース、または “子孫” ロールに関連付けられたリソースへの特定のアクセスが許可されます。
ロールは実質的には機能の集合です。ユーザーには、割り当てられているロール、またはロール階層を通じて継承したロールを通じて、これらの機能および Controller のリソースへのアクセスが許可されます。
ロールは、機能のグループをユーザーのグループに関連付けます。機能はすべて、ロール内のメンバーシップから得られます。ユーザーは、割り当てられているロールを通じて、またはロール階層を通じて継承したロールを通じてのみ機能を受け取ります。ロールのすべてのメンバーは、そのロールに付与されたすべての機能を持ちます。組織内において、ロールは比較的一定ですが、ユーザーと機能は両方とも多数あり、短期間で変更されることがあります。ユーザーは多くのロールを持つことができます。
ロール階層、アクセス継承、ビルトインロール、権限、ペルソナ、ロール作成などの詳細は、Role-Based Access Controls を参照してください。
以下は、ロールとリソース権限を使用する組織の例です。
図2.3 Automation Controller 内の RBAC ロールのスコープ
ユーザーアクセスは、特定のユーザーへの権限の個別割り当てではなく、システムオブジェクト (ユーザー、グループ、名前空間) に対する権限の管理に基づいています。権限は、作成するグループに割り当てることができます。グループを作成したら、グループにユーザーを割り当てることができます。グループ内の各ユーザーは、そのグループ内に割り当てられた権限を持つことになります。
Automation Hub で作成されるグループは、内部コレクションの管理、ユーザーアクセスの設定、リポジトリー管理を担当するシステム管理者から、内部で開発されたコンテンツを整理して Automation Hub にアップロードするためのアクセス権を持つグループまで、さまざまです。詳細は、一貫性を確保するための Automation Hub のパーミッション を参照してください。
表示専用アクセスを有効にすると、Private Automation Hub のロックダウンをさらに強化できます。表示専用アクセスを有効にすると、Private Automation Hub のコレクションまたは名前空間をログイン不要で表示できる権限をユーザーに付与できます。表示専用アクセスを使用すると、ソースコードの表示またはダウンロードだけにユーザーの能力を制限して、Private Automation Hub 上で編集する権限を与えることなく、権限のないユーザーとコンテンツを共有できます。Red Hat Ansible Automation Platform インストーラーにあるインベントリーファイルを編集して、Private Automation Hub の表示専用アクセスを有効にします。
2.4.2. 更新とアップグレード リンクのコピーリンクがクリップボードにコピーされました!
すべてのアップグレードは、現在アップグレード先のメジャーバージョンより 1 つまたは 2 つ下のバージョンである必要があります。たとえば、Automation Controller 4.3 にアップグレードするには、バージョン 3.8.x 以前からの直接アップグレードパスがないため、まずバージョン 4.1.x にする必要があります。詳細は、Upgrading to Ansible Automation Platform を参照してください。Automation Controller 4.3 を実行するには、Ansible 2.12 以降も必要です。
2.4.2.1. Automation Controller STIG に関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
Automation Controller は、システムとその組織資産の整合性と機密性を維持するために必要な、組織のポリシーとセキュリティープロファイルで指定された期間内に、セキュリティー関連のソフトウェア更新をインストールする必要があります。
ソフトウェアアプリケーションのセキュリティー上の不具合は、毎日発見されています。Red Hat は、新たに発見されたセキュリティーの脆弱性に対処するために、Automation Controller を常に更新し、パッチを適用しています。組織 (組織の請負業者を含む) は、セキュリティー関連のソフトウェア更新 (パッチ、サービスパック、ホットフィックスなど) を速やかにインストールする必要があります。セキュリティー評価、継続的な監視、インシデント対応活動、または情報システムのエラー処理中に発見された不具合にも、迅速に対処する必要があります。
システム管理者は、各 Automation Controller ホストに対して、次の手順を実行します。
DNF Automatic タイマーのステータスを検査します。
systemctl status dnf-automatic.timer
-
Active: activeが出力に含まれていない場合、これは調査対象となります。 DNF Automatic の設定を検査します。
grep apply_updates /etc/dnf/automatic.conf
-
apply_updates = yesが表示されない場合、これは調査対象となります。 DNF Automatic をインストールして有効にします。
dnf install dnf-automatic (インストールを実行) systemctl enable --now dnf-automatic.timer
-
/etc/dnf/automatic.confを変更し、apply_updates = yesを設定します。
すべての Automation Controller の nginx フロントエンド Web サーバーファイルは、実稼働 Web サーバーに組み込む前に、その整合性 (チェックサムやハッシュなど) を検証する必要があります。Web サーバーに追加するパッチ、アップグレード、証明書などがファイル作成者から変更されていないことを確認することは、ファイルの検証と情報の否認防止にとって不可欠です。Automation Controller の nginx Web サーバーホストには、インストール前にファイルが有効であることを確認するメカニズムが必要です。
システム管理者は、各 Automation Controller の nginx Web サーバーホストに対して、次の手順を実行します。
Automation Controller の nginx Web サーバーホストファイルの整合性を確認します。
aide --check
- 表示されたチェックサムを、Advanced Intrusion Detection Environment (AIDE) データベースの以前に予約されたチェックサムと比較して確認します。
- 以前のチェックサムに対して不正な変更または説明のつかない変更があった場合、これは調査対象となります。
システム管理者は、各 Automation Controller の nginx Web サーバーホストに対して、次の手順を実行します。
既存の AIDE を確認するか、AIDE をインストールします。
yum install -y aide
各 Automation Controller の nginx Web サーバーホストの初期インストール直後に、AIDE データベースを作成または更新します。
aide --init && mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
AIDE データベースを更新して、ホストに対する予想される変更を受け入れます。
aide --update
- 出力に、AIDE データベースのチェックサムが表示されます。保護された場所に保存します。
インストールされている機能 (ツール、ユーティリティー、特定のサービスなど) で使用しない Automation Controller の nginx Web サーバーアカウントは、一切作成しないでください。これらは、Web サーバー機能をアンインストールするときに削除する必要があります。Web サーバーアカウントが使用されていない場合は、Web サーバーをアンインストールするときにアカウントを削除する必要があります。これは、アカウントが時間の経過とともに古くなり、管理されなくなるためです。また、同じ理由で、使用しないアカウントを作成するのも避けてください。どちらの状況も、Web サーバーが悪用される機会を生み出します。
ドキュメント、サンプルコード、サンプルアプリケーション、チュートリアル、ユーティリティー、サービスなどの Web サーバー機能に使用するアカウントを作成すると、その機能がインストールされていない場合でも、これらのアカウントは悪用可能であり、Web サーバーに対する脅威となります。これらのアカウントは、非アクティブになり、通常の使用では監視されなくなります。また、アカウントのパスワードが作成または更新されることもありません。攻撃者はこれらのアカウントを使用して Web サーバーにアクセスし、アカウント権限を昇格する方法を調べ始める可能性があります。
インストールされていないすべての Automation Controller の nginx Web サーバー機能で使用するアカウントは、作成しないでください。このようなアカウントは、これらの機能をアンインストールするときに削除する必要があります。
システム管理者は、各 Automation Controller の nginx Web サーバーに対して、次の手順を実行します。
-
/etc/passwdで nginx ユーザーを調べます。 次のコマンドを使用して、ユーザー nginx が 1 つだけ存在することを確認します。
[ grep -c nginx /etc/passwd == 1 ] || echo FAILED
-
FAILEDが表示された場合、これは調査対象となります。
システム管理者は、各 Automation Controller の nginx Web サーバーに対して、次の手順を実行します。
-
/etc/passwdに nginx ユーザーが存在しない場合は、Automation Controller を再インストールします -
/etc/passwdに列挙されているすべてのユーザーを確認し、Red Hat Enterprise Linux または Automation Controller に帰属しないユーザーや組織で許可されていないユーザーを削除します。
Automation Controller の nginx Web サーバーは、更新の提供開始後、組織で指定した期間内に、信頼できるソースからのセキュリティー関連のソフトウェア更新を確認してインストールするように設定されています。デフォルトでは、この期間は 24 時間ごとです。
システム管理者は、各 Automation Controller の nginx Web サーバーホストに対して、次の手順を実行します。
組織で定義した信頼できるシステム更新ソースから更新を受信するようにシステムが設定されていることを確認します。
yum -v repolist
- 各 URL が有効ではなく、組織が定義した要件と一致していない場合、これは調査対象となります。
- 各リポジトリーが組織で定義した要件に従って有効になっていない場合、これは調査対象となります。
- このソースからのシステム更新を、少なくとも 30 日ごとに自動的に受信して適用するようにシステムが設定されていない場合、または少なくとも 30 日ごとに更新を手動で受信して適用するようにシステムが設定されていない場合、これは調査対象となります。
システム管理者は、各 Automation Controller の nginx Web サーバーホストに対して、次の手順を実行します。
- 組織で定義した要件に従って更新リポジトリーを設定するか、基盤となるオペレーティングシステムの Red Hat 更新リポジトリーをサブスクライブします。
そのリポジトリーから更新を実行します。
$ yum update -y
以下のいずれかを実行します。
30 日ごと、または組織で定義したポリシーに従って更新が行われるようにスケジュールを設定します。
$ yum install -y dnf-automatic && sed -i '/apply_updates/s/no/yes/' /etc/dnf/automatic.conf && sed -i '/OnCalendar/s/^OnCalendar\s*=./OnCalendar=-1-* 6:00/' /usr/lib/systemd/system/dnf-automatic.timer && systemctl enable --now dnf-automatic.timer
- 少なくとも 30 日ごとに、または組織で定義したポリシーに従って手動更新が行われるようにスケジュールを設定します。
- Automation Controller の nginx Web サーバーホストを再起動します。
2.4.2.2. 障害復旧と運用の継続性 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform の定期的なバックアップは、障害復旧計画の重要な部分です。バックアップと復元はどちらもインストーラーを使用して実行します。そのため、これらの操作は、このドキュメントで前述した専用のインストールホストから実行する必要があります。これらの操作の実行方法の詳細は、Automation Controller ドキュメントの Backing Up and Restoring セクションを参照してください。
重要な点として、バックアップにはデータベースのコピーと、データベースに保存されている認証情報の復号化に使用されるシークレットキーが含まれています。そのため、バックアップファイルは暗号化されたセキュアな場所に保存する必要があります。これにより、エンドポイントの認証情報へのアクセスが適切に保護されます。バックアップへのアクセスは、Automation Controller および専用インストールホストへの root シェルアクセス権を持つ Ansible Automation Platform 管理者のみに制限する必要があります。
Ansible Automation Platform 管理者が Ansible Automation Platform 環境をバックアップする必要がある主な理由は、次の 2 つです。
- Ansible Automation Platform 環境からデータのコピーを保存し、必要に応じて復元できるようにするため。
- 新しい Ansible Automation Platform クラスターを作成する場合、またはアップグレードの準備をしている場合に、バックアップを使用して環境を別のサーバーのセットに復元するため。
どのような場合でも、推奨される最も安全なプロセスは、環境のバックアップと復元に常に同じバージョンの PostgreSQL と Ansible Automation Platform を使用することです。
システムで冗長性を使用することを強く推奨します。シークレットシステムがダウンしていると、Automation Controller が情報を取得できず、サービスが復元されれば回復できるような障害が発生する可能性があります。Automation Controller によって生成された SECRET_KEY が侵害されており、再生成する必要があると思われる場合は、Automation Controller のバックアップおよび復元ツールとよく似た動作をするツールをインストーラーから実行できます。
新しいシークレットキーを生成するには、次の手順を実行します。
- Ansible Automation Platform データベースのバックアップを、他の操作を行う前に必ず実行します。Backing Up and Restoring Controller セクションで説明されている手順に従ってください。
-
インストールのインベントリー (バックアップ/復元の実行に使用したのと同じインベントリー) を使用して、
setup.sh -kを実行します。
以前のキーのバックアップコピーは /etc/tower/ に保存されます。