目次
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 マネージドキーを使用することも、独自のカスタマーマネージドキーを指定することもできます。