
【VPC外リージョンサービス】
SSM(Systems Manager)は、AWS環境全体の運用を効率化する統合運用基盤です。
Patch Manager(パッチマネージャー) によるパッチ管理、Inventory(構成情報収集)による構成情報の収集、Run Command(コマンド一括実行) によるリモートコマンド実行、そして Automation(運用手順自動化) による運用タスクの自動化を提供します。
Session Manager(セッションマネージャ) を使用することで、SSHを使わずにEC2やオンプレミスサーバーへ安全にシェルアクセスやポートフォワードができ、運用のセキュリティと監査性を高めることができます。State Manager(状態管理) は、サーバーやコンテナの設定状態をポリシーで維持し、構成のドリフト(設定のずれ)を防止します。
Parameter Store(構成値保管) を利用してアプリケーション設定や認証情報を安全に管理し、Distributor(ソフトウェア配布) により社内アプリケーションやエージェントの配布を自動化できます。OpsCenter(運用イベント管理) は運用イベントを一元的に可視化・管理し、Change Manager(変更管理) を活用することで、変更作業をワークフローと承認プロセス付きで安全に実施できます。
これらの機能は、EC2 だけでなく ECS や EKS、オンプレミス 環境、他クラウド上のサーバーにも対応しており、Lambda や Config と連携することで、運用監視や自動修復の仕組みを構築できます。
重要用語
ユースケース
| 踏み台不要のセキュアなサーバー接続 | Session Managerを利用し、SSHポートを開けずにブラウザやCLIからEC2インスタンスに安全にログインする。 |
| OSパッチ適用とソフトウェア更新の自動化 | Patch ManagerでOSのセキュリティパッチ配布スケジュールを設定し、メンテナンスウィンドウ内で自動的に更新を適用する。 |
| 構成管理とインベントリ収集 | State ManagerやInventoryを使って、インスタンスに共通の設定を適用したり、インストールソフトウェアやパッチ状況を可視化する。 |
ベストプラクティス
| Session Managerの利用 | SSHポートを開けずにインスタンスへ安全に接続する。 |
| パッチマネージャとState Manager | OSパッチ適用や設定のドリフト修正を自動化する。 |
| パラメータストアの活用 | 設定値や機密情報を安全に保存し、アプリから参照する。 |
高可用性・バックアップ・リトライ
| 高可用性・バックアップ・リトライ設計のポイント |
|---|
| 【デフォルト】AWS内部で冗長化 ・Parameter Store(パラメータストア) ・Session Manager ・Run Command ・State Manager ・Patch Manager ・Automation ・OpsCenter / Incident Manager ・Inventory |
セキュリティ
| 関連サービス | 設定内容 |
|---|---|
| KMS(データの暗号化と鍵の安全管理) | 【SecureStringパラメータの暗号化が必要】 独自KMSキーを使うことを推奨(鍵操作、監査) |
| Secrets Manager(機密情報の安全管理) | - |
| SSM Parameter Store(設定情報の一元管理) | SSM Automation パラメータ(Parameter)の作成が推奨 Runbookで入力パラメータ・スクリプト変数 |
| CloudTrail(操作履歴の記録・監査・追跡) | 【自動記録】 作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI) データ操作は追跡できない(データプレーンAPI) |
| Config(リソースの構成状態・設定変更を記録) | 【Configが有効な場合】 パラメーターストア/ドキュメント等の設定変更履歴・暗号化/タグ準拠評価(対象に限る) |
| GuardDuty(脅威を自動検出) | 【GuardDutyが有効な場合】 Run CommandやSession Manager操作のAPI異常検知 |
SSM Automation が実行ロールを引き受ける典型的な連携パターン
| 実行ロールを介して連携するサービス | 実行ロールにアタッチするポリシー |
|---|---|
| SSM | ssm:GetParameter ssm:GetParameters ssm:PutParameter ssm:DeleteParameter ssm:DescribeInstanceInformation ssm:SendCommand ssm:GetCommandInvocation ssm:ListCommands ssm:ListCommandInvocations ssm:DescribeDocument ssm:GetDocument ssm:GetAutomationExecution ssm:StartAutomationExecution ssm:StopAutomationExecution ssm:DescribeAutomationExecutions ssm:GetMaintenanceWindow ssm:UpdateMaintenanceWindow ssm:UpdateDocument ssm:CreateDocument ssm:DeleteDocument ssm:DescribeMaintenanceWindows ssm:GetParameterHistory ssm:PutInventory ssm:GetInventory |
| CloudWatch Logs | logs:CreateLogGroup logs:CreateLogStream logs:PutLogEvents logs:DescribeLogGroups logs:DescribeLogStreams |
| CloudTrail | cloudtrail:LookupEvents cloudtrail:DescribeTrails |
| CloudWatch | cloudwatch:PutMetricAlarm cloudwatch:DeleteAlarms cloudwatch:DescribeAlarms cloudwatch:PutMetricData |
| IAM | iam:PassRole iam:GetRole iam:ListRoles iam:CreateServiceLinkedRole |
| RDS | rds:DescribeDBInstances rds:StopDBInstance rds:StartDBInstance rds:RebootDBInstance rds:CreateDBSnapshot rds:DeleteDBSnapshot rds:DescribeDBSnapshots rds:ModifyDBInstance |
| S3 | s3:GetObject s3:PutObject s3:ListBucket s3:DeleteObject s3:GetBucketLocation s3:PutBucketNotification s3:GetBucketNotification |
| EC2 | ec2:DescribeInstances ec2:DescribeImages ec2:CreateImage ec2:DeregisterImage ec2:DescribeSnapshots ec2:DeleteSnapshot ec2:StopInstances ec2:StartInstances ec2:RebootInstances ec2:TerminateInstances ec2:CreateTags ec2:DeleteTags ec2:DescribeInstanceStatus ec2:ModifyInstanceAttribute ec2:CreateSnapshot ec2:DescribeVolumes ec2:AttachVolume ec2:DetachVolume ec2:DescribeSecurityGroups ec2:DescribeSubnets ec2:DescribeVpcs ec2:RunInstances |
| Auto Scaling | autoscaling:DescribeAutoScalingGroups autoscaling:DescribeAutoScalingInstances autoscaling:UpdateAutoScalingGroup autoscaling:SuspendProcesses autoscaling:ResumeProcesses autoscaling:SetDesiredCapacity autoscaling:TerminateInstanceInAutoScalingGroup autoscaling:CompleteLifecycleAction autoscaling:RecordLifecycleActionHeartbeat |
| ALB/NLB | elasticloadbalancing:DescribeLoadBalancers elasticloadbalancing:DescribeTargetGroups elasticloadbalancing:DescribeTargetHealth elasticloadbalancing:RegisterTargets elasticloadbalancing:DeregisterTargets |
| Lambda | lambda:InvokeFunction lambda:GetFunction lambda:ListFunctions |
| SNS | sns:Publish sns:GetTopicAttributes sns:ListTopics |
| CloudFormation | cloudformation:CreateStack cloudformation:DeleteStack cloudformation:DescribeStacks cloudformation:UpdateStack cloudformation:ListStacks cloudformation:DescribeStackEvents cloudformation:GetTemplate cloudformation:DescribeStackResources cloudformation:ValidateTemplate |
| EventBridge | events:PutRule events:PutTargets events:DeleteRule events:RemoveTargets events:DescribeRule events:EnableRule events:DisableRule |
| Backup | backup:StartBackupJob backup:DescribeBackupJob backup:ListBackupJobs backup:StartRestoreJob backup:DescribeRestoreJob backup:ListRestoreJobs |
| Config | config:PutConfigRule config:DeleteConfigRule config:DescribeConfigRules config:GetComplianceDetailsByConfigRule config:StartConfigRulesEvaluation config:PutEvaluations |
| Tag Editor | tag:GetResources tag:TagResources tag:UntagResources |
| SSM State Manager | ssm:CreateAssociation ssm:DeleteAssociation ssm:UpdateAssociation ssm:DescribeAssociation ssm:ListAssociations |
| Secrets Manager | secretsmanager:GetSecretValue secretsmanager:DescribeSecret |
| SSM OpsCenter | ssm:CreateOpsItem ssm:UpdateOpsItem ssm:GetOpsItem ssm:DescribeOpsItems |
| KMS | kms:Decrypt kms:DescribeKey kms:GenerateDataKey |
信頼ポリシー:SSM Automation
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ssm.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
SSM が使用する SLR の連携パターン
SLR名 : AWSServiceRoleForAmazonSSM
| SLR が操作するサービス | 用途 |
|---|---|
| EC2 | インスタンスのパッチ適用と設定管理 |
| S3 | パッチファイルとドキュメントの取得 |
| CloudWatch | インベントリデータとコンプライアンス情報の送信 |
| SNS | メンテナンスウィンドウとパッチ適用の通知 |
| Lambda | Automation実行時の関数呼び出し |
ログ・監視
| ログ出力先 | ログの種類 |
|---|---|
| CloudWatch Logs | Session Managerのセッションログ Run Commandの実行ログ Automation実行ログ Patch Managerのログ |
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
| CommandsFailed | 失敗コマンド数 |
| CommandsSucceeded | 成功コマンド数 |
| PatchComplianceNonCompliant | パッチ非準拠インスタンス数 |
| SessionsStarted | 開始セッション数 |
制限値(固定値/ハードリミット/ソフトリミット)
| 固定値 | 制限値 |
|---|---|
| Parameter Store パラメータ数(Standard) | 10,000 |
| Parameter Store パラメータ数(Advanced) | 100,000 |
| ハードリミット | 制限値 |
|---|---|
| パラメータサイズ(Standard) | 4 KB |
| パラメータサイズ(Advanced) | 8 KB |
| パラメータポリシー数/パラメータ | 10 |
| ソフトリミット | 制限値 |
|---|---|
| ドキュメント数/アカウント | 500(共有)、200(プライベート) |
| メンテナンスウィンドウ数/リージョン | 50 |
| セッション数(同時) | 100 |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| Session Manager | Session Manager自体は無料 |
| Parameter Store | 標準パラメータは無料、高度なパラメータは有料 |
| Automation | Automationの実行は無料 |
| OpsCenter | OpsItemの使用 |
| パッチマネージャー | パッチ適用インスタンス時間 |