The Complete AWS Systems Manager Guide (2025): Secure Access, Automation, Patch Management & Real-World DevOps Use Cases

By Srikanth Ch, Senior DevOps Engineer | thedevopstooling.com


Imagine managing 500 EC2 instances without SSH, without bastion hosts, and without storing a single private key anywhere. No security group rules allowing port 22. No key rotation nightmares. No “who has access to the production bastion?” conversations at 2 AM.

That’s what AWS Systems Manager makes possible—and it’s exactly how mature DevOps teams manage infrastructure in 2025.

I’ve seen organizations spend months building complex bastion architectures, only to rip them out entirely after discovering SSM. I’ve watched security audits go from multi-week ordeals to straightforward evidence collection. And I’ve personally used Systems Manager to patch hundreds of servers during critical vulnerability windows without a single SSH connection.

This guide isn’t a feature list. It’s how SSM actually works in production environments—the architecture decisions, the security patterns, and the gotchas that trip up teams who treat it as “just another AWS service.”

Whether you’re preparing for the AWS Solutions Architect (SAA-C03), SysOps Administrator, or Security Specialty exam, or you’re a DevOps engineer looking to modernize your fleet management, this is the guide I wish I’d had years ago.


What Is AWS Systems Manager?

Who should care about AWS Systems Manager?

  • Teams running more than 5 EC2 instances
  • Organizations with compliance or audit requirements
  • DevOps engineers tired of SSH key sprawl
  • Anyone managing private subnets at scale
  • Engineers preparing for AWS SAA-C03, SysOps, or Security Specialty exams

AWS Systems Manager (SSM) is a unified management service that gives you operational visibility and control over your AWS infrastructure. Think of it as the control plane for your servers—a central nervous system that lets you view, manage, patch, configure, and automate your entire fleet without ever opening an inbound port.

Here’s what SSM replaces in traditional infrastructure:

Traditional ApproachSSM Replacement
SSH + Bastion hostsSession Manager
Cron jobs scattered across serversState Manager + Maintenance Windows
Shell scripts via SSH loopsRun Command + Automation
Manual patching during change windowsPatch Manager
Config files on diskParameter Store
Spreadsheets tracking server inventoryInventory + Compliance

The shift is fundamental. Instead of reaching into servers (SSH, remote desktop, configuration management tools pulling), SSM lets AWS push instructions to agents running inside your instances. The instances themselves initiate outbound connections to the SSM service—no inbound rules required.

This architectural flip has massive security implications that we’ll explore throughout this guide.

SSM is not a full replacement for tools like Ansible, Chef, or Puppet.
It excels at execution, visibility, and AWS-native automation, but it’s not a declarative application configuration manager. Think of SSM as the secure delivery mechanism and compliance layer—you might still use Ansible for complex application configurations, but deliver it through SSM Run Command instead of SSH.

Diagram Idea: Visualize SSM as a single control plane replacing SSH, bastion hosts, and scattered cron jobs—all communication flowing through AWS’s managed infrastructure with zero inbound ports.


AWS Systems Manager Architecture Overview

Before diving into individual features, you need to understand how SSM actually communicates with your instances. This architecture knowledge separates engineers who “use SSM” from those who can troubleshoot it at 3 AM.

The Core Components

SSM Agent

Every managed instance runs the SSM Agent—a lightweight daemon that maintains a persistent connection to the Systems Manager service. Amazon Linux 2, Amazon Linux 2023, and many recent AMIs come with the agent pre-installed. For other operating systems, you’ll install it yourself.

The agent doesn’t listen on any port. Instead, it establishes outbound HTTPS connections to regional SSM endpoints and maintains a WebSocket connection for real-time command execution.

IAM Roles & Instance Profiles

Your EC2 instances need permission to communicate with SSM. This happens through an Instance Profile attached to the instance, which assumes an IAM role containing SSM permissions.

The managed policy AmazonSSMManagedInstanceCore provides baseline permissions. For production, you’ll typically create custom policies with tighter scopes.

VPC Endpoints (Critical for Private Subnets)

Instances in private subnets without NAT Gateways can’t reach public SSM endpoints. You’ll need VPC Interface Endpoints for:

  • ssm (core API)
  • ssmmessages (Session Manager)
  • ec2messages (Run Command, State Manager)

This is where I’ve seen the most production issues. Teams spin up private instances, attach the right IAM role, and wonder why SSM shows them as “Connection Lost.” Nine times out of ten, it’s missing VPC endpoints.

Control Plane vs Data Plane

The SSM Control Plane handles API calls—starting sessions, initiating Run Commands, defining patch baselines. This is what you interact with through the console, CLI, or SDK.

The SSM Data Plane handles the actual communication with agents—streaming session data, delivering commands, receiving inventory. This runs over those WebSocket connections I mentioned.

Understanding this split matters for troubleshooting. If the console shows your instance but commands time out, the data plane connectivity (usually ssmmessages or ec2messages endpoints) is likely the culprit.

How Authentication and Authorization Flow

Here’s the sequence when you start a Session Manager connection:

  1. You call ssm:StartSession via console/CLI
  2. SSM validates your IAM permissions
  3. SSM locates the target instance and checks it’s managed
  4. SSM authenticates the instance’s IAM role
  5. A secure channel is established through the agent
  6. Your session begins—fully logged, fully auditable

No SSH keys involved. No passwords. Pure IAM-based authentication on both ends.

Architecture Visualization Idea: Picture SSM as a secure management layer sitting between engineers (authenticated via IAM) and EC2 instances (authenticated via Instance Profiles). All communication flows through AWS’s control plane—never direct instance-to-engineer connections.


AWS Systems Manager Session Manager — The SSH Replacement Your Security Team Wants

AWS Systems Manager Session Manager is the feature that converts SSM skeptics. It provides shell access to your instances without:

  • Opening port 22 (or 3389 for Windows)
  • Managing SSH keys
  • Running bastion hosts
  • Configuring security groups for remote access

How Session Manager Works Internally

When you initiate a session, the SSM service establishes a bidirectional WebSocket tunnel through the agent. Your keystrokes travel encrypted to AWS, then to the agent, which executes them in a shell and streams output back.

The agent runs the shell as ssm-user by default (configurable). On Linux, this user typically has sudo privileges—something you’ll want to audit and potentially restrict in production.

Why Security Teams Love This

Every Session Manager session can be:

  • Logged to CloudWatch Logs (full keystroke capture)
  • Stored in S3 (for compliance archives)
  • Streamed to CloudWatch in real-time (for security monitoring)

Compare this to SSH, where session logging requires complex PAM configurations, third-party tools, or bastion host customizations. With Session Manager, logging is a checkbox.

Additionally, you can require KMS encryption for session data, ensuring even AWS can’t read your session traffic in transit or storage.

IAM Permissions for Session Manager

Users need ssm:StartSession permission scoped to target instances. Here’s a policy restricting access to non-production instances:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ssm:StartSession",
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringNotEquals": {
          "ssm:resourceTag/Environment": "production"
        }
      }
    }
  ]
}

This is granularity SSH can’t match. You’re not managing key distribution—you’re managing IAM policies through your existing identity infrastructure.

Port Forwarding Through Session Manager

Need to access a database running on an instance? Instead of SSH tunnels:

aws ssm start-session \
  --target i-0123456789abcdef0 \
  --document-name AWS-StartPortForwardingSession \
  --parameters '{"portNumber":["5432"],"localPortNumber":["15432"]}'

Now localhost:15432 tunnels to port 5432 on your instance—through SSM, with full IAM authorization and audit logging.

SSH vs Bastion vs Session Manager

AspectDirect SSHBastion HostSession Manager
Inbound ports requiredYes (22)Yes (22 on bastion)No
Key managementManualManualNone (IAM)
Session loggingComplexComplexBuilt-in
Audit trailSSH logs onlySSH logs onlyCloudTrail + session logs
CostInstance costsBastion instanceFree (for basic sessions)
Works in private subnetsNeeds NAT/bastionNeeds bastion accessNeeds VPC endpoints

Reflection Prompt: Think about your current environment. Would your security team approve a new application that required port 22 open to the internet today? What about open to the corporate network? Session Manager makes this question irrelevant.


AWS SSM Run Command & Automation — Fleet-Wide Control Without SSH Loops

Remember writing bash loops that SSH’d into servers one by one? Or worse, using parallel-ssh and hoping nothing failed silently?

AWS SSM Run Command executes shell commands across hundreds of instances simultaneously—with error handling, output capture, and execution status tracked per instance.

Run Command Execution Flow

  1. You invoke ssm:SendCommand with a target (instance IDs, tags, or resource groups)
  2. SSM validates permissions and resolves targets
  3. Commands are delivered to agents via the data plane
  4. Agents execute and stream output back
  5. Results aggregate in the SSM console and API

Document Types

SSM uses Documents to define what runs. Key document types:

  • Command documents: Run scripts, install software, execute one-off tasks
  • Automation documents: Multi-step workflows with conditionals, approvals, and AWS API calls
  • Session documents: Define Session Manager behavior

AWS provides hundreds of pre-built documents. AWS-RunShellScript and AWS-RunPowerShellScript handle most ad-hoc needs.

Targeting Strategies

Target instances by:

  • Instance IDs: Explicit targeting for specific servers
  • Tags: Environment=staging, Application=payments
  • Resource Groups: Dynamic groups based on tag queries

Tag-based targeting is powerful for production. Need to restart the payments service across all staging instances?

aws ssm send-command \
  --document-name "AWS-RunShellScript" \
  --targets "Key=tag:Application,Values=payments" "Key=tag:Environment,Values=staging" \
  --parameters 'commands=["systemctl restart payments-api"]'

Real-World Use Cases

Emergency Security Response: A critical CVE drops. You need to verify which instances have the vulnerable package version—now, not during the next inventory sync.

aws ssm send-command \
  --document-name "AWS-RunShellScript" \
  --targets "Key=tag:OS,Values=AmazonLinux2" \
  --parameters 'commands=["rpm -q openssl"]' \
  --output-s3-bucket-name "security-audit-outputs"

Within minutes, you have version data from every Amazon Linux instance, stored in S3 for analysis.

Configuration Rotation: Rotate a configuration file across your fleet after a credential change:

aws ssm send-command \
  --document-name "AWS-RunShellScript" \
  --targets "Key=tag:Application,Values=api-gateway" \
  --parameters 'commands=["aws s3 cp s3://configs/api-gateway/config.yml /etc/api-gateway/", "systemctl reload api-gateway"]'

Mini Quiz: Why is Run Command safer than SSH loops for fleet-wide operations?

Think about it before reading on…

Answer: Run Command provides centralized execution status, automatic retry logic, CloudTrail auditing, IAM-based authorization, and aggregated output collection. SSH loops fail silently, lack audit trails, require key management, and don’t handle partial failures gracefully.


AWS SSM Patch Manager — Enterprise OS Patching Done Right

Patching is where good intentions meet operational reality. Teams plan monthly patch windows, then skip them because “we can’t afford the downtime” or “who knows what will break.”

AWS SSM Patch Manager brings structure to this chaos.

Core Concepts

Patch Baselines: Define which patches to apply. AWS provides default baselines per OS, but you’ll customize these for production.

  • Approve security patches automatically after 3 days
  • Approve critical patches immediately
  • Exclude specific patches that caused issues
  • Auto-approve patches from specific classifications

Maintenance Windows: Schedule when patching occurs. Define start time, duration, and what happens if patching isn’t complete before the window closes.

Patch Groups: Associate instances with baselines via tags. Tag an instance PatchGroup=linux-production and it follows the linux-production baseline.

Compliance Reporting

After patching, every instance reports compliance status:

  • Compliant: All applicable patches installed
  • Non-Compliant: Missing patches based on current baseline
  • Unknown: Instance not recently scanned

This compliance data feeds into AWS Security Hub, giving security teams a single pane of glass for patch status.

Production Example: Monthly Linux Patching

Here’s a pattern I’ve used across multiple organizations:

  1. Week 1: Patch development environments automatically (no approval)
  2. Week 2: Patch staging with automated baseline testing
  3. Week 3: Patch production with manual approval gates
  4. Continuous: Report compliance to Security Hub and trigger alerts for non-compliant instances

The maintenance window for production runs during lowest-traffic periods. Instances are patched in batches (using rate controls) to maintain capacity.

# Maintenance Window Task Example
MaintenanceWindowTask:
  Type: AWS::SSM::MaintenanceWindowTask
  Properties:
    WindowId: !Ref PatchingWindow
    TaskType: RUN_COMMAND
    TaskArn: AWS-RunPatchBaseline
    MaxConcurrency: "25%"
    MaxErrors: "5%"
    Priority: 1
    Targets:
      - Key: WindowTargetIds
        Values:
          - !Ref ProductionPatchTarget

The MaxConcurrency of 25% ensures only a quarter of instances patch simultaneously. MaxErrors of 5% halts the operation if too many failures occur.

Security Interview Angle: “How do you prove your servers are patched?”

With Patch Manager: “We have automated compliance reporting integrated with Security Hub. Any non-compliant instance triggers an alert, and we can provide historical compliance data for any audit period through SSM compliance APIs.”


State Manager — Declarative Configuration Enforcement

State Manager ensures instances stay in a desired state. Unlike Run Command (imperative: “do this now”), State Manager is declarative: “this should always be true.”

How It Works

You associate a State Manager Association with target instances. The association specifies:

  • A document to run (what state to enforce)
  • A schedule (how often to check/enforce)
  • Parameters (configuration values)

The SSM agent evaluates the association on schedule. If the system isn’t in the desired state, it executes the document to correct drift.

Practical Example: Ensuring CloudWatch Agent Is Always Installed

aws ssm create-association \
  --name "AWS-ConfigureAWSPackage" \
  --targets "Key=tag:Monitoring,Values=enabled" \
  --parameters '{"action":["Install"],"name":["AmazonCloudWatchAgent"]}' \
  --schedule-expression "rate(1 day)"

Every day, SSM verifies the CloudWatch agent is installed on instances tagged Monitoring=enabled. If someone manually removes it, the next association run reinstalls it.

Compliance Status

State Manager tracks whether instances are compliant with their associations:

  • Success: Association executed successfully
  • Failed: Association execution failed (needs investigation)
  • Pending: Scheduled but not yet run

This creates auditability around configuration standards. “Are all production instances running the security baseline?” becomes a queryable fact, not a manual verification.


AWS Systems Manager Parameter Store — Secure Configuration Management

Hardcoding configuration in applications is a well-known anti-pattern. But where do you put database connection strings, API keys, and feature flags?

AWS Systems Manager Parameter Store provides a centralized, secure, versioned repository for configuration data.

Parameter Types

Standard Parameters: Free tier. Up to 10,000 parameters, 4KB each.

Advanced Parameters: Paid. Larger size (8KB), policies for expiration/notification, higher throughput.

SecureString: Encrypted using AWS KMS. The value is encrypted at rest and only decrypted when retrieved with appropriate IAM permissions.

Parameter Hierarchy

Parameters support paths, enabling logical organization:

/myapp/production/database/host
/myapp/production/database/password
/myapp/staging/database/host
/myapp/staging/database/password

Applications retrieve parameters by path:

aws ssm get-parameters-by-path --path "/myapp/production/database" --with-decryption

This pattern lets you grant IAM access to entire configuration subtrees—developers can access /myapp/staging/* but not /myapp/production/*.

Versioning and Rollback

Every parameter update creates a new version. Need to rollback a bad configuration change?

aws ssm get-parameter --name "/myapp/production/api-key" --version 3

You can retrieve any historical version, compare changes, and update to a previous value.

Parameter Store vs Secrets Manager

This question appears on every AWS exam and confuses every team new to AWS:

FeatureParameter StoreSecrets Manager
Automatic rotationNoYes (Lambda-based)
Cross-account accessLimitedNative support
CostFree (Standard)$0.40/secret/month
Size limit8KB (Advanced)64KB
VersioningYesYes
KMS encryptionYesYes (mandatory)

Rule of thumb: Use Secrets Manager for database credentials that need rotation. Use Parameter Store for everything else.

Reflection Prompt: Where are your application secrets stored today? Environment variables? Config files on disk? A shared spreadsheet? Parameter Store offers a path from each of these anti-patterns to centralized, audited, encrypted configuration management.


Inventory, Compliance & OpsCenter

These three features turn SSM from an operations tool into an audit and incident management platform.

Inventory

SSM Inventory automatically collects metadata from managed instances:

  • Installed applications and versions
  • Network configuration
  • Windows updates
  • Running services
  • Custom inventory (via plugins)

This data syncs to a resource data sync, which can export to S3 for analysis or query via Athena.

Audit goldmine: “Show me every instance running OpenSSL version X” becomes an Athena query, not a fleet-wide SSH investigation.

Compliance

Beyond patch compliance, SSM tracks compliance against State Manager associations. You define what “compliant” means through associations, and SSM continuously reports status.

Security Hub Integration: Compliance data flows to Security Hub, creating unified security posture visibility across patches, configurations, and custom compliance checks.

OpsCenter

OpsCenter aggregates operational issues (OpsItems) from multiple sources:

  • CloudWatch Alarms
  • Config Rule violations
  • Security Hub findings
  • Custom integrations

Each OpsItem tracks related resources, runbooks for remediation, and resolution status. It’s lightweight incident management built into SSM.


Advanced Security & IAM for Systems Manager

SSM is a powerful tool—which makes it a powerful attack vector if misconfigured. Here’s how to lock it down.

Least Privilege IAM Policies

Never use AmazonSSMManagedInstanceCore without scoping. That policy grants broad SSM access. In production, create custom policies:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:UpdateInstanceInformation",
        "ssm:GetParameter",
        "ssm:GetParameters"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": "arn:aws:ssm:*:*:parameter/myapp/${aws:PrincipalTag/Environment}/*"
    }
  ]
}

This allows instances to access only parameters matching their environment tag.

VPC Endpoints for Private Access

Production workloads in private subnets should use VPC endpoints. This:

  • Eliminates internet exposure
  • Enables PrivateLink traffic routing
  • Allows endpoint policies for additional access control

Create endpoints for ssm, ssmmessages, ec2messages, and (for Parameter Store KMS encryption) kms.

Service Control Policies (SCPs)

In multi-account environments, use SCPs to prevent SSM misuse:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "ssm:StartSession",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalTag/team": "platform-engineering"
        }
      }
    }
  ]
}

Only platform engineering team members can start sessions—regardless of their account-level IAM permissions.

CloudTrail Visibility

Every SSM API call logs to CloudTrail:

  • StartSession (who accessed which instance)
  • SendCommand (what commands were run)
  • GetParameter (what configuration was accessed)

Correlate CloudTrail logs with Session Manager session logs for complete audit trails.

Security Scenario: An engineer shouldn’t access production instances directly. With SSM, you enforce this through IAM (deny StartSession for production tags), verify through CloudTrail, and investigate violations through Security Hub findings.


Interview Question

“How would you restrict engineers from accessing production EC2 instances while still allowing automation to run?”

Strong Answer: Combine IAM policies denying ssm:StartSession for production-tagged instances with SCPs at the organization level. Automation uses a separate IAM role with ssm:SendCommand permissions scoped to specific automation documents. All access attempts log to CloudTrail, and Security Hub monitors for policy violations. Tag-based conditions ensure the policy scales without manual instance management.


SSM in Enterprise & Multi-Account Environments

Large organizations run hundreds of AWS accounts. SSM scales through AWS Organizations integration.

Centralized Automation

Create Automation documents in a central account and share them organization-wide. When a security patch is needed, one automation triggers patching across all member accounts.

Cross-Account Patching

Patch Manager supports multi-account patching through resource data sync. A central account views patch compliance across all accounts, and maintenance windows can target instances across accounts using resource groups.

Aggregated Logging

Configure Session Manager in each account to log to a central S3 bucket and CloudWatch log group. Security teams monitor sessions organization-wide from a single location.


Common Systems Manager Mistakes (From Real Incidents)

After years of SSM implementations, these are the issues I see repeatedly:

Missing IAM Role on EC2: Instance launches without an instance profile. SSM agent runs but can’t authenticate. Instance appears offline in Fleet Manager.

SSM Agent Outdated: Old agent versions lack features and contain bugs. Automate updates via State Manager association.

No Logging Enabled: Session Manager works, but nobody configured logging. When an audit asks “what did this user do on this server?”, there’s no answer.

Over-Permissive IAM Policies: Everyone has ssm:* access. Developers start sessions on production instances “just to check something.”

Not Using VPC Endpoints: Private instances route SSM traffic through NAT Gateways, adding cost and latency. Or worse, they can’t reach SSM at all.

Ignoring Compliance Dashboards: Patch Manager reports drift, but nobody watches the dashboard. Compliance degrades silently.

SSM Failure Modes — Quick Troubleshooting Guide

When SSM breaks in production, here’s where to look:

SymptomLikely CauseQuick Fix
Instance shows “Managed” but commands time outMissing ec2messages or ssmmessages VPC endpointCreate interface endpoints in the VPC
Session starts but immediately disconnectsSSM agent crashed or outdatedSSH in (if possible) and restart/update agent
Works in public subnet, fails in privateNo route to SSM endpoints (missing NAT or VPC endpoints)Add VPC endpoints or NAT Gateway
“Access Denied” on StartSessionIAM policy missing or SCP blockingCheck user IAM + instance profile + SCPs
Instance not appearing in Fleet ManagerInstance profile missing or wrong regionVerify IAM role attached and correct region

Pro Tip: Run sudo systemctl status amazon-ssm-agent on the instance (if you have alternate access) to check agent health. The agent logs to /var/log/amazon/ssm/ on Linux.


Pricing & Cost Considerations

SSM is surprisingly affordable—many features are free.

Free Tier

  • Session Manager (basic sessions)
  • Run Command
  • State Manager
  • Patch Manager (execution)
  • Inventory
  • Standard Parameters (up to 10,000)

Paid Features

  • Advanced Parameters: $0.05/parameter/month
  • On-demand Automation Steps: $0.0025/step above free tier
  • OpsCenter OpsItems: $0.00542/OpsItem after free tier
  • Change Manager: Charges apply for change requests

Hidden Cost Pitfalls

VPC Endpoints: Each interface endpoint costs ~$7.20/month plus data processing. In a multi-AZ setup with 3 endpoints (ssm, ssmmessages, ec2messages), that’s ~$65/month per VPC.

CloudWatch Logs: Session logging to CloudWatch incurs ingestion and storage costs. High-volume environments can accumulate significant log costs.

NAT Gateway Data Transfer: Without VPC endpoints, SSM traffic crosses NAT Gateways at $0.045/GB.


Wrapping Up: SSM as Infrastructure Maturity

AWS Systems Manager isn’t just a tool—it’s an indicator of operational maturity.

Teams that fully adopt SSM have:

  • Zero SSH keys to manage, rotate, or lose
  • Complete audit trails for every server interaction
  • Automated patching that actually runs on schedule
  • Centralized configuration that doesn’t drift
  • Fleet visibility that makes audits routine

The transition isn’t instant. You’ll migrate from bastion hosts to Session Manager. You’ll move from manual patching to Patch Manager. You’ll refactor configuration from files to Parameter Store.

But each step reduces operational risk and improves security posture. And in 2025, this is how infrastructure is managed at scale.


FAQs

What is AWS Systems Manager?

AWS Systems Manager is a unified AWS service for managing EC2 instances and other resources at scale. It provides secure access (Session Manager), automation (Run Command), patching (Patch Manager), configuration management (Parameter Store, State Manager), and operational visibility (Inventory, Compliance, OpsCenter) without requiring SSH or direct server access.

Is AWS Systems Manager free?

Many SSM features are free, including Session Manager, Run Command, State Manager, basic Patch Manager, and Standard Parameters (up to 10,000). Costs apply for Advanced Parameters, high-volume Automation, OpsCenter beyond free tier, and related services like VPC endpoints and CloudWatch logging.

How does SSM replace SSH?

Session Manager establishes encrypted connections to instances through the SSM agent using IAM authentication. No inbound ports, SSH keys, or bastion hosts are required. All sessions are logged to CloudWatch and S3, providing audit trails that SSH can’t match without significant additional tooling.

What IAM permissions are required for SSM?

Instances need an IAM role (via instance profile) with permissions to communicate with SSM—the managed policy AmazonSSMManagedInstanceCore provides baseline access. Users need ssm:StartSession for Session Manager, ssm:SendCommand for Run Command, and appropriate permissions for each SSM feature they access.

What’s the difference between Parameter Store and Secrets Manager?

Parameter Store is a general-purpose configuration store with free tier and optional encryption. Secrets Manager is specifically designed for secrets with automatic rotation capabilities. Use Secrets Manager for database credentials requiring rotation; use Parameter Store for general configuration, feature flags, and secrets without rotation needs.

Is Systems Manager secure for production?

Yes—when properly configured. SSM eliminates SSH exposure, provides IAM-based access control, offers complete audit logging via CloudTrail and session logs, supports VPC endpoints for private access, and integrates with KMS for encryption. Many enterprises consider SSM more secure than traditional SSH-based access patterns.


Ready to implement AWS Systems Manager in your environment?

👉 Start the AWS Systems Manager Hands-On Labs and learn secure access, automation, and patching the enterprise way. Build real skills that translate directly to production environments and AWS certification exams.


Last Updated: 2025 | Part of the AWS DevOps Learning Path on thedevopstooling.com

Similar Posts

Leave a Reply