目次
AWS Systems Manager 完全ガイド v2.0
初心者から実務者向けの包括的解説
AWS Systems Manager は、AWS、オンプレミス、マルチクラウド環境における 統合運用管理プラットフォーム です。Session Manager(踏み台レス SSH/RDP)、Patch Manager(OS パッチ自動化)、Parameter Store(シークレット管理)、Run Command(リモートコマンド実行)などを統合し、大規模フリートの安全で効率的な運用を実現します。本ドキュメントは、Systems Manager の概念・アーキテクチャ・コンポーネント・実装例・ベストプラクティス・最新動向を体系的に解説する包括的ガイドです。
ドキュメントの目的
本ガイドは以下を対象としています。
- 初心者向け: Systems Manager とは何か、なぜ必要かを学びたい方
- 運用者向け: Session Manager、Patch Manager、Inventory を運用したい方
- セキュリティ担当者向け: Parameter Store でシークレット管理、IAM ロールベースのアクセス制御を実装したい方
- SRE/インフラ向け: Run Command、Automation、Maintenance Window で大規模運用を自動化したい方
- 意思決定者向け: Ansible、Puppet、Chef、HashiCorp Boundary との比較
2025-2026 年の Systems Manager エコシステム
- Session Manager GUI 強化: 新しい統一コンソール(2024年11月リリース)で複数ノード管理が簡素化
- Patch Manager 2025 更新: Windows セキュリティ更新通知機能、Patch Policy による組織全体の一括管理
- Fleet Manager 統合拡大: ファイルシステム・レジストリ操作の Web コンソール管理
- Advanced-instances tier: オンプレミス・マルチクラウド での Session Manager 対応強化
- Hybrid Activation 改善: システムの登録・管理が簡素化、より多くのエッジデバイス対応
- State Manager + OpsHub: CloudFormation Integration で Infrastructure as Code 連携強化
目次
- 概要
- Systems Manager が解決する課題
- 主な特徴
- アーキテクチャ
- 主要コンポーネント詳細
- Session Manager:踏み台レス SSH/RDP
- Patch Manager:パッチ管理の自動化
- Parameter Store:シークレット・設定管理
- Run Command:リモートコマンド実行
- Automation:複雑な運用手順の自動化
- State Manager:設定の継続的な適用
- Inventory:リソース情報の収集
- Maintenance Windows:メンテナンスウィンドウ
- OpsCenter・Incident Manager・Change Manager
- Fleet Manager:Web ベースの管理
- 主要ユースケース
- 設定・操作の具体例
- 類似ツール比較表
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース
- 実装例・導入ロードマップ
- 実装チェックリスト
- まとめ
- 参考文献
概要
初心者向けメモ: Systems Manager は「EC2・オンプレミス・ECS/EKS ノードの運用管理を統一するサービス群」です。SSH キーや踏み台サーバーなしでインスタンスに接続(Session Manager)、月次パッチを自動適用(Patch Manager)、シークレットを安全に管理(Parameter Store)、複数ノードにコマンド一括実行(Run Command)ができます。
Systems Manager は AWS の 運用管理・自動化の中核 です。以下の層で機能します:
【図 1】Systems Manager の位置づけ:
graph TD
Nodes["EC2 / On-Prem / Edge<br/>Nodes"]
Nodes -->|SSM Agent| SSM["Systems Manager<br/>(統合管理)"]
SSM -->|Access| SM["Session Manager<br/>(SSH/RDP不要)"]
SSM -->|Patching| PM["Patch Manager<br/>(自動パッチ)"]
SSM -->|Secrets| PS["Parameter Store<br/>(設定・シークレット)"]
SSM -->|Execution| RC["Run Command<br/>(リモート実行)"]
SSM -->|Workflow| AU["Automation<br/>(Runbook実行)"]
SSM -->|Compliance| ST["State Manager<br/>(設定ドリフト修正)"]
SM -->|Audit| CT["CloudTrail"]
PM -->|Compliance| Dash["Dashboard"]
PS -->|Encrypt| KMS["KMS"]
RC -->|Event| EB["EventBridge"]
CT -->|Log| S3["S3 / CloudWatch"]
S3 -->|Alert| SNS["SNS/Slack"]
Systems Manager がカバーするスコープ
| 対象 | 詳細 |
|---|---|
| アクセス管理 | Session Manager(SSH/RDP不要)、PortForwarding(ローカルポート→RDS) |
| パッチ管理 | Patch Manager(OS&アプリケーション自動更新) |
| 設定管理 | Parameter Store(階層的な設定・シークレット管理)、State Manager(継続的なコンプライアンス) |
| リモート実行 | Run Command(複数ノードへのコマンド一括実行) |
| 自動化 | Automation(複雑な運用手順の Runbook) |
| インベントリ | Inventory(インストール済みソフト・ネットワーク設定の収集) |
| 運用追跡 | OpsCenter(OpsItem 一元管理)、Change Manager(変更申請フロー) |
| メンテナンス | Maintenance Windows(スケジュール実行)、Fleet Manager(Web コンソール) |
Systems Manager が解決する課題
1. SSH キー・踏み台サーバーの運用負荷
課題:
- SSH キーの管理・ローテーション・紛失の危険
- 踏み台サーバーの維持コスト・セキュリティリスク
- セキュリティグループに port 22 を開放する必要
Session Manager の解決:
- IAM 認証 → ブラウザ/CLI から接続 → CloudTrail 記録
- → SSH キー不要、踏み台不要、接続ログ自動記録
2. 大規模フリートへのパッチ適用の複雑さ
課題:
- 100台以上の EC2 に月次パッチを一括適用できない
- パッチコンプライアンス状況が不明瞭
- セキュリティ要件への準拠確認が手作業
Patch Manager の解決:
- Patch Policy(Organizations 統合)+ Patch Baseline
- → 数千台への自動パッチ適用
- → ダッシュボードで非準拠インスタンスを可視化
3. 設定値・シークレットの管理
課題:
- アプリケーションコードにハードコードされた API キー
- 環境変数の手動管理
- Secrets Manager との使い分けが不明
Parameter Store の解決:
- 階層パス(/prod/app/db-password)で無料・暗号化管理
- → Lambda・ECS・EC2 が IAM ロールで自動取得
- → ローテーション不要な場合は Secrets Manager より低コスト
4. Ansible・Puppet・Terraform との使い分けの曖昧性
Systems Manager の位置づけ:
Terraform(インフラプロビジョニング)
↓(インフラ構築後)
Systems Manager(運用管理・パッチ・コマンド実行)
↓(設定を code 化する場合)
Ansible(SSH ベース設定管理、オンプレ親和性高い)
↓(マルチクラウド・複雑な Workflow)
HashiCorp Boundary(Zero Trust Access)
主な特徴
| 特徴 | 説明 |
|---|---|
| SSH/RDP 不要 | Session Manager で踏み台サーバー・SSH キー不要 |
| IAM ベースアクセス制御 | ロール・ポリシーで細粒度なアクセス制御 |
| スケール対応 | 数千台への一括コマンド実行・パッチ適用 |
| ハイブリッド対応 | EC2・オンプレミス・EKS・ECS・Edge デバイス統合 |
| 監査ログ統合 | CloudTrail・CloudWatch Logs 自動統合 |
| パッチコンプライアンス | ダッシュボード・CSV レポート・自動修復 |
| 低コスト | Parameter Store 無料、SSM Agent プリインストール |
| OpsHub GUI | オンプレミス・マルチクラウドの統一管理画面 |
| CloudFormation 統合 | IaC による Systems Manager リソース定義 |
| Organizations 統合 | 組織全体への Quick Setup による自動デプロイ |
アーキテクチャ
graph LR
A["IAM User/Role"] -->|認証| B["Systems Manager<br/>API"]
B -->|Session制御| C["SSM Agent<br/>(各ノードで実行)"]
C -->|暗号化通信| D["Systems Manager<br/>エンドポイント"]
D -->|VPC Endpoint| E["プライベート通信<br/>(インターネット不要)"]
B -->|Config取得| F["Parameter Store<br/>(階層パス形式)"]
B -->|実行| G["Run Command<br/>(並行実行制御)"]
B -->|ポリシー| H["Patch Manager<br/>+ Baseline"]
G -->|実行結果| I["CloudWatch Logs"]
C -->|セッション記録| J["S3 Bucket<br/>+KMS暗号化"]
H -->|コンプライアンス| K["Config Recorder<br/>(AWS Config)"]
I -->|Alert| L["SNS→Slack/Email"]
J -->|監査| M["CloudTrail"]
主要コンポーネント詳細
Session Manager:踏み台レス SSH/RDP
利点:
✓ SSH キー管理不要
✓ セキュリティグループに port 22 開放不要
✓ CloudTrail に全セッション記録
✓ ポートフォワーディング(RDS 接続等)対応
✓ Windows(RDP)・Linux(bash)・macOS 統一
前提条件:
✓ EC2: IAM ロール に AmazonSSMManagedInstanceCore
✓ VPC エンドポイント設定(プライベートサブネット)
- ssm, ec2messages, ssmmessages
# CLI 利用例
aws ssm start-session --target i-1234567890abcdef0
Patch Manager:OS&アプリケーション自動更新
管理対象:
✓ Windows Server(セキュリティパッチ・修正プログラム)
✓ Amazon Linux 2・RHEL・Ubuntu・Debian
✓ macOS
✓ アプリケーション(Microsoft 製品)
Patch Baseline:
- デフォルト BaselineDefault(AWS が提供)
- カスタム Baseline(自組織で定義)
- 承認ルール: 自動承認日数、分類(Security/Bugfix)
Compliance State:
✓ COMPLIANT(パッチ最新)
✗ NON_COMPLIANT(未適用パッチあり)
? UNKNOWN(評価未実施)
Parameter Store:階層的な設定・シークレット管理
形式:
/prod/myapp/database/password → SecureString(KMS暗号化)
/prod/myapp/database/host → String(平文)
/prod/myapp/feature-flag/new-ui → StringList
取得例:
aws ssm get-parameter --name /prod/myapp/db-password \
--with-decryption
Lambda・ECS・EC2 IAM ロール で自動取得:
const value = await ssm.getParameter({
Name: '/prod/myapp/db-password'
}).promise();
Run Command:複数ノードへの一括コマンド実行
実行対象:
✓ タグベース(tag:Env=production)
✓ Instance ID 指定
✓ Resource Group 指定
実行例:
aws ssm send-command \
--document-name "AWS-RunShellScript" \
--parameters 'commands=["curl http://localhost:8080/health"]' \
--targets "Key=tag:Env,Values=prod"
制御:
- Concurrency: 最大並行数制限
- Error threshold: エラー時停止条件
Automation:複雑な運用手順の自動化
Runbook(SSM Document)例:
AWS-CreateImage
AWS-ResizeInstance
AWS-RestartEC2Instance
カスタム Automation Document(JSON定義)
トリガー:
✓ 手動実行
✓ EventBridge(自動トリガー)
✓ Change Calendar に基づく条件実行
State Manager:設定の継続的な適用
用途:
✓ CloudWatch Agent の一括インストール
✓ アンチウイルス設定の自動適用
✓ セキュリティパッチの定期適用
✓ 設定ドリフト検出・修正
Association(ポリシー):
- スケジュール(cron/rate)
- 対象ノード(タグ/グループ)
- 修復アクション自動実行
Inventory:インストール済みソフト・ネットワーク設定の収集
収集情報:
✓ インストール済みアプリケーション(名前・バージョン)
✓ Windows Registry キー
✓ ネットワークインターフェース(IP・MAC)
✓ AWS Lambda 関数(関連)
活用:
✓ EC2 に Java 1.8 が導入されているか検索
✓ Python バージョン一覧
✓ セキュリティコンプライアンス監査
OpsCenter・Change Manager・Incident Manager
OpsCenter:
- OpsItem(運用上の問題)一元管理
- EventBridge・CloudWatch Alarms と統合
Change Manager:
- 変更申請・承認フロー
- 変更前後の設定比較
Incident Manager:
- インシデント対応の自動化
- Runbook トリガー・連絡先通知
Session Manager
プロトコル:
→ TLS 1.2(デフォルト暗号化)
→ SigV4 署名
→ オプション:KMS による追加暗号化
接続先:
✓ EC2 インスタンス
✓ On-Premises Servers(Advanced-instances tier)
✓ ECS Container(Linux のみ)
✓ EKS Pod(IAM Roles for Service Accounts)
ログ保存先:
✓ CloudWatch Logs(リアルタイム監視)
✓ S3 + KMS(長期保存)
✓ CloudTrail(API 呼び出し記録)
ポートフォワーディング例:
# RDS 3306 をローカル 3306 にフォワード
aws ssm start-session \
--target i-1234567890abcdef0 \
--document-name AWS-StartPortForwardingSessionToRemoteHost \
--parameters '{
"host": ["my-rds.cluster.ap-northeast-1.rds.amazonaws.com"],
"portNumber": ["3306"],
"localPortNumber": ["3306"]
}'
# その後、ローカルからアクセス
mysql -h 127.0.0.1 -u admin -p my-database
Patch Manager
Patch Baselines:
- デフォルト(AWS 提供):推奨されない、参考用途
- カスタム(自組織で定義):推奨、細粒度制御
コンプライアンス判定:
COMPLIANT = Baseline で定義されたパッチをすべて適用済み
注意:COMPLIANT ≠ SECURE(他の要因も影響)
実行方法(優先順):
1. Patch Policy(Quick Setup)→ 組織全体
2. Host Management(Quick Setup)→ スキャンのみ
3. Maintenance Window → スケジュール管理
4. Patch now(オンデマンド)
Parameter Store
ティア:
- Standard: 4KB 以下、無料、RPS 40 まで
- Advanced: 8KB 以下、有料(0.04$/month/parameter)、RPS 1000
アクセス制御:
- IAM Policy で /prod/* へのアクセスのみ許可
- Resource-based Policy は非対応(IAM ロールでカバー)
ベストプラクティス:
/environment/service/parameter-name
例:/prod/api-gateway/db-password
Run Command
実行方法:
aws ssm send-command \
--document-name "AWS-RunShellScript" \
--parameters "commands=['echo hello']" \
--targets "Key=tag:Environment,Values=Production"
結果取得:
aws ssm get-command-invocation \
--command-id "command-id" \
--instance-id "i-1234567890abcdef0"
制御:
- MaxConcurrency: 10(最大10台同時)
- ErrorCount: エラー発生時停止数
- Timeout: 3600秒まで
Automation
Document 例(JSON):
{
"schemaVersion": "0.3",
"description": "EC2 を再起動する Runbook",
"parameters": {
"InstanceId": {
"type": "String",
"description": "対象 Instance ID"
}
},
"mainSteps": [
{
"name": "RestartInstance",
"action": "aws:executeAwsApi",
"inputs": {
"Service": "ec2",
"Api": "RebootInstances",
"InstanceIds": ["{{ InstanceId }}"]
}
}
]
}
State Manager
Association 設定例:
Name: CloudWatch-Agent-Installation
Document: AWS-ConfigureAWSPackage
Targets: tag:Role=monitoring
Schedule: rate(30 minutes)
Repair: Yes(ドリフト検出時に自動修復)
利用シーン:
✓ CloudWatch Agent の一括インストール
✓ SSM Agent の更新管理
✓ セキュリティパッチの定期適用
✓ ログエージェント(CloudWatch Logs)の配置
Inventory
メタデータ収集スケジュール:
デフォルト: 30 分ごと
検索例:
# Java が 1.8 のインスタンス検索
aws ssm describe-instance-information \
--filters "key=aws:InstanceInformation.PingStatus,valueSet=Online"
# Python バージョン一覧(Inventory より)
aws ssm list-inventory-entries \
--instance-id "i-1234567890abcdef0" \
--type-name "AWS:Application"
Maintenance Windows
設定例:
Schedule: cron(0 2 ? * SUN) # 毎週日曜 2:00
Duration: 4 hours
Cutoff: 1 hour before end
Task: Run Command で Patch Manager 実行
制御:
- Concurrency: 50%
- Error threshold: 5 インスタンス
Fleet Manager
機能:
✓ ファイルシステム操作(アップロード・ダウンロード)
✓ Windows Registry 編集
✓ ネットワークインターフェース確認
✓ プロセス管理・停止
アクセス:
Systems Manager Console → Fleet Manager
セキュリティ:
IAM Role で権限制御
CloudTrail で操作監査
主要ユースケース
-
金融機関のセキュリティ要件達成
- SSH/RDP 接続禁止 → Session Manager で IAM 認証のみ
- CloudTrail に全セッション記録 → 監査証拠整備
-
100+ EC2 フリートへのパッチ自動化
- Patch Manager + Patch Policy → 月次自動適用
- CIS ベンチマーク準拠 → ダッシュボードで可視化
-
マルチ環境の設定一元管理
- Parameter Store 階層パス → /dev, /stg, /prod 分離
- 環境変数ハードコード排除 → セキュリティ向上
-
AWS Organizations 全体の運用基盤
- Quick Setup で全アカウントに SSM エージェント・Patch Manager 自動デプロイ
- 組織全体のパッチコンプライアンス一元管理
-
オンプレミス・マルチクラウド統一管理
- Hybrid Activation で On-Prem サーバーも Systems Manager の統一管理下
- OpsHub で一画面から全環境操作
-
DevOps/SRE による自動運用
- Automation Runbook で EC2 スケーリング・イメージ作成の自動化
- State Manager で CloudWatch Agent 一括インストール・更新
具体例:設定・操作
Session Manager セットアップ
# 1. IAM ロール作成(EC2 インスタンスプロファイル)
aws iam create-role \
--role-name EC2-Systems-Manager-Role \
--assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}]
}'
# 2. AmazonSSMManagedInstanceCore ポリシー をアタッチ
aws iam attach-role-policy \
--role-name EC2-Systems-Manager-Role \
--policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
# 3. EC2 起動時に ロール を指定
aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--instance-type t3.micro \
--iam-instance-profile Name=EC2-Systems-Manager-Role
# 4. Session Manager 接続テスト
aws ssm start-session --target i-1234567890abcdef0
Patch Manager 実行
# 1. Patch Baseline 作成
aws ssm create-patch-baseline \
--name CustomPatchBaseline \
--operating-system-family AMAZON_LINUX_2 \
--approval-rules 'ComplianceLevel=CRITICAL,ApproveAfterDays=0'
# 2. パッチスキャン実行
aws ssm send-command \
--document-name "AWS-RunPatchBaseline" \
--parameters "Operation=Scan" \
--targets "Key=tag:Env,Values=Production"
# 3. 結果確認
aws ssm describe-instance-patch-states \
--instance-id i-1234567890abcdef0
Parameter Store 利用
# 1. シークレット保存
aws ssm put-parameter \
--name /prod/api-gateway/db-password \
--value "MySecurePassword123" \
--type "SecureString" \
--key-id alias/my-kms-key
# 2. 取得
aws ssm get-parameter \
--name /prod/api-gateway/db-password \
--with-decryption
# 3. Lambda から取得(Python)
import boto3
client = boto3.client('ssm')
response = client.get_parameter(
Name='/prod/api-gateway/db-password',
WithDecryption=True
)
password = response['Parameter']['Value']
Automation Runbook 実行
{
"schemaVersion": "0.3",
"description": "EC2 インスタンスを自動スケーリング",
"parameters": {
"TagKey": {"type": "String", "default": "Env"},
"TagValue": {"type": "String", "default": "production"}
},
"mainSteps": [
{
"name": "GetInstances",
"action": "aws:executeScript",
"inputs": {
"Runtime": "python3.8",
"Handler": "get_instances",
"Script": "def get_instances(events, context):\n # タグで対象インスタンス検索\n return instances"
}
}
]
}
類似ツール比較表
| 機能 | Systems Manager | Ansible | Puppet | Chef | HashiCorp Boundary | OPA Gatekeeper |
|---|---|---|---|---|---|---|
| SSH キー不要 | ✓ IAM 認証 | ✗ SSH 必須 | ✓(一部) | ✓(一部) | ✓ Zero Trust | N/A |
| AWS ネイティブ | ✓ 深い統合 | ~ 要プラグイン | ~ 要モジュール | ~ 要 cookbook | ✗ 汎用 | ✗ Kubernetes 専用 |
| パッチ管理 | ✓ 高度 | ~ 要スクリプト | ✓ | ✓ | ✗ | ✗ |
| オンプレ対応 | ✓(Hybrid) | ✓ | ✓ | ✓ | ✓ | ✗ |
| 大規模実行 | ✓ 数千台 | ✓ | ✓ | ✓ | ~ | N/A |
| エージェント | ✓ SSM Agent | ✗ Agentless | ✓ | ✓ | ✗ | N/A |
| GUI 管理 | ✓ コンソール | ~ CLI 主体 | ✓ | ✓ | ~ | ✗ |
| CloudTrail 統合 | ✓ 完全 | ✗ | ✗ | ✗ | ✗ | ✗ |
| コスト | SSM Agent 無料 | 無料 OSS | 商用 | 商用 | 商用 | 無料 OSS |
ベストプラクティス
実装✓
-
✅ IAM ロールベースのアクセス制御
- Systems Manager 接続を IAM Policy で細粒度制御
- タグベースの権限(
ssm:resourceTag/Env=productionのみ接続可)
-
✅ Session Manager のログ記録
- CloudWatch Logs または S3 に 全セッション記録
- KMS 暗号化で機密性保証
-
✅ Patch Manager のカスタム Baseline 定義
- AWS デフォルト Baseline は参考用のみ
- 自組織のセキュリティ基準に合わせた Baseline を作成
-
✅ Parameter Store の階層構造
/environment/application/parameter-type形式で標準化- IAM Policy で
/prod/*アクセス制限
-
✅ VPC Endpoint の活用
- プライベートサブネット環境でも Systems Manager 利用可
- インターネット非経由で Systems Manager API 呼び出し
-
✅ CloudTrail 統合で運用監査
- すべての Systems Manager API 呼び出しをログ記録
- EventBridge で異常検知
実装❌
-
❌ セッションログ記録の省略
- 監査・コンプライアンス要件を満たせない
-
❌ AWS デフォルト Patch Baseline の使用
- Baseline は参考用、本番環境では不適切
- 必ずカスタム Baseline を作成
-
❌ SSM Agent のバージョン固定
- State Manager で定期的にアップデート
-
❌ Parameter Store に本番パスワードをベタ記述
- Secrets Manager(自動ローテーション機能あり)との使い分け
-
❌ Systems Manager 接続に公開 IP 依存
- VPC Endpoint で内部通信に変更
トラブルシューティング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| Session Manager に接続失敗 | SSM Agent が停止 | aws ssm describe-instance-information で Ping Status 確認 |
| Parameter Store 取得エラー | IAM ロール に ssm:GetParameter 権限なし |
IAM Policy に ssm:GetParameter 許可を追加 |
| Patch Manager 実行失敗 | Patch Baseline が OU に アタッチされていない | Quick Setup で Patch Policy を有効化 |
| Run Command タイムアウト | スクリプト処理が長い | Timeout パラメータを増加(3600秒以内) |
| Automation Runbook エラー | IAM ロール に ec2:* 権限なし | Automation 実行用 IAM ロール に 必要な権限を追加 |
| VPC Endpoint 接続失敗 | セキュリティグループで 443 ブロック | HTTPS(443)へのアウトバウンド許可 |
2025-2026 最新動向
Session Manager
- 統一コンソール GA(2024年11月):複数ノード管理の Web UI 大幅改善
- Advanced-instances tier 拡大:マルチクラウド・オンプレ対応
- KMS 統合強化:エンドツーエンド暗号化オプション
Patch Manager
- Windows セキュリティ更新通知(2025年10月):重大パッチの自動アラート
- Patch Policy による組織全体管理:Quick Setup 統合で一括適用
- Patch Automation エンハンス:CloudFormation 連携で IaC パッチ定義
Parameter Store
- CloudFormation 統合強化:IaC で Parameter Store リソース直接定義
- 変更履歴の拡大:Configuration Items で全変更を CloudWatch Logs で追跡
Automation
- AI による Runbook 生成(検討中):自然言語で Runbook 自動生成
学習リソース
AWS 公式ドキュメント
- AWS Systems Manager User Guide
- Session Manager Getting Started
- Patch Manager Documentation
- Parameter Store Reference
オープンソース・ベンダー
- Ansible Official Docs
- Puppet Enterprise
- Chef Documentation
- HashiCorp Boundary
- AWS Cloud Operations Blog
実装例・導入ロードマップ
Phase 1(1-2 ヶ月):基礎構築
Week 1-2: 環境準備
- IAM ロール作成(EC2・Systems Manager 用)
- VPC Endpoint 設定(Systems Manager)
- CloudWatch Logs グループ作成
Week 3-4: Session Manager 導入
- 数台の EC2 で接続テスト
- CloudTrail・CloudWatch Logs 記録確認
- IAM Policy で最小権限設定テスト
Phase 2(2-3 ヶ月):Patch 管理
Week 5-6: Patch Manager 設定
- カスタム Patch Baseline 作成
- テスト環境で スキャン・インストール実行
- Patch Policy(Quick Setup)有効化
Week 7-8: 本番展開
- Production OU に Patch Policy 適用
- ダッシュボード・レポート設定
- パッチコンプライアンス監視開始
Phase 3(3-4 ヶ月):運用自動化
Week 9-10: Parameter Store・State Manager
- /prod/*/password 形式で設定一元化
- CloudWatch Agent 自動デプロイ(State Manager)
- 環境変数ハードコード排除
Week 11-12: Automation Runbook
- EC2 スケーリング・イメージ作成の自動化
- CloudFormation スタック削除の自動化(承認フロー付き)
実装チェックリスト
-
[ ] IAM 準備
- [ ] EC2 用 Systems Manager IAM ロール作成
- [ ] Systems Manager 接続ユーザーの IAM Policy 設定
- [ ] リソースタグに基づいたアクセス制御設定
-
[ ] Session Manager
- [ ] VPC Endpoint(ssm, ec2messages, ssmmessages)作成
- [ ] CloudWatch Logs グループ作成・ロール設定
- [ ] S3 バケット(セッションログ)作成・KMS 設定
- [ ] テスト EC2 で接続確認
-
[ ] Patch Manager
- [ ] カスタム Patch Baseline 作成
- [ ] テスト OU で Patch Policy 有効化
- [ ] パッチスキャン実行・コンプライアンス確認
- [ ] 本番 OU へ Patch Policy 展開
-
[ ] Parameter Store
- [ ] KMS キー作成(SecureString 暗号化用)
- [ ] 階層パス基準を定義(/env/app/type)
- [ ] 環境変数をシークレット → Parameter Store に移行
- [ ] IAM ロール に
ssm:GetParameter許可
-
[ ] 監視・監査
- [ ] CloudTrail 有効化(Systems Manager API ログ)
- [ ] EventBridge ルール(異常検知)設定
- [ ] SNS/Slack 通知設定
- [ ] 月次コンプライアンスレポート作成
まとめ
AWS Systems Manager は、EC2・オンプレミス・マルチクラウド環境における統合運用管理の中核 です。SSH キー・踏み台サーバーなしで安全にアクセス(Session Manager)、月次パッチを自動適用(Patch Manager)、シークレットを一元管理(Parameter Store)、複雑な運用手順を自動化(Automation)できます。
CloudTrail・CloudWatch Logs・AWS Config と統合することで、完全な監査証跡を整備し、セキュリティコンプライアンス(SOC2・PCI DSS・HIPAA)を達成できます。Organizations との統合で、企業全体の数百~数千台のノード管理を一元化できる、スケール対応型の運用プラットフォームです。
Ansible(SSH ベース)・Puppet・Chef との使い分けは:AWS ネイティブで IAM ベースの統一管理 → Systems Manager、既存オンプレ環境で SSH ベース → Ansible と明確に分けることで、最適なツール選択ができます。
参考文献
AWS 公式(10+)
- What is AWS Systems Manager
- Session Manager User Guide
- Patch Manager User Guide
- Parameter Store Reference
- Run Command Documentation
- Automation User Guide
- State Manager Documentation
- Inventory Documentation
- Maintenance Windows User Guide
- Session Manager plugin release history
- AWS Systems Manager Patch Manager launches security updates notification for Windows (2025)
OCP・ベンダー・コミュニティ(5+)
- Ansible Official Documentation
- Puppet Enterprise Documentation
- Chef Documentation
- HashiCorp Boundary
- AWS Cloud Operations Blog - Systems Manager
最終更新:2026-04-26 バージョン:v2.0