AWSのSSMパラメータストア(AWS Systems Manager Parameter Store)は、設定情報や機密情報(パスワードやアプリケーションの設定情報)を安全に管理するためのサービスです。
このサービスを活用することで、設定情報や機密情報を安全に管理することが可能です。
この記事では、SSMパラメータストアの概要、特徴を解説します。
ぜひ一緒に学んでいきましょう。
SSMパラメータストアとは
SSMパラメータストアは、アプリケーションやシステムが動作するために必要な情報を安全に保存し、管理するためのサービスです。
SSMパラメータストアを利用すれば、環境変数などの値やデータベースの接続情報、APIキー、パスワードなど、アプリケーションに必要な設定データを管理できます。
AWS Systems Manager Parameter Store
SSMパラメータストアを利用するメリット
ここからは、SSMパラメータストアを利用するメリットについて解説していきます。
サーバーの管理が不要
SSMパラメータストアはAWSのマネージドサービスのため、ユーザーが独自にサーバーを用意する必要がないため、運用にかかる負担を軽減できます。
仮に独自のサーバーで機密情報を管理する場合、サーバーのセットアップや保守、セキュリティパッチの適用など、運用していく上で対応が必要な作業が発生します。
SSMパラメータストアを利用すれば、これらの作業をすべてAWSに任せることができ、運用チームの負担を減らすことが可能です。
セキュリティリスクの低減
SSMパラメータストアを利用することで、コード内に機密情報を保持する必要がなくなります。
特にGitなどのバージョン管理システムにコードを保存する際のリスクを軽減します。
たとえば、データベースの接続情報やAPIキーがコードに含まれていると、誤って公開リポジトリにアップロードした場合に深刻なセキュリティインシデントを招く可能性があります。
SSMパラメータストアを使用すれば、こうした機密情報をAWS環境内で安全に管理し、アプリケーションはこれを動的に取得するだけでよくなります。そのため、作業ミスによる機密情報流出などを防ぐことができます。
運用の効率化
パラメータを一箇所に集約して管理することで、複数環境で設定値を共有できます。
管理、本番環境、開発環境の3つのアカウントがあった場合、管理アカウントでパラメータを保管しておきます。
こうすることで、本番、開発アカウントからは管理アカウントのパラメータを参照するだけでよくなるため、運用、開発のコストを下げることができます。
各パラメータはそれぞれのパスを指定して参照するため、万が一パラメータが変更された場合でもアプリケーションやインフラのコードを変更せずに適用可能です。
SSMパラメータストアの特徴
SSMパラメータストアにはどのような特徴があるのかについても確認していきます。
階層型のデータ管理
パラメータストアはデータを階層型(パス)で管理する仕組みです。
先述した開発環境や本番環境といった異なる設定を明確に整理でき、環境ごとの使い分けが可能です。
また、KMS(AWS Key Management Service)と統合されているため、機密データを暗号化して安全に保存できます。
他のAWSサービスとの連携
AWSの他のサービスと連携している点も特徴です。
EC2やLambdaなどのサービスから直接パラメータを参照できるため、設定情報の取得がスムーズに行えます。
また、IAMポリシーを使ってアクセス制御を細かく設定することで、誰がどのパラメータにアクセスできるかを細かく管理できます。
このように、特定のリソースやユーザーだけが機密データにアクセスする仕組みを構築することが可能です。
監査やセキュリティ対応の負担軽減
監査やセキュリティ対応の負担も軽減できます。
AWS CloudTrailを有効化することですべての操作履歴が記録されるため、パラメータの変更やアクセスの履歴を保管、追跡できます。
これは監査対応が必要な時や、外部からの不正アクセスが発覚した際にも効果を発揮します。
パラメータの種類
SSMパラメータストアでは、以下3種類のパラメータタイプがあります。利用する条件に応じて使い分けることが可能なため、種類についても解説します。
String
シンプルな文字列を保存する場合に使用します。
暗号化はされないため、環境ごとの設定値やアラート通知先のメールアドレスなど、一般的な非機密情報や共有可能な設定値を管理するのに適しています。
development
staging
production
StringList
カンマ区切りの文字列リストを保存します。
複数の値を1つのパラメータで管理したい場合に便利です。
StringListの場合、AWSコンソール上で編集すると改行がカンマに変換される特徴があります。
CSV,TSV,CLF,ELF,JSON
SecureString
機密情報を保存するためのパラメータです。
KMSを使用して暗号化されるため、データベースのパスワードやAPIキーなど安全に保管しておきたいデータに適しています。
DBPassword!
SecureStringではパラメータの値のみが暗号化され、パラメータ名、説明などは暗号化されません。そのため、SecureStringパラメータを作成する際は重要な情報を名前や説明に含まないよう注意が必要です。
また、SecureStringは無料で作成することが可能です。
SSMパラメータストアの料金
SSMパラメータストアには「スタンダードパラメータ」と「アドバンスドパラメータ」の2種類があり、通常利用する場合にはスタンダードパラメータを利用します。
通常利用のスタンダードであれば、料金は発生しません。
パラメータのサイズが4KBを超える、10,000件以上のパラメータを利用するといった場合にはアドバンスドパラメータが必要になります。アドバンスドパラメータを利用する場合にはAPIの呼び出し1万回ごとに0.05ドルが発生します。
SSMパラメータをAWS CLIで操作する
ここからは、AWS CLIを使用したSSMパラメータの操作方法を紹介します。
先述した通り、SSMパラメータは階層構造で管理する仕組みのため、作成、データの閲覧などの操作はパスを指定します。
Stringパラメータの作成
ターミナルから、以下コマンドを実行します。
aws ssm put-parameter --name "/dev/application/config" --value "myConfigValue" --type String
--name
オプションで、パラメータの名前を表しています。この名前には階層構造を持たせることができ、スラッシュ /
を使って「どの環境で」「どの用途に使うか」などを表現します。
--value
オプションには、このパラメータに保存する値を指定します。今回の例では myConfigValue
という文字列を値として保存します。
最後に--type
オプションでパラメータのデータ型を指定しています。この場合、String
型を指定しているため単純な文字列データとして保存します。
StringListパラメータの作成
StringListは、値ごとにカンマ区切りで記述します。
--type
オプションでStringList
を指定することで、リスト型のパラメータを作成できます。
aws ssm put-parameter --name "/dev/application/configList" --value "value1,value2,value3" --type StringList
SecureStringパラメータの作成
--type
オプションでSecureString
を指定します。
任意の文字列を入力することができます。
aws ssm put-parameter --name "/dev/application/secureConfig" --value "mySecureConfigValue" --type SecureString
パラメータの上書き
作成したパラメータを上書きすることもできます。
パラメータ名を上書きするには、--overwrite
オプションを指定します。
aws ssm put-parameter --name "/dev/application/secureConfig" --value "mySecureConfigValue" --type SecureString --overwrite
パラメータの情報を取得する
作成したパラメータの情報を取得するには、get-parameter
を使用します。
aws ssm get-parameter --name "/dev/application/config"
SecureStringとして作成した場合、暗号化された値が表示されます。
元の文字列を確認したい場合、--with-decryption
オプションを指定します。
aws ssm get-parameter --name "/dev/application/secureConfig" --with-decryption
パラメータを削除する
パラメータの削除にはdelete-parameter
を使用します。
aws ssm delete-parameter --name "/dev/application/config"
AWS CLIで削除する場合、コマンドを実行すると確認されることなくそのまま削除されてしまうため注意が必要です。
次の記事では、SSMパラメータストアを使用したCloudFront構築ハンズオンをご紹介しています。
【Terraformハンズオン】AWS CloudFront&ALB構成を実現しよう
まとめ
この記事では、AWSのSSMパラメータストア(AWS Systems Manager Parameter Store)について解説しました。
パラメータストアを利用することで、設定情報や機密情報を安全に管理することができます。
利用料金も一般的な用途であれば無料で利用できるため、設定情報の管理、機密情報の管理が必要な場合は利用を検討してみましょう。
参考記事
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.10.31
マイナーだけど使える!AWS App Runnerを活用したシンプルなコンテナデプロイ解説
本記事では、App Runnerの特徴やメリット、デプロイの方法を詳しく解説します。
- AWS
2024.05.13
CICDパイプラインでECSを使用したアプリケーションのデプロイ
今回は、このパイプラインを拡張し、ECSを使用してアプリケーションをデプロイするデプロイステージの設定と動作確認を行います。
- AWS
- ハンズオン
2024.10.31
CloudFormation vs Terraform どっちを選ぶ?自動化ツールの違いと選定ポイント
この記事では、CloudFormationとTerraformの主な違いを整理し、それぞれの特徴やメリット・デメリットを理解することで、あなたのプロジェクトに最適なツールを選ぶためのガイドとなることを目指します。
- AWS
- インフラエンジニア