はじめに
この記事では AWS Cloud Tech を通して AWS Systems Manager(以下、AWS SSM) を学習して実践していく記事です。
主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば書き直していく予定です。
AWS Systems Manager とは
AWS Systems Manager (旧称 SSM) は、
AWS でインフラストラクチャを表示および制御するために使用できる AWS のサービスです。
なるほど。全くわからん。
なんとなーくで解釈すると。。。
セキュリティや運用の自動化そして、パラメータストアとして活躍すると
(なんかまた、横文字出てきた)
パラメータストアとは
(なんだろう。。。基本情報技術者試験に出てきそうなワード)
パラメータ(値)ストア(貯める)なのでお察しですが
パラメータストアとは任意の値を保存しておける場所のこと。
AWS SSM では主に平文の文字列とセキュアストリング、文字列リストを保存できるとのこと
(なんかまた、横文字出てきた)
平文とセキュアストリング
平文は「ひらぶん」と読みます。
英語ではしばしば、Plain Text または ClearText と表現されます。
AWS では平文のことをプレーンテキストと表現しています。
で、平文とセキュアストリングって何がどう違うんですかという話ですが
ざっくり言えば、平文は暗号化されません。つまり、まる裸文字列 DAZE!
セキュアストリングは暗号化された文字列です。
ちなみに平文でパスワードのやりとりをしてしまう代表的なプロトコルには
FTP、POP、Telnet が存在する。
どういうときにどっち使うの?
ざっくり言うと
見えてしまっても良いモノ(困らないモノ)に平文を使う。
見られたら困るモノにセキュアストリングを使う。
使うと良いこと
最近、掲載した CloudFormation によく使われるのですが
例えば、IaC 化したソースコードの中に
ハードコーディングしたくない値があったときに AWS SSM パラメータストアを活用すると
ソースコード内に特定の値をハードコーディングする必要がなくなり
AWS SSM 依存ではあるもののより抽象的で汎用的な IaC 化が実現できる。
ハードコーディングって何ですか
決め打ちの値
例えば、どのファイルにおいても普遍の定数値やパスワード、URL などを
ソースコード内に埋め込むこと
実際の書き方
ami-name という変数名に AMI ID「ami-0992fc94ca0f1415a」を保存しておき
テンプレートで参照する場合はこんな感じになると。。。
AWSTemplateFormatVersion: 2010-09-09
Resources:
myEC2Instance:
Type: AWS::EC2::Instance
Properties:
KeyName: PrivateEc2Key
ImageId: '{{resolve:ssm:ami-name:1}}'
InstanceType: t2.micro
Monitoring: false
NetworkInterfaces:
- AssociatePublicIpAddress: false
DeviceIndex: "0"
GroupSet:
- !ImportValue PrivateSecGrp
PrivateIpAddress: "10.0.1.15"
SubnetId: !ImportValue PrivateSubnet
Tags:
- Key: Name
Value: PrivateEC2
'{{resolve:ssm:ami-name:1}}'
最後の 1 はパラメータのバージョン番号、変更管理に使う番号ということで間違いなさそう。(本当か?)
CloudFormation でセキュアストリングを使うときの注意点
CloudFormation において
セキュアストリングがサポートされている AWS サービスは決まっている。
ゆえに、Cloud Formation テンプレート内に隠したい文字列があるから使おう!という用途では使用できない。
また、セキュアストリングは Outputs で出力することはできない。
どうしてもセキュアストリングを Cloud Formation で扱いたい
Secrets Manager を使いましょう。
まとめ
AWS Systems Manager を扱うと運用を自動化したりセキュアな環境を維持したり
はたまた、特定のパラメータストアに値を保存することができる。
パラメータストアとは値を保管しておく場所のことである。
パラメータストアには平文、セキュアストリング、文字列リストを保存できる。
平文は暗号化されない文字列、セキュアストリングは暗号化される文字列であり
平文は見られても困らないモノにセキュアストリングは見られたくないモノに使う。
AWS SSM のパラメータストアで扱うセキュアストリングを CloudFormation で利用するときは
特定の AWS サービスにしか適用できず、また Outputs にも出力できない。
どうしてもセキュアストリングを扱いたい場合はパラメータストアのサービスである
AWS Secrets Manager を活用する。