AWS Systems Manager(SSM)

AWS Systems Manager(SSM)の特徴

AWS Systems Manager(SSM)は、AWS 内のリソースだけでなく、オンプレミスやマルチクラウド環境でも一元的に表示、管理、および運用できます。SSM は 1つの単独機能ではなく、複数の管理ツールの集合体です。代表的なものに Run Command、Session Manager、Automation、Parameter Store、Patch Manager、State Manager などがあります。

Session Manager(セッションマネージャ)

Session Manager は、踏み台サーバーや SSH を使わずに、対象ノードへシェル接続できる機能です。ブラウザ、AWS CLI、または SDK からセッションを開始できます。操作開始・終了は CloudTrail で監査でき、セッション中に実行されたコマンドや出力のログは CloudWatch Logs や S3 に保存できます。これは Session Manager のセッションロギング機能で、CloudWatch Logs または S3 に保存します。Session Manager の設定で有効化できます。

Run Command(ランコマンド)

Run Command は、AWS Systems Manager(SSM)の機能の1つで、EC2などのサーバーに対して SSH/RDPでログインせずに、コマンドをリモート実行できる仕組みです。Run Command はマネージドノードに対して、一般的な管理タスクや一時的な設定変更を安全にリモート実行するための Systems Manager の機能です。

Parameter Store(パラメーターストア)

パラメーターストアは、正式には AWS Systems Manager Parameter Store で、アプリケーションやサーバーが使う設定値・接続情報・パスワードなどを、AWS上で一元管理するための仕組みです。

アプリケーションにはこういう設定値がよくあります。これらをアプリケーションのコード内に直接書くと危険です。

DB_HOST=aurora-cluster.xxxxx.ap-northeast-1.rds.amazonaws.com
DB_PORT=3306
DB_NAME=app_db
DB_USER=app_user
DB_PASSWORD=xxxxxxxx
ENV=prod

そこで、パラメーターストアを利用して以下のようにします。

SSM Parameter Store
  ├─ /prod/app/db/host
  ├─ /prod/app/db/name
  ├─ /prod/app/db/user
  ├─ /prod/app/db/password
  └─ /prod/app/api/endpoint

アプリケーション側は、必要なときに AWS API 経由で必要なパラメーター(値)を取得します。

パラメーターの種類

パラメーターには以下の3種類があります。

  • String 通常の文字列 暗号化なし
  • StringList カンマ区切りの文字列リスト 暗号化なし
  • SecureString パスワード・APIキーなどの機密値 KMSで暗号化あり

SecureString とは

SecureString は、Parameter Store に保存する値を AWS KMS で暗号化するタイプです。

使う対象は、例えば以下です。

  • DBパスワード
  • APIキー
  • 外部サービスのトークン
  • ライセンスキー
  • 秘密情報

Parameter Store は、SecureString パラメータを作成または変更する際に、AWS KMS keys を使用してそのパラメータ値を暗号化します。また、アクセス時に KMS キーを使用してパラメータ値を復号します。Parameter Store がアカウント用に作成した AWS マネージドキーを使用することも、独自のカスタマーマネージドキーを指定することもできます。