🪄

AWS Patch Managerを活用したOrganization内のDev/Prod環境パッチデプロイ戦略①

2024/11/22に公開

はじめに

Septeni Japan株式会社でインフラエンジニアを担当している金と申します。

システムの安定性とセキュリティを維持するために、定期的なパッチ適用はAWS運用管理において欠かせないタスクです。しかし、手動でのパッチ適用は、工数が多く、漏れのリスクもあります。

AWS Systems ManagerのPatch Managerを活用し、組織全体のEC2インスタンスに対して自動的かつ効率的にパッチを適用することで、この課題を解決することができます。

記事の構成

ボリュームが多いので、記事を2回に分けています。

この記事では、Patch Managerの概要とパッチ適用フローについて説明します。

その上で、Organization全体のDevelopment環境に自動パッチを適用する方法に焦点を当てて解説します。

次回の記事では、サービスの安定性が求められるProduction環境において、Development環境で検証済みのパッチを安全かつ効率的に適用する2つの方法を紹介します。

前提

  • Patch Managerの対象になるにはEC2インスタンスがマネージドノードである必要があります。
  • 高速セットアップでのパッチポリシーの操作はOrganizationの管理アカウントで行う必要があります。

Patch Managerとは

Patch Managerは、AWS Systems Managerの機能の一つで、管理対象のインスタンスにパッチを自動的に適用し、管理するためのツールです。

これにより、運用環境で最新のセキュリティアップデートやソフトウェアパッチを容易に適用し、セキュリティと安定性を維持することが可能になります。

Patch Managerを使用したマネージドノードへのパッチ適用フロー

以下は、Patch Managerを用いてパッチを適用する際の全体的な流れです。

  1. 管理アカウントの高速セットアップを使用して、パッチポリシーをデプロイします。
  2. 管理アカウントでは、CloudFormation StackSetsを介してS3バケットが作成され、パッチベースラインの情報が保存されます。
  3. 同時に、メンバーアカウントにはパッチ適用に関するステートマネージャーの関連付けが作成されます。
  4. メンバーアカウントのステートマネージャーの関連付けは、ドキュメント「AWS-RunPatchBaseline」を実行し、設定されたスケジュールやターゲット情報を基に、対象のマネージドノードにパッチを適用します。

導入手順

管理アカウントの操作

1. Patch Managerでパッチベースラインを作成

  • Patch Managerメニューから「パッチベースライン」を選択します。
  • 「パッチベースラインを作成」をクリックし、新しいベースラインを設定します。

2. パッチベースラインの詳細設定

  • 製品:対象とするOSバージョンを選択します。
  • 分類:Security、Bugfix、Enhancement、Recommended、Newpackageから選択します。
  • 重要度:Critical、Important、Medium、Low、Noneから選択します。
  • 自動承認:「指定日数後にパッチを承認」または「特定の日付までにリリースされたパッチを承認」を選択します。
  • コンプライアンスレポート:ベースラインによって承認されたパッチがインスタンスに適用されていない場合、設定した重要度を基にコンプライアンスレポートが作成されます
  • セキュリティ以外の更新を含める:セキュリティパッチ以外の更新も適用する場合はチェックします。
  • その他のオプション:
    • パッチの例外:特定パッチを適用から除外、または必ず適用するように指定します。
    • パッチのソース:AWS標準パッチソースの代わりに、カスタムパッチソースを設定できます。

3.パッチポリシーを作成

  • 高速セットアップでパッチポリシーを作成

4. パッチポリシーの詳細設定1:スキャンとインストール

  • 推奨される既定値を使用:スキャンは毎日UTC1時、インストールは毎週日曜日のUTC2時に実行されます
  • カスタムインストールスケジュール
    • 日単位またはCron式で時間設定が可能です。
    • Systems ManagerのCron設定は一般的なCron設定とは異なるため、AWS公式ドキュメントを参照することをおすすめします。
  • 「最初の CRON 間隔までターゲットのスキャンを待ちます」および「最初の CRON 間隔まで更新プログラムのインストールを待ちます」のチェックを外すと、パッチポリシー設定後にスキャンとインストールが即時に実行されるため、注意が必要です。
  • 必要に応じて再起動
    • パッチ適用後にOSの再起動が必要な場合、再起動設定を行います。

5. パッチポリシーの詳細設定2:パッチベースライン

  • AWSデフォルトベースライン:AWSが提供する標準的なパッチ設定を適用します
  • カスタムパッチベースライン:ユーザー独自のパッチベースラインを適用し、要件に応じたパッチ管理が可能です。

6. パッチポリシーの詳細設定2:ログストレージ&ターゲット設定

  • ログストレージにパッチ適用
    • パッチ適用オペレーションのログ保存を設定します。
  • ターゲット設定
    • パッチを適用する対象を設定します。
      • 対象範囲:組織全体、OU単位、または現在のアカウントを指定可能です。
      • OU単位:OU内のすべてのノードや特定のタグを持つノードを指定可能です。
      • 現在のアカウント:アカウント内のすべて、リソースグループ、ノードタグ、または手動で対象を選択可能です。
      • ターゲットリージョン:複数のリージョンにデプロイ可能です。
    • 今回は、特定のOU内にあるノードで、タグ(キー:env | 値:dev)を持つインスタンスをターゲットに設定します。

7. その他のオプション

  • レートの制御:パッチを同時に適用するノード数(割合)や、エラーが許容されるノード数(割合)を設定します。
  • インスタンスプロファイルのオプション:パッチ適用に必要なポリシーをインスタンスプロファイルに追加します。
  • デプロイロール:パッチ設定をデプロイするため、新規ロールを作成するか、既存のロールを選択します。

8. 対象ターゲットへのデプロイ状況の確認

  • パッチポリシーの設定が完了すると、対象へのデプロイ状況の確認ができます。

メンバーアカウントの操作

9. パッチ適用確認

  • Systems Managerのフリートマネージャーコンソールに接続します。
  • マネージドノードのパッチメニューを選択し、設定したスケジュール通りにパッチが適用されていることを確認します。

さいごに

Patch Managerを活用すれば、追加のコストをかけることなくAWS環境全体のパッチ管理を効率的に自動化し、システムの安定性とセキュリティを高めることができます。運用負担を軽減し、安全な環境維持にも役立つため、EC2インスタンスを利用している方はぜひ導入を検討してみてください。

次回は、Production環境において安全かつ効率的にパッチを適用するための具体的な方法について解説しますので、次回の記事もぜひご覧ください。

Discussion