ハードニングおよびコンプライアンス
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 マネージドサービス
Ansible Automation Platform 2.4 のハードニングおよびコンプライアンスには、Automation Controller の特定の Defense Security Information Agency (DISA) Security Technical Implementation Guides (STIG) に関する追加の考慮事項が含まれていますが、そのガイダンスは Ansible Automation Platform 2.5 には適用されません。
このガイドでは、Ansible Automation Platform のセキュリティー体制のハードニングについて、実践的なアプローチを採用しています。デプロイメントの計画とアーキテクチャーのフェーズから始めて、インストール、初期設定、Day 2 オペレーションに関する具体的なガイダンスを取り上げます。このガイドでは、Red Hat Enterprise Linux 上で実行される Ansible Automation Platform を特に説明しているため、Automation Platform のコンポーネントに影響する Red Hat Enterprise Linux のハードニングガイダンスも取り上げます。また、DISA STIG に関する追加の考慮事項を、組織全体のセキュリティー戦略の一部として DISA STIG を統合する組織向けに提供します。
これらの推奨事項は、Ansible Automation Platform のデプロイメントのセキュリティーやコンプライアンスを保証するものではありません。組織固有の要件に基づいてセキュリティーを評価して、特定の脅威やリスクに対処し、リスクと実装要素のバランスを取る必要があります。
1.1. 対象者
このガイドは、Red Hat Enterprise Linux にデプロイする Ansible Automation Platform 2.5 のインストール、設定、保守の担当者を対象に書かれています。また、セキュリティー運用、コンプライアンス評価、および関連するセキュリティープロセスに関連するその他の機能に関する追加情報を提供します。
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. Red Hat Ansible Automation Platform のデプロイ方法
Ansible Automation Platform には 3 つのインストール方法があります。
- Red Hat Enterprise Linux への RPM ベースのインストール
- Red Hat Enterprise Linux へのコンテナーベースのインストール
- Red Hat OpenShift Container Platform への Operator ベースのインストール
このドキュメントでは、最初の 2 つのインストール方法 (RPM ベースまたはコンテナーベース) のいずれかを使用してインストールした場合に、Ansible Automation Platform をハードニングするためのガイダンスを提供します。さらに、このドキュメントでは、新しくデプロイする場合にはコンテナーベースのインストール方法を使用することを推奨しています。RPM ベースのインストールプログラムが今後のリリースで非推奨になるためです。
詳細は、非推奨の機能 を参照してください。
このドキュメントでは、Operator ベースのデプロイは説明しません。
1.2.2. Ansible Automation Platform のコンポーネント
Ansible Automation Platform は、Automation Controller、プラットフォームゲートウェイ、Automation Hub、Event-Driven Ansible Controller など、相互に接続できる個別のコンポーネントで構成されるモジュール式プラットフォームです。
関連情報
Ansible Automation Platform 内で提供されるコンポーネントの詳細は、インストールの計画 の Red Hat 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. プランニングに関する考慮事項
Red Hat Ansible Automation Platform は、次の主要コンポーネントで構成されています。
- Automation Controller
- 自動化メッシュ
- Private Automation Hub
- Event-Driven Ansible Controller
PostgreSQL データベースも提供されていますが、ユーザーが提供する PostgreSQL データベースも使用できます。Red Hat では、追加の操作不要ですべての機能を使用できるように、Ansible Automation Platform のすべてのコンポーネントを常にデプロイすることをお客様に推奨しています。
詳細は、Red Hat Ansible Automation Platform アーキテクチャー を参照してください。
2.1.1. Ansible Automation Platform のデプロイメントトポロジー
Ansible Automation Platform 2.5 は、テスト済みのデプロイメントモデル ドキュメントで定義されている、いずれかのテスト済みのデプロイメントリファレンスアーキテクチャーに基づいてインストールしてください。エンタープライズ組織は、最高レベルの稼働時間、パフォーマンス、継続的なスケーラビリティーを確保するために、いずれかのエンタープライズリファレンスアーキテクチャーを実稼働環境に使用することを推奨します。リソースが制限されている組織または環境では、"グロース" リファレンスアーキテクチャーを使用できます。テスト済みのデプロイメントモデル ドキュメントを確認して、要件に最適なリファレンスアーキテクチャーを決定してください。選択したリファレンスアーキテクチャーには、アーキテクチャー図、必要な Red Hat Enterprise Linux サーバーの数、デプロイメントで使用されるネットワークポートとプロトコル、エンタープライズアーキテクチャーのロードバランサー情報などの計画情報が含まれています。
Ansible Automation Platform は、さまざまなインフラストラクチャーリファレンスアーキテクチャーやさまざまな環境構成でインストールできます。Red Hat は、公開されているリファレンスアーキテクチャー以外のアーキテクチャーは、完全にテストしていません。Red Hat では、すべての新規デプロイメントにテスト済みのリファレンスアーキテクチャーを使用することを推奨しており、最小要件を満たすデプロイメントに対して商業的に妥当な範囲でのサポートを提供しています。
次の図は、テスト済みのコンテナーエンタープライズトアーキテクチャーです。
図2.1 リファレンスアーキテクチャーの概要

Ansible Automation Platform に関連するファイアウォールまたはクラウドネットワークセキュリティーグループの設定を計画する際には、テスト済みのデプロイメントモデル で選択したトポロジーの「ネットワークポート」セクションを参照して、ファイアウォールまたはセキュリティーグループで開く必要があるネットワークポートを確認してください。
インターネットに接続されたシステムの場合、「インストール計画」の ネットワークおよびプロトコル セクションに、Ansible Automation Platform で使用するように設定できるサービス (Red Hat Automation Hub、Insights for 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.2. DNS、NTP、およびサービスの計画
2.1.2.1. DNS
Ansible Automation Platform をインストールするとき、インストールプログラムスクリプトは、特定のインフラストラクチャーサーバーがインストーラーのインベントリー内で 完全修飾ドメイン名 (FQDN) を使用して定義されていることを確認します。すべての Ansible Automation Platform インフラストラクチャーノードに、ルーティング可能な IP アドレスに解決される有効な FQDN を DNS で定義し、この FQDN をインストーラーインベントリーファイルで使用することを推奨します。
2.1.2.2. DNS とロードバランシング
デプロイメントトポロジーで説明されているように、Ansible Automation Platform でロードバランサーを使用する場合は、ロードバランサーに追加の FQDN が必要です。たとえば、aap.example.com
などの FQDN をロードバランサーに使用すると、ロードバランサーはインストールインベントリーで定義されている各プラットフォームゲートウェイコンポーネントにトラフィックを送信します。
2.1.2.3. NTP
Ansible Automation Platform インフラストラクチャー内の各サーバーを、Network Time Protocol (NTP) プールまたは組織の NTP サービスと時刻を同期するように設定します。これにより、Ansible Automation Platform によって生成されたイベントのログと監査に正確なタイムスタンプが付けられ、Automation Controller から実行されるスケジュールされたジョブが正しい時刻に実行されます。また、Ansible Automation Platform 内のシステム間の通信で、タイムアウトに基づくメッセージの拒否を回避することもできます。
NTP と同期するように chrony サービスを設定する方法の詳細は、Red Hat Enterprise Linux ドキュメントの chrony の使用 を参照してください。
2.1.3. Ansible Automation Platform の認証情報管理の計画
Red Hat Ansible Automation Platform は、マシンに対するジョブへのリクエストの認証、インベントリーソースとの同期、バージョン管理システムからのプロジェクトコンテンツのインポートに認証情報を使用します。
Automation Controller は 3 つのシークレットのセットを管理します。
- Ansible Automation Platform ローカルユーザー のユーザーパスワード。
- Ansible Automation Platform の 運用に使用 するシークレット (データベースのパスワード、メッセージバスのパスワードなど)。
- 自動化に使用 するシークレット (SSH キー、クラウドの認証情報、外部パスワード vault の認証情報など)。
認証情報を侵害から保護するために、特権アクセスまたは認証情報管理ソリューションを実装することを強く推奨します。アクセスおよび権限昇格の使用を監査し、追加のプログラムによる制御を提供する必要があります。
自動化認証情報が一意であることを確認し、Automation Controller にのみ保存することで、自動化認証情報のセキュリティーをさらに強化できます。OpenSSH などのサービスは、特定のアドレスからの接続時にのみ認証情報を許可するように設定できます。自動化には、システム管理者がサーバーにログインするために使用する認証情報とは異なる認証情報を使用してください。直接アクセスは可能な限り制限する必要がありますが、障害復旧やその他の臨時の管理目的に使用できるため、監査が容易になります。
自動化ジョブは、場合によっては、さまざまなレベルでシステムにアクセスする必要があります。たとえば、パッチを適用してセキュリティーベースラインチェックを実行する低レベルのシステム自動化を設定する一方で、アプリケーションをデプロイする高レベルの自動化を設定することが考えられます。自動化の各部分に異なるキーまたは認証情報を使用することにより、1 つのキーの脆弱性の影響が最小限に抑えられます。これにより、ベースライン監査も容易になります。
2.1.3.1. Ansible Automation Platform の運用上のシークレット
Ansible Automation Platform は、運用上、いくつかのシークレット (パスワード、キーなど) を使用します。これらのシークレットは、各コンポーネントサービスが起動時に読み取る必要があるため、さまざまな Ansible Automation Platform サーバーに暗号化されずに保存されます。ファイルはすべて Unix 権限によって保護されており、root ユーザーまたは適切なサービスアカウントユーザーに制限されています。これらのファイルは定期的に監視して、不正なアクセスや変更が行われていないことを確認する必要があります。
2.1.3.1.1. RPM ベースのインストール環境のシークレット
次の表は、Ansible Automation Platform の RPM ベースのインストール環境におけるこれらのシークレットの場所を示しています。
Automation Controller のシークレット | |
ファイルパス | 説明 |
|
データベース内の自動化シークレットを暗号化するために使用するシークレットキー。 |
| Automation Controller Web サービスの SSL 証明書と鍵。
デフォルトでは自己署名の 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
| Automation Controller がデータベースに接続するために使用するパスワードが含まれます (データベース接続に TLS 認証を使用する場合を除く)。 |
| Automation Controller が WebSocket ブロードキャストに使用するシークレットが含まれます。 |
| Automation Controller がプラットフォームゲートウェイと状態を同期するために使用するキーが含まれます。 |
プラットフォームゲートウェイのシークレット | |
ファイルパス | 説明 |
|
データベース内の自動化シークレットを暗号化するために使用するシークレットキー。 |
| プラットフォームゲートウェイ Web サービスの SSL 証明書。 デフォルトでは自己署名証明書がインストールされますが、ユーザーが提供する証明書と鍵のペアを使用することもできます。 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
| プラットフォームゲートウェイ Web サービスの SSL 鍵。 デフォルトでは自己署名証明書がインストールされますが、ユーザーが提供する証明書と鍵のペアを使用することもできます。 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
| プラットフォームゲートウェイが使用する Redis キャッシュとの相互 TLS (mTLS) 認証に使用される SSL 証明書。 |
| プラットフォームゲートウェイが使用する Redis キャッシュとの相互 TLS (mTLS) 認証に使用される SSL 鍵。 |
| プラットフォームゲートウェイがデータベースに接続するために使用するパスワードが含まれます (データベース接続に TLS 認証を使用する場合を除く)。また、プラットフォームゲートウェイが使用する Redis キャッシュに接続するために使用されるパスワードも含まれます。 |
Automation Hub のシークレット | |
ファイルパス | 説明 |
| Automation Hub がデータベースに接続するために使用するパスワードが含まれます (データベース接続に TLS 認証を使用する場合を除く)。Automation Hub Web サービスで使用される Django シークレットキーが含まれます。 |
|
Automation Hub EE トークン認証用の PEM 形式の OpenSSL 公開鍵。デフォルトでは、 |
|
Automation Hub EE トークン認証用の PEM 形式の OpenSSL 秘密鍵。これはデフォルトで生成されますが、ユーザーは |
| Automation Hub Web サービスの SSL 証明書。 デフォルトでは自己署名証明書がインストールされますが、ユーザーが提供する証明書と鍵のペアを使用することもできます。 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
| Automation Hub Web サービスの SSL 鍵。 デフォルトでは自己署名証明書がインストールされますが、ユーザーが提供する証明書と鍵のペアを使用することもできます。 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
| Automation Hub データベーステーブル内の機密フィールドを暗号化するために使用されるキー。 キーが変更された場合や不明な場合、Automation Hub はデータベース内の暗号化されたフィールドにアクセスできません。 |
Event-Driven Ansible のシークレット | |
ファイルパス | 説明 |
| Event-Driven Ansible Controller データベーステーブル内のフィールドを暗号化するために使用されるシークレットキー。 SECRET_KEY が変更された場合や不明な場合、Event-Driven Ansible Controller はデータベース内の暗号化されたフィールドにアクセスできません。 |
| Event-Driven Ansible ゲートウェイがデータベースに接続するために使用するパスワードが含まれます (データベース接続に TLS 認証を使用する場合を除く)。 Event-Driven Ansible Controller が使用する Redis キャッシュに接続するために使用されるパスワードが含まれます。 Event-Driven Ansible Controller がプラットフォームゲートウェイと状態を同期するために使用するキーが含まれます。 |
| Event-Driven Ansible Controller Web サービスの SSL 証明書。 デフォルトでは自己署名証明書がインストールされますが、ユーザーが提供する証明書と鍵のペアを使用することもできます。 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
| Event-Driven Ansible Controller Web サービスの SSL 鍵。 デフォルトでは自己署名証明書がインストールされますが、ユーザーが提供する証明書と鍵のペアを使用することもできます。 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
| Event-Driven Ansible Controller が使用する Redis キャッシュとの相互 TLS (mTLS) 認証に使用される SSL 証明書 |
| Event-Driven Ansible Controller が使用する Redis キャッシュとの相互 TLS (mTLS) 認証に使用される SSL 鍵 |
| Event-Driven Ansible Controller の WebSocket エンドポイントの SSL 証明書。 デフォルトでは自己署名証明書がインストールされますが、ユーザーが提供する証明書と鍵のペアを使用することもできます。 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
| Event-Driven Ansible Controller の WebSocket エンドポイントの SSL 鍵。 デフォルトでは自己署名証明書がインストールされますが、ユーザーが提供する証明書と鍵のペアを使用することもできます。 詳細は、ユーザー提供の PKI 証明書を使用したインストール を参照してください。 |
Redis のシークレット | |
ファイルパス | 説明 |
| インストールプログラムが各コンポーネントサービスのデフォルトの自己署名証明書を生成するために使用する、内部自己署名認証局の SSL 証明書。 |
| インストールプログラムが各コンポーネントサービスのデフォルトの自己署名証明書を生成するために使用する、内部自己署名認証局の SSL 鍵。 |
前述したファイルの場所の一部は、Automation Controller の以前の製品名 (以前は Ansible Tower と呼ばれていました) を反映しています。
2.1.3.1.2. コンテナーベースのインストール環境のシークレット
RPM ベースのインストール環境用として記載されているシークレットは、コンテナーベースのインストールでも使用されます。ただし、保存方法が異なります。Red Hat Ansible Automation Platform のコンテナーベースのインストール環境では、Podman シークレットを使用して運用上のシークレットを保存します。これらのシークレットは、podman secret list
コマンドを使用してリスト表示できます。
デフォルトでは、Podman は、コンテナー化された Red Hat Ansible Automation Platform サービスをインストールおよび実行したユーザーのホームディレクトリーにデータを保存します。Podman シークレットは、base64 でエンコードされた文字列としてファイル $HOME/.local/share/containers/storage/secrets/filedriver/secretsdata.json
に保存されます。そのため、プレーンテキストではありませんが、値が難読化されているだけです。
Podman シークレットに保存されているデータは、コマンド podman secret inspect --showsecret <secret>
を使用して表示できます。
このファイルを定期的に監視して、不正なアクセスや変更が行われていないことを確認する必要があります。
2.1.3.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 ビットキーを使用した Cipher Block Chaining (CBC) モードの Advanced Encryption Standard (AES) を暗号化に使用します。また、Public-Key cryptography Standard (PKCS7) パディングと、SHA256 を使用した Hash-Based Message Authentication Code (HMAC) を認証に使用します。暗号化/復号化プロセスでは、SECRET_KEY
、モデルフィールドのフィールド名、およびデータベースによって割り当てられた自動増分レコード ID から AES-256 ビット暗号化キーが導出されます。したがって、キー生成プロセスで使用される属性が変更された場合、Ansible Automation Platform はシークレットを正しく復号化できません。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.3.3. no_log による機密データの保護
Ansible の出力をログに保存すると、パスワードやユーザー名などのシークレットデータが Ansible の出力に表示されます。機密情報をログに記録しないようにするには、機密情報を表示するタスクに no_log: True
属性をマークします。ただし、no_log
属性はデバッグ出力には影響しないため、実稼働環境で Playbook をデバッグしないように注意してください。
2.1.4. ユーザー認証の計画
Ansible Automation Platform 環境では、考慮すべきユーザーアカウントが 2 種類あります。
- インフラストラクチャーアカウント: Ansible Automation Platform サービスを実行する RHEL サーバー上のユーザーアカウント。
- アプリケーションアカウント: Ansible Automation Platform の Web UI および API のユーザーアカウント。
2.1.4.1. インフラストラクチャーサーバーアカウントの計画
Ansible Automation Platform サービスを実行する RHEL サーバー上のユーザーアカウントについては、組織のポリシーに従って、個々のユーザーアカウントをローカルにするか、外部認証ソースを使用するかを決定してください。Ansible Automation Platform コンポーネント自体でメンテナンスタスクを実行する必要があるユーザーのみに、基盤となる RHEL サーバーへのアクセスを許可する必要があります。サーバーには暗号鍵やサービスパスワードなどの機密情報を含む設定ファイルがあるためです。このようなユーザーには Ansible Automation Platform サービスを維持するために特権アクセスを付与する必要があるため、基盤となる RHEL サーバーへのアクセスを最小限に抑えることが重要です。root アカウントまたはローカルの Ansible Automation Platform サービスアカウント (awx、pulp、postgres) への sudo アクセスを信頼できないユーザーに付与しないでください。
ローカルのサービスアカウントの中には、RPM ベースのインストールプログラムによって作成および管理されるものもあります。基盤となる RHEL ホスト上のこのような特定のアカウントは、外部認証ソースから取得することはできません。
2.1.4.2. Ansible Automation Platform アカウントの計画
ユーザーインターフェイスまたは API にアクセスするための Ansible Automation Platform ユーザーアカウントは、ローカル (Ansible Automation Platform データベースに保存) にすることも、Lightweight Directory Access Protocol (LDAP) サーバーなどの外部認証ソースにマップすることもできます。可能であれば、すべての主なユーザーアカウントを外部認証ソースにマップすることを推奨します。外部アカウントソースを使用すると、このコンテキストで権限を操作する際のエラーの原因が排除され、Ansible Automation Platform 内ですべてのユーザーを維持するのに費やされる時間が最小限に抑えられます。これには、個人に割り当てられたアカウントだけでなく、外部アプリケーションの統合に使用されるサービスアカウントなど、個人以外のエンティティーに割り当てられたアカウントも含まれます。緊急アクセス用や、外部認証メカニズムが使用できない緊急時のために、デフォルトの “admin” アカウントなどのローカルアカウントを確保しておいてください。
- LDAP
- SAML
- TACACS+
- Radius
- Azure Active Directory
- Google OAuth
- 汎用 OIDC
- Keycloak
- GitHub
- GitHub 組織
- GitHub チーム
- GitHub Enterprise
- GitHub Enterprise 組織
- GitHub Enterprise チーム
組織の認証ポリシーに準拠している認証メカニズムを選択し、アクセス管理と認証 を参照して、関連する認証メカニズムの前提条件を確認してください。使用する認証メカニズムは、Ansible Automation Platform と認証バックエンド間の認証関連トラフィックがパブリックまたはセキュアでないネットワーク上で発生した場合に、トラフィックを確実に暗号化するものである必要があります (LDAPS または LDAP over TLS、OAuth2 および SAML プロバイダーの HTTPS など)。
Ansible Automation Platform UI では、どの “システム管理者” アカウントでも、インベントリーまたは自動化の定義を編集、変更、更新できます。このようなアカウント権限は、可能な限り、低レベルの Automation Controller 設定および障害復旧用の最小限のユーザーだけに制限してください。
Ansible Automation Platform 2.5 では、次のすべてのプラットフォームコンポーネントで使用される新しい一元的な認証メカニズムが導入されています。
- Automation Controller
- Private Automation Hub
- Event-Driven Ansible Controller
2.5 より前では、これらの各コンポーネントに独自の認証設定がありました。
2.1.5. ロギングとログキャプチャー
可視性と分析は、エンタープライズセキュリティーとゼロトラストアーキテクチャーを支える重要な柱です。ロギングは、動作を記録して監査するうえで重要です。Red Hat Enterprise Linux の「セキュリティーの強化ガイド」の システムの監査 セクションで説明されているビルトインの監査サポートを使用して、ロギングと監査を管理できます。Ansible Automation Platform の組み込みのロギングとアクティビティーストリームでは、Red Hat Ansible Automation Platform 内のすべての変更と自動化ログを監査目的で記録します。詳細は、「自動化実行の設定」の ロギングおよびアグリゲーション セクションを参照してください。
Ansible Automation Platform と基盤となる Red Hat Enterprise Linux システムを設定する際には、ログと監査をローカルシステムで確認するのではなく、一元的に収集するように設定することを推奨します。Ansible Automation Platform は、外部ロギングを使用して Ansible Automation Platform サーバー内の複数のコンポーネントからのログレコードを収集するように設定する必要があります。正確なフォレンジック分析を行うには、発生したイベントが時間と関連付けられている必要があります。そのため、Ansible Automation Platform サーバーは、Ansible Automation Platform のターゲットだけでなく、ロギングアグリゲーターサービスでも使用される NTP サーバーを使用して設定する必要があります。時間との関連付けは、業界の一定の許容要件を満たしている必要があります。つまり、ログに記録されたさまざまなイベントのタイムスタンプが x 秒を超えて異なってはならないなど、さまざまな要件が存在する可能性があります。このような機能は外部のロギングサービスで利用できます。
ロギングのもう 1 つの重要な機能は、暗号化を使用してログツールの整合性を保護する機能です。ログデータには、情報システムのアクティビティーを正常に記録するために必要なすべての情報 (ログレコード、ログ設定、ログレポートなど) が含まれます。一般的に、攻撃者はログツールを置き換えたり、既存のツールにコードを挿入したりして、システムアクティビティーをログから隠したり消去したります。このリスクに対処するには、ログツールがいつ変更、操作、または置換されたかを識別できるように、ログツールに暗号で署名する必要があります。ログツールが変更、操作、または置換されていないことを検証する方法としては、たとえば、ツールファイルに対してチェックサムハッシュを使用する方法があります。これにより、ツールの整合性が損なわれていないことが確認されます。
2.1.6. 監査とインシデント検出
Ansible Automation Platform は、次のような一般的なユースケースに NIST サイバーセキュリティーフレームワークを適用して、セキュリティーポリシー要件を満たすように使用する必要があります。
- Red Hat Enterprise Linux 上の Web サーバーで HTTPS を必須にする。
- Red Hat Enterprise Linux 上の Web サーバーとデータベースサーバー間の内部通信で TLS 暗号化を必須にする。
- ポリシーが適切にデプロイされていることを示すレポートを生成する。
- ポリシーに違反するドリフトを監視する。
- ポリシー違反の修正を自動化する。
これは、サイバーセキュリティーフレームワークの 5 つのステップを通じて実行できます。
- 識別
- セキュリティーポリシーに従って実装すべき要件を定義します。
- 防御
- 要件を Ansible Playbook として実装して適用します。
- 検知
- ドリフトを監視し、監査レポートを生成します。
- 対応
- インシデントが検出されたときに実行できるアクションを検討します。
- 復旧
- Ansible を使用して、システムを既知の正常な設定に復元します。
2.1.7. 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 セキュリティー強化 (使用するオペレーティングシステムによって異なります) および組織で使用するセキュリティープロファイル要件 (Center for Internet Security (CIS)、STIG、Health Insurance Portability and Accountability Act (HIPAA) など) に従ってインストールおよび設定する必要があります。このドキュメントでは、すべての新しいデプロイメントに Red Hat Enterprise Linux 9 を推奨しています。コンテナーベースのインストール方法を使用する場合は、Red Hat Enterprise Linux 9 が必要です。
2.1.7.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 サーバーである必要があります。インストール計画 の説明に従って Ansible Automation Platform インストーラーを入手し、Red Hat Ansible Automation Platform インストーラーのインベントリーファイルの編集 の説明に従ってインストーラーインベントリーファイルを作成します。このインベントリーファイルは、インストールプログラムによるアップグレード、インフラストラクチャーコンポーネントの追加、および Day 2 オペレーションに使用します。そのため、今後の運用に使用できるようにインストール後にファイルを保存してください。
インストールホストへのアクセスは、Ansible Automation Platform インフラストラクチャーの管理を担当する担当者のみに制限する必要があります。インストールホストには、時間の経過とともに、インストールインベントリー (これには Ansible Automation Platform の初期ログイン認証情報が含まれます)、ユーザーが提供した PKI 鍵と証明書のコピー、バックアップファイルなどの機密情報が格納されます。インストールホストは、インフラストラクチャーの管理と保守に必要な場合、SSH 経由で Ansible Automation Platform インフラストラクチャーサーバーにログインするときにも使用する必要があります。
2.2.2. インストールインベントリー内のセキュリティー関連の変数
インストールインベントリーファイルは、Ansible Automation Platform インフラストラクチャーのアーキテクチャーを定義し、インフラストラクチャーコンポーネントの初期設定を変更するために使用できる多数の変数を提供します。インストーラーインベントリーの詳細は、インストーラーインベントリーファイルについて を参照してください。
次の表に、RPM ベースのデプロイメントにおけるセキュリティー関連の変数とその推奨値をいくつか示します。
RPM デプロイメントの変数 | 推奨値 | 詳細 |
---|---|---|
| true | この変数を設定すると、インストールプログラムにより、インストーラーによって管理される Postgres データベースが SSL ベースの接続を受け入れるように設定されます。 この変数のデフォルトは false です。これは PostgreSQL 接続に SSL/TLS を使用しないことを意味します。 true に設定すると、プラットフォームは SSL/TLS を使用して PostgreSQL に接続します。 |
| verify-full | これらの変数は、データベースへの相互 TLS (mTLS) 認証を制御します。デフォルトでは、各サービスがデータベースに接続するときに暗号化された接続を試行しますが、強制はしません。
この変数を 注記: インストーラーによって管理されるデータベースの代わりにサードパーティーのデータベースを使用する場合は、mTLS 接続を受け入れるようにサードパーティーのデータベースを個別にセットアップする必要があります。 |
| false |
デフォルトは |
次の表に、コンテナーベースのデプロイメントにおけるセキュリティー関連の変数とその推奨値をいくつか示します。
コンテナーデプロイメントの変数 | 推奨値 | 詳細 |
---|---|---|
| false |
デフォルトは
この変数がインストーラーインベントリーに存在しない場合は、変数を |
| verify-full | これらの変数は、データベースへの相互 TLS (mTLS) 認証を制御します。
デフォルトでは、各サービスがデータベースに接続するときに暗号化された接続を試行しますが、強制はしません。この変数を 注記 インストーラーによって管理されるデータベースの代わりにサードパーティーのデータベースを使用する場合は、mTLS 接続を受け入れるようにサードパーティーのデータベースを個別にセットアップする必要があります。 |
|
|
デフォルトは
これらの変数がインストーラーインベントリーに存在しない場合は、変数を |
|
| これらの変数を 'true' に設定すると、各コンポーネントの Web サービスへの HTTPS Strict Transport Security (HSTS) 接続が無効になります。
デフォルトは
これらの変数がインストーラーインベントリーに存在しない場合は、変数を |
複数のプラットフォームゲートウェイの手前でロードバランサーを使用するエンタープライズアーキテクチャーでは、SSL クライアント接続をロードバランサーで終端することも、個々の AAP サーバーにパススルーすることもできます。SSL をロードバランサーで終端する場合は、ロードバランサーから個々の Ansible Automation Platform サーバーへのトラフィックを再暗号化することを推奨します。これにより、エンドツーエンドの暗号化が確実に使用されます。このような場合、上記の *_disable_https
変数は、デフォルト値の false
に設定します。
2.2.3. ユーザー提供の PKI 証明書を使用したインストール
デフォルトでは、Ansible Automation Platform は、プラットフォームのインフラストラクチャーコンポーネント用に、自己署名 公開鍵基盤 (PKI) 証明書を作成します。既存の PKI インフラストラクチャーが利用可能な場合は、Automation Controller、Private Automation Hub、Event-Driven Ansible Controller、および postgres データベースサーバー用の証明書を生成する必要があります。証明書ファイルと関連する鍵ファイルを、証明書の検証に使用する CA 証明書とともにインストールプログラムディレクトリーにコピーしてください。
次のインベントリー変数を使用し、新しい証明書を使用してインフラストラクチャーコンポーネントを設定します。
RPM インストールの変数 | コンテナーインストールの変数 | 詳細 |
|
| カスタム 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 鍵のファイル名。 |
- |
| インストールプログラムディレクトリーにあるプラットフォームゲートウェイの PKI 証明書のファイル名。 |
- |
| インストールプログラムディレクトリーにあるプラットフォームゲートウェイの PKI 鍵のファイル名。 |
複数のプラットフォームゲートウェイがロードバランサーを使用してデプロイされている場合、gateway_tls_cert
と gateway_tls_key
は、各プラットフォームゲートウェイによって共有されます。ホスト名の不一致を防ぐには、証明書の共通名 (CN) がロードバランサーで使用する DNS FQDN と一致する必要があります。組織のポリシーでサービスごとに固有の証明書が必要な場合、各証明書には、負荷分散サービスで使用する DNS FQDN と一致する サブジェクト代替名 (SAN) が必要です。各プラットフォームゲートウェイに固有の証明書とキーをインストールするには、インストールインベントリーファイル内の証明書と鍵の変数を、[all:vars]
セクションではなく、ホストごとの変数として定義する必要があります。以下に例を示します。
[automationgateway] gateway0.example.com gateway_tls_cert=/path/to/cert0 gateway_tls_key=/path/to/key0 gateway1.example.com gateway_tls_cert=/path/to/cert1 gateway_tls_key=/path/to/key1 [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
[automationgateway]
gateway0.example.com gateway_tls_cert=/path/to/cert0 gateway_tls_key=/path/to/key0
gateway1.example.com gateway_tls_cert=/path/to/cert1 gateway_tls_key=/path/to/key1
[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
2.2.4. インストールインベントリー内の機密性の高い変数
インストールインベントリーファイルには、主に Ansible Automation Platform が使用する初期パスワードの設定に使用される機密性の高い変数が多数含まれています。これらの変数は、通常はインベントリーファイル内にプレーンテキストで保存されます。これらの変数の不正な表示を防ぐために、暗号化された Ansible vault に変数を保存できます。これを行うには、インストーラーディレクトリーに移動し、vault ファイルを作成します。
-
cd /path/to/ansible-automation-platform-setup-bundle-2.5-1-x86_64
-
ansible-vault create vault.yml
新しい Ansible vault のパスワードの入力を求められます。vault のパスワードは、Day 2 オペレーションやバックアップ手順の実行時など、vault ファイルにアクセスする必要があるたびに必要になるため、紛失しないように注意してください。vault のパスワードは、暗号化されたパスワードマネージャーに保存するか、パスワードをセキュアに保存するための組織のポリシーに従ってセキュリティー保護することができます。
機密性の高い変数を vault に追加します。次に例を示します。
admin_password/controller_admin_password: <secure_controller_password> pg_password/controller_pg_password: <secure_db_password> automationhub_admin_password/hub_admin_password: <secure_hub_password> automationhub_pg_password/hub_pg_password: <secure_hub_db_password> automationedacontroller_admin_password/eda_admin_password: <secure_eda_password> automationedacontroller_pg_password/eda_pg_password: <secure_eda_db_password> -/gateway_admin_password: <secure_gateway_password> -/gateway_pg_password:<secure_gateway_db_password>
admin_password/controller_admin_password: <secure_controller_password>
pg_password/controller_pg_password: <secure_db_password>
automationhub_admin_password/hub_admin_password: <secure_hub_password>
automationhub_pg_password/hub_pg_password: <secure_hub_db_password>
automationedacontroller_admin_password/eda_admin_password: <secure_eda_password>
automationedacontroller_pg_password/eda_pg_password: <secure_eda_db_password>
-/gateway_admin_password: <secure_gateway_password>
-/gateway_pg_password:<secure_gateway_db_password>
これらの変数がインストールインベントリーファイルにも含まれていないことを確認してください。新しい Ansible vault をインストールプログラムで使用するには、コマンド ./setup.sh -e @vault.yml — --ask-vault-pass
を使用してプログラムを実行します。
2.2.5. コンプライアンスプロファイルに関する考慮事項
多くの環境では、セキュリティー制御が適用されている Red Hat Enterprise Linux システムに Ansible Automation Platform をインストールする必要があります。その目的は、CIS Critical Security Controls、Payment Card Industry/Data Security Standard (PCI/DSS)、DISA STIG などのコンプライアンスプロファイルの要件を満たすためです。このような環境では、Ansible Automation Platform を適切に実行するために、特定のセキュリティー制御セットを変更する必要がある場合があります。インストール前に、Ansible Automation Platform に使用されている Red Hat Enterprise Linux サーバーにコンプライアンスプロファイルの制御を適用してください。その後、必要に応じて以下のセキュリティー制御を変更します。
これらの制御が必要な環境では、セキュリティー監査担当者と制御の免除を検討してください。
2.2.5.1. fapolicyd
コンプライアンスポリシーによっては、fapolicyd
デーモンの実行が要求されます。しかし、これは Ansible Automation Platform では現在サポートされていません。fapolicyd
がポリシーを適用すると、Ansible Automation Platform のインストールおよび動作中に障害が発生するためです。このため、インストールプログラムは、fapolicyd
がポリシーを適用していることを検出した場合にインストールを停止する事前チェックを実行します。このガイドでは、次の手順を使用して、Ansible Automation Platform で fapolicyd
を permissive モードに設定することを推奨します。
-
ファイル
/etc/fapolicyd/fapolicyd.conf
を編集し、"permissive = 1" を設定します。 次のコマンドでサービスを再起動します。
sudo systemctl restart fapolicyd.service
このセキュリティー制御がインストールホストにも適用されている場合、デフォルトの fapolicyd
設定により、Ansible Automation Platform のインストールプログラムが失敗します。この場合、インストールホストで fapolicyd
を permissive モードに設定することを推奨します。
2.2.5.2. "noexec" でマウントするファイルシステム
コンプライアンスプロファイルによっては、特定のファイルシステムを noexec
オプションでして、そのファイルシステムにあるバイナリーの実行を防ぐことが要求されます。Ansible Automation Platform の RPM ベースのインストールプログラムは、次のファイルシステムのいずれかが noexec
オプションでマウントされている場合に失敗する事前チェックを実行します。
-
/tmp
-
/var
-
/var/tmp
Ansible Automation Platform をインストールするには、noexec
オプションを削除してこれらのファイルシステムを再マウントする必要があります。インストールが完了したら、次の手順に進みます。
-
noexec
オプションを/tmp
および/var/tmp
ファイルシステムに再適用します。 -
Automation Controller ジョブの実行パスを
/tmp
から、noexec
オプションが有効になっていない代替ディレクトリーに変更します。 - この変更を行うには、Automation Controller UI に管理者としてログインし、Settings に移動して Jobs settings を選択します。
- "Job execution path" 設定を代替ディレクトリーに変更します。
通常の運用中は、/var/lib/awx
サブディレクトリー (通常は /var
) を含むファイルシステムを noexec
オプションを使用してマウントしないでください。使用すると、Automation Controller が実行環境で自動化ジョブを実行できません。
STIG コントロールが定期的に監査される環境では、ファイルシステム noexec
に関連する STIG コントロールの免除についてセキュリティー監査者と相談してください。
2.2.5.3. ユーザー名前空間
コンプライアンスプロファイルによっては、Linux コンテナーの起動を防ぐために、カーネル設定 user.max_user_namespaces
を "0" に設定することが要求されます。たとえば、DISA STIG ではこの制御が明確に要求されます。ただし、要求されるのは Linux コンテナーが不要な場合だけです。Ansible Automation Platform はコンテナーにインストールして運用することができ、また実行環境機能の一部としてコンテナーを使用します。そのため、Linux コンテナーが必要であり、この制御を無効にする必要があります。
user.max_user_namespaces
カーネル設定を確認するには、インストールインベントリー内の各 Ansible Automation Platform コンポーネントに対して次の手順を実行します。
- コマンドラインで 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. 対話型セッションのタイムアウト
コンプライアンスプロファイルによっては、対話型セッションのタイムアウトの適用が要求されます。たとえば、DISA STIG では、15 分間操作がないすべてのユーザーを自動的にログアウトさせることが要求されます。インストールプロセスは完了するまでに 1 時間以上かかることが多いため、このコントロールにより、インストールが完了する前にインストールプロセスが停止し、ユーザーがログアウトさせられる場合があります。同じことが、バックアップや復元などの Day 2 オペレーションにも当てはまります。実稼働環境では、このような操作は対話型セッションの推奨タイムアウト期間よりも長くかかることがよくあります。このような操作の実行時には、操作が確実に成功するように、対話型セッションのタイムアウトを増やしてください。
この制御を適用するには、複数の方法があります。たとえば、シェルのタイムアウト変数、systemd-logind
のアイドルセッションタイムアウトの設定、SSH 接続タイムアウトの設定などです。各コンプライアンスプロファイルは、これらの方法を複数使用している場合があります。インストールや Day 2 オペレーションの妨げとなることが最も多いのは、systemd-logind
のアイドルセッションタイムアウトです。これは、DISA STIG バージョン V2R1 (Red Hat Enterprise Linux 8) および V2R2 (Red Hat Enterprise Linux 9) で導入されました。systemd-logind
のアイドルセッションタイムアウトを増やすには、root ユーザーとして次の手順を実行します。
-
ファイル
/etc/systemd/logind.conf
を編集します。 -
StopIdleSessionSec
設定がゼロに設定されている場合、変更は必要ありません。 StopIdleSessionSec
設定が 0 以外の場合、その秒数の経過後にセッションが終了します。StopIdleSessionSec=7200
に変更してタイムアウトを増やし、systemctl restart systemd-logind
を実行して変更を適用します。- 対話型セッションから完全にログアウトし、再度ログインして、新しい設定が現在のログインセッションに適用されていることを確認します。
この変更は、インストールホストでのみ行う必要があります。インストールホストが使用されていない場合は、Ansible Automation Platform のインストールプログラムが実行されるホストでのみ行う必要があります。
2.2.5.5. sudo と NOPASSWD
コンプライアンスプロファイルによっては、sudo 権限を持つすべてのユーザーがパスワードを入力することが要求されます (つまり、sudoers ファイルで NOPASSWD
ディレクティブを使用することはできません)。Ansible Automation Platform のインストールプログラムは、特権ユーザーとして多くのタスクを実行し、パスワードなしで特権を昇格できることをデフォルトで想定しています。権限を昇格するためにインストールプログラムにパスワードを提供するには、RPM インストーラースクリプトの起動時に次のオプションを追加します。
./setup.sh <setup options> --ask-become-pass
.
コンテナーベースのインストールプログラムの場合:
ansible-playbook ansible.containerized_installer.install --ask-become-pass
インストールプログラムを実行すると、権限を昇格するためにユーザーのパスワードの入力を求められます。
--ask-become-pass
オプションの使用は、バックアップや復元などの Day 2 オペレーションのためにインストールプログラムを実行する場合にも当てはまります。
2.3. 初期設定
システムの特定の部分へのアクセスを許可すると、セキュリティーの脆弱性が露呈します。アクセスのセキュリティーを確保するために、次のプラクティスを適用してください。
- システム管理アカウントへのアクセスは最小限に抑えます。ユーザーインターフェイス (Web インターフェイス) と、Automation Controller が実行されているオペレーティングシステムへのアクセスには違いがあります。システム管理者またはスーパーユーザーは、すべてのシステムアプリケーションにアクセス、編集、および停止できます。Automation Controller への root アクセス権を持つユーザーは、これらの認証情報を復号化できる可能性があります。そのため、システム管理アカウントへのアクセスを最小限に抑えることが、セキュアなシステムを維持するうえで重要です。
- ローカルシステムへのアクセスを最小限に抑えます。Automation Controller では、管理目的以外のローカルユーザーアクセスは必要ありません。管理者以外のユーザーに Automation Controller システムへのアクセス権を付与しないでください。
- 職務の分離を徹底します。自動化の各コンポーネントは、場合によっては、さまざまなレベルでシステムにアクセスする必要があります。コンポーネントごとに異なるキーまたは認証情報を使用して、1 つのキーまたは認証情報の脆弱性による影響を最小限に抑えてください。
- Automation Controller を、可能な限り、低レベルの Automation Controller 設定および障害復旧専用の最小限のユーザーだけに制限します。Automation Controller のコンテキストでは、Automation Controller の ‘システム管理者’ または ‘スーパーユーザー’ アカウントが、Automation Controller 内のインベントリーまたは自動化定義を編集、変更、および更新できます。
2.3.1. 設定をコードパラダイムとして使用する
Red Hat Community of Practice は、Ansible Automation Platform インフラストラクチャーと設定をコードとして管理するために、コレクションを通じて利用できる自動化コンテンツセットを作成しました。これにより、Configuration as Code (CaC) を通じてプラットフォーム自体の自動化が可能になります。このアプローチの多くの利点は明白ですが、一方で考慮すべきセキュリティー上の影響もあります。
以下の Ansible コンテンツコレクションは、Infrastructure as Code 手法を使用した Ansible Automation Platform コンポーネントの管理に利用できます。これらはすべて Ansible Automation Hub にあります。
検証済みコレクション | コレクションの目的 |
| インストール、バックアップと復元、証明書管理など、Ansible Automation Platform の Day 1 および Day 2 オペレーションを自動化するための Ansible コンテンツ。 |
|
ユーザーとグループ (RBAC)、プロジェクト、ジョブテンプレートとワークフロー、認証情報など、Ansible Automation Platform コンポーネントの作成を管理するためのロールのコレクション。このコレクションには、古い |
| 実行環境イメージの作成と管理、または古い Tower virtualenvs から実行環境への移行のためのロールのコレクション。 |
多くの組織では、CI/CD プラットフォームを使用してパイプラインを設定するか、その他の方法を使用してこの種のインフラストラクチャーを管理しています。一方、Ansible Automation Platform をネイティブで使用すると、Git ベースのリポジトリーにネイティブにリンクするように Webhook を設定できます。そのため、Ansible は Git イベントに応答してジョブテンプレートを直接トリガーできます。これにより、このプロセス全体から外部の CI コンポーネントが不要になるため、攻撃対象領域が減少します。
これらのプラクティスにより、すべてのインフラストラクチャーと設定のバージョン管理が可能になります。Git のベストプラクティスを適用して、適切なコード品質検査を実現してから、Ansible Automation Platform に同期してください。関連する Git のベストプラクティスには次のようなものがあります。
- プルリクエストを作成します。
- 検査ツールが適切に整備されていることを確認します。
- プレーンテキストのシークレットがコミットされないようにします。
- コミット前のフックとその他のポリシーが遵守されていることを確認します。
CaC では、外部 vault システムの使用も推奨しています。これにより、機密データをリポジトリーに保存したり、必要に応じてファイルを個別に vault に保存する必要がなくなります。これは、Ansible Automation Platform の設定をソースコードリポジトリーに保存する場合に特に重要です。Automation Controller の認証情報と Event-Driven Ansible の認証情報は、ソースリポジトリーにコミットすべきでないコレクション変数に、プレーンテキストで指定する必要があるためです。外部の認証情報 vault システムの使用に関する詳細は、このガイドの 外部の認証情報 vault に関する考慮事項 セクションを参照してください。
2.3.2. 一元的なロギングの設定
一元的なロギングは、システムセキュリティーの監視と大規模なログ分析の実行を支援するために不可欠です。機密性、完全性、可用性 (CIA) の 3 要素は、米国軍と政府のアイデアの組み合わせから生まれたもので、適切なセキュリティーシステムの開発とベストプラクティスの基盤となるモデルです。一元的なロギングは、完全性の側面に該当し、データまたはシステムが改ざんされたかどうかを特定するのに役立ちます。一元的なシステムへのロギングを使用すると、すべてのログを 1 カ所に収集して複数のシステムにわたるトラブルシューティングを自動化できます。これにより、特に複雑な Ansible Automation Platform のデプロイメントで、問題の特定、傾向の分析、さまざまなサーバーからのイベントの相関関係の分析が容易になります。一元化されていない場合、個々のマシンを手動でチェックするのに長い時間がかかります。そのため、この機能はセキュリティーのベストプラクティスを満たすだけでなく、デバッグにも役立ちます。これにより、システム全体の健全性と安定性が確保され、潜在的なセキュリティーの脅威を特定しやすくなります。ロギングの設定に加えて、ストレージ容量、ハードウェア障害、高可用性アーキテクチャーによるロギングの失敗も考慮する必要があります。
他にも次のような利点があります。
- JSON 形式のデータを HTTP 接続経由で送信できます。カスタムハンドラーやインポートしたライブラリーで設計したサービス固有の調整を使用することはほとんどありません。コントローラーにとって最も役立つデータの種類は、ジョブファクトデータ、ジョブイベント/ジョブ実行、アクティビティーストリームデータ、およびログメッセージです。
- Playbook の実行の詳細、タスクの結果、システムイベントなど、インフラストラクチャーのさまざまな部分からのログを分析することで、自動化プロセスに関するより詳細な分析情報が得られます。
- ログから実行時間とリソース使用量を分析して、パフォーマンスのボトルネックを特定し、Ansible Playbook を最適化できます。
- 一元的なロギングは、監査のために信頼できる唯一の情報源を確保し、コンプライアンス要件を満たすのに役立ちます。
- ログを収集および分析するために、Splunk、Logstash、ElasticSearch、Loggly などのログ一元管理プラットフォームとのサードパーティー統合を実行できます。
ロギングアグリゲーターサービスは、以下の監視またはデータ分析システムと連携します。
- Splunk
- Loggly
- Sumologic
- Elastic stack (以前の ELK stack)
一元的なロギングのために、ロギングをいずれかのアグリゲータータイプに設定するには、次の手順に従います。
手順
- ナビゲーションパネルから → を選択します。
- Logging settings ページで、 をクリックします。
以下のオプションを設定できます。
- Logging Aggregator: ログを送信するホスト名または IP アドレスを入力します。
Logging Aggregator Port: アグリゲーターのポートが必要な場合は、ポートを指定します。
注記接続タイプが HTTPS の場合、ホスト名をポート番号付きの URL として入力できます。その後はポートを再度入力する必要はありません。ただし、TCP 接続と UDP 接続は、URL ではなく、ホスト名とポート番号の組み合わせによって特定されます。したがって、TCP 接続または UDP 接続の場合は、指定されたフィールドでポートを指定します。代わりに URL が Logging Aggregator フィールドに入力された場合、そのホスト名部分がホスト名として抽出されます。
- Logging Aggregator Type: クリックして、リストからアグリゲータサービスを選択します。
- Logging Aggregator Username: 必要に応じて、ロギングアグリゲーターのユーザー名を入力します。
- Logging Aggregator Password/Token: 必要に応じて、ロギングアグリゲーターのパスワードを入力します。
-
Loggers to Send Data to the Log Aggregator Form: デフォルトでは、4 種類のデータすべてが事前に入力されています。各データ型の追加情報を表示するには、フィールドの横にあるツールチップアイコン
をクリックします。不要なデータ型を削除します。
- Cluster wide unique identifier: これを使用してインスタンスを一意に識別します。
- Logging Aggregator Protocol: クリックして、ログアグリゲーターと通信するための接続タイプ (プロトコル) を選択します。その後に表示されるオプションは、選択したプロトコルによって異なります。
- TCP Connection Timeout: 接続タイムアウトを秒単位で指定します。このオプションは、HTTPS および TCP ログアグリゲータープロトコルにのみ適用されます。
- Logging Aggregator Level Threshold: ログハンドラーで報告する重大度のレベルを選択します。
-
Maximum number of messages that can be stored in the log action queue: 保存されるメッセージの数に応じて
rsyslog
アクションキューがどれだけ大きくなるかを定義します。これはメモリー使用量に影響を及ぼす可能性があります。キューがこの数の 75% に達すると、キューはディスクへの書き込みを開始します (rsyslog
のqueue.highWatermark
)。90% に達すると、NOTICE
、INFO
、およびDEBUG
メッセージが破棄され始めます (queue.discardMark
とqueue.discardSeverity=5
)。 -
Maximum disk persistence for rsyslogd action queuing (in GB):
rsyslog
アクションによる受信メッセージの処理に時間がかかる場合 (デフォルトは 1) に、保存するデータ量 (ギガバイト単位) です。アクションのrsyslogd queue.maxdiskspace
設定と同等です (例:omhttp
)。これは、LOG_AGGREGATOR_MAX_DISK_USAGE_PATH
で指定されたディレクトリーにファイルを保存します。 -
File system location for rsyslogd disk persistence: 外部ログアグリゲーターの停止後に再試行する必要のあるログを永続化する場所 (デフォルトは
/var/lib/awx
)。rsyslogd queue.spoolDirectory
設定に相当します。 - Log Format For API 4XX Errors: 特定のエラーメッセージを設定します。詳細は、API 4XX エラー設定 を参照してください。次のオプションを設定します。
-
Log System Tracking Facts Individually: ツールチップアイコン
をクリックすると、オンに切り替えるか、デフォルトのままオフにしておくかなど、追加情報が表示されます。
選択したロギングアグリゲーションのエントリーを確認します。
- Enable External Logging: ログを外部ログアグリゲーターに送信する場合は、このチェックボックスを選択します。
- Enable/disable HTTPS certificate verification: HTTPS ログプロトコルの証明書検証はデフォルトで有効になっています。接続を確立する前に、外部ログアグリゲーターから送信された HTTPS 証明書をログハンドラーで検証する場合は、このチェックボックスをオンにします。
-
Enable rsyslogd debugging: このチェックボックスを選択すると、
rsyslogd
の詳細度の高いデバッグが有効になります。外部ログアグリゲーションの接続に関する問題のデバッグに役立ちます。
- をクリックするか、変更を破棄する場合は をクリックします。
次の手順で LDAP ロギングを有効にします。
LDAP のロギングを有効にするには、次の手順に従います。
手順
ゲートウェイ設定ファイルを編集します。
-
Ansible Automation Platform 2.5 コンテナー版の場合、ファイルは
~/aap/gateway/etc/settings.py
です (プラットフォームゲートウェイコンテナーを実行しているユーザーとして編集します)。 Ansible Automation Platform 2.5 RPM 版の場合、ファイルは
/etc/ansible-automation-platform/gateway/settings.py
です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow (...) CACHES['fallback']['LOCATION'] = '/var/cache/ansible-automation-platform/gateway' LOGGING['loggers']['aap']['level'] = 'INFO' LOGGING['loggers']['ansible_base']['level'] = 'INFO' LOGGING['loggers']['django_auth_ldap']['level'] = 'DEBUG' ###### add this line (...)
(...) CACHES['fallback']['LOCATION'] = '/var/cache/ansible-automation-platform/gateway' LOGGING['loggers']['aap']['level'] = 'INFO' LOGGING['loggers']['ansible_base']['level'] = 'INFO' LOGGING['loggers']['django_auth_ldap']['level'] = 'DEBUG' ###### add this line (...)
-
Ansible Automation Platform 2.5 コンテナー版の場合、ファイルは
プラットフォームゲートウェイのサービスまたはコンテナーを再起動します。
Ansible Automation Platform 2.5 コンテナー版の場合、プラットフォームゲートウェイサービスを再起動して、プラットフォームゲートウェイコンテナーを再起動します。
注記次のように `--user` フラグを指定して
systemctl
を実行してください。+
$ systemctl --user restart automation-gateway
Ansible Automation Platform 2.5 RPM 版の場合、
automation-gateway-service
コマンドを使用します。# automation-gateway-service restart
次の例はコンプライアンス要件への対応例です。一部は米国国防総省の Security Technical Implementation Guide からのものですが、完全性とセキュリティーのベストプラクティスに立ち返ることが重要です。
Automation Controller は、改ざんや否認を防止するために、保護された独立したリポジトリーでユーザーアクティビティーログを収集できる外部ログプロバイダーを使用する必要があります。Automation Controller は、外部ロギングを使用してサーバー内の複数のコンポーネントからのログレコードを収集するように設定する必要があります。正確なフォレンジック分析を行うために、発生したイベントが時間と関連付けられている必要があります。さらに、この関連付けは特定の許容基準を満たす必要があります。
このセキュリティー制御を実装するには、次の手順を実行します。
手順
- Automation Controller に管理者としてログインします。
- ナビゲーションパネルから → を選択します。
- Logging settings ページで、 をクリックします。
以下のフィールドを設定します。
-
Logging Aggregator を
Not configured
に設定します。これはデフォルトです。 -
Enable External Logging を
On
に設定します。 - Logging Aggregator Level Threshold を DEBUG に設定します。
- TCP Connection Timeout を 5 (デフォルト) または組織のタイムアウトに設定します。
-
Enable/disable HTTPS certificate verification を
On
に設定します。
-
Logging Aggregator を
- をクリックします。
Automation Controller は、ログレコード用のストレージ容量を割り当て、ログ障害の発生時にデフォルトでシャットダウンする必要があります (可用性が最優先事項である場合を除く)。システムがログの処理に失敗するリスクがある場合、それを検出して障害を軽減するための措置を講じることが不可欠です。ログ処理の障害には、ソフトウェア/ハードウェアエラー、ログキャプチャーメカニズムの障害、ログストレージ容量の到達または超過などがあります。アプリケーションサーバーが高可用性システムの一部である場合を除き、障害発生時にシャットダウンするようにアプリケーションサーバーを設定する必要があります。可用性が最優先事項である場合、ログ障害への対応として承認されるその他のアクションは次のとおりです。
- 障害の原因がログレコードのストレージ容量の不足である場合、アプリケーションは可能であればログレコードの生成を続行し (必要に応じてログサービスを自動的に再起動し)、最も古いログレコードを先入れ先出し方式で上書きする必要があります。
ログレコードが一元収集サーバーに送信され、このサーバーとの通信が失われるかサーバーに障害が発生した場合、通信が回復するかログレコードが手動で取得されるまで、アプリケーションはログレコードをローカルでキューに入れる必要があります。一元収集サーバーへの接続が回復したら、ローカルログデータを収集サーバーと同期するためのアクションを実行する必要があります。
このセキュリティー制御を実装するには、次の手順を実行します。
Web ブラウザーを開き、ロギング API(
/api/v2/settings/logging/
) に移動します。Automation Controller 管理者として認証されていることを確認します。
Content セクションで、次の値を変更します。
-
LOG_AGGREGATOR_ACTION_MAX_DISK_USAGE_GB
= ログバッファリングに関する組織定義の要件。 -
LOG_AGGREGATOR_MAX_DISK_USAGE_PATH
=/var/lib/awx`
.. をクリックします。
-
Automation Controller は適切なログレコードを生成する必要があります。Automation Controller の Web サーバーが、トラブルシューティング、デバッグ、およびフォレンジック分析をサポートするために、ユーザーセッションに関連するすべての詳細をログに記録する必要があります。データのロギング機能がないと、組織はイベント調査のための重要な監査および分析ツールを失うことになります。
システム管理者としてこのセキュリティー制御を実装するには、各 Automation Controller ホストに対して次の手順を実行します。
手順
- ナビゲーションパネルから → を選択します。System Settings ページが表示されます。
- をクリックします。
以下を設定します。
- Enable Activity Stream = On
- Enable Activity Stream for Inventory Sync = On
- Organization Admins Can Manage Users and Teams = On
- All Users Visible to Organization Admins = On
- をクリックします。
Automation Controller のログファイルには、明示的に定義された権限でアクセスできる必要があります。Automation Controller のログファイルの機密性が失われると、通常は入手できないシステムに関する重要な情報を攻撃者が特定し、昇格やラテラルムーブメントに必要な情報をさらに列挙できるようになります。
このセキュリティー制御を実装するには、次の手順を実行します。
手順
各 Automation Controller ホストのシステム管理者として、Automation Controller NGINX ログディレクトリーの権限と所有者を設定します。
- `chmod 770 /var/log/nginx
-
chown nginx:root /var/log/nginx
Automation Controller ログディレクトリーの権限と所有者を設定します。
-
chmod 770 /var/log/tower
-
chown awx:awx /var/log/tower
-
Automation Controller スーパーバイザーログディレクトリーの権限と所有者を設定します。
-
chmod 770 /var/log/supervisor/
-
chown root:root /var/log/supervisor/
-
Automation Controller は、ログサブシステムに障害が発生した場合に別のシステムにフェイルオーバーするように設定する必要があります。Automation Controller ホストは、アプリケーションログ処理の障害検出時に、アプリケーションおよびロギング機能を処理できる別の Automation Controller ホストにフェイルオーバーできる必要があります。これにより、ユーザーの操作の中断やログデータの損失を最小限に抑えながら、アプリケーションとロギング機能の継続的な運用が可能になります。
このセキュリティー制御を実装するには、次の手順を実行します。
- Automation Controller が HA 設定でない場合、管理者は Automation Controller を再インストールする必要があります。
2.3.3. 外部の認証情報 vault に関する考慮事項
シークレット管理は、Automation Platform のセキュリティーを維持するために不可欠なコンポーネントです。次のシークレット管理プラクティスを推奨します。
- システムへのアクセス権を持つ無許可のユーザーが存在しないことを確認し、アクセスを必要とするユーザーのみにアクセスが許可されていることを確認します。Automation Controller は、パスワードや API トークンなどの機密情報を暗号化しますが、復号化するためのキーも保存します。許可されたユーザーはあらゆるものにアクセスできる可能性があります。
- 外部システムを使用してシークレットを管理します。認証情報を更新する必要がある場合、外部システムは、内部システムよりも簡単に更新された認証情報を取得できます。シークレットを管理するための外部システムには、CyberArk、HashiCorp Vault、Microsoft Azure Key Management などがあります。詳細は、自動化実行の使用の シークレット管理システム セクションを参照してください。
2.4. Day 2 オペレーション
Day 2 オペレーションには、ホスト、プロジェクト、環境レベルの維持を含むクラスターのヘルスチェックとスケーリングチェックが含まれます。設定とセキュリティーのドリフトを継続的に分析する必要があります。
2.4.1. RBAC に関する考慮事項
管理者は、プラットフォームゲートウェイに組み込まれている ロールベースのアクセス制御 (RBAC) を使用して、サーバーインベントリー、組織などへのアクセスを委譲できます。管理者はさまざまな認証情報の管理を一元化することもできます。管理を一元化することで、エンドユーザーが必要なシークレットをエンドユーザー自身に表示することなく使用できるようになります。RBAC コントロールを使用すると、Ansible Automation Platform でセキュリティーを強化し、管理を効率化できます。
RBAC は、ユーザーまたはチームにロールを付与する方法です。RBAC は、ロールの観点から考えるのが最も簡単です。ロールは、特定の機能が設定されている “オブジェクト” を、誰または何が参照、変更、または削除できるかを正確に定義したものです。
Ansible Automation Platform の RBAC 設計に関して、理解しておくべき主要な概念は、ロール、リソース、ユーザーです。ユーザーはロールのメンバーになることができます。これにより、そのロールに関連付けられたリソース、または “子孫” ロールに関連付けられたリソースへの特定のアクセスが許可されます。
ロールは実質的には機能の集合です。ユーザーには、割り当てられているロール、またはロール階層を通じて継承したロールを通じて、これらの機能および Controller のリソースへのアクセスが許可されます。
ロールは、機能のグループをユーザーのグループに関連付けます。機能はすべて、ロール内のメンバーシップから得られます。ユーザーは、割り当てられているロールを通じて、またはロール階層を通じて継承したロールを通じてのみ機能を受け取ります。ロールのすべてのメンバーは、そのロールに付与されたすべての機能を持ちます。組織内において、ロールは比較的一定ですが、ユーザーと機能は両方とも多数あり、短期間で変更されることがあります。ユーザーは多くのロールを持つことができます。
ロール階層、アクセス継承、組み込みロール、権限、ペルソナ、ロール作成などの詳細は、Managing access with Role-Based access controls を参照してください。
以下は、ロールとリソース権限を使用する組織の例です。
図2.2 Automation Controller 内の RBAC ロールのスコープ

ユーザーアクセスは、特定のユーザーへの権限の個別割り当てではなく、システムオブジェクト (ユーザー、グループ、名前空間) に対する権限の管理に基づいています。権限は、作成するグループに割り当てることができます。グループを作成したら、グループにユーザーを割り当てることができます。グループ内の各ユーザーは、そのグループ内に割り当てられた権限を持つことになります。
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. 障害復旧と運用の継続性
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/
に保存されます。