AWSパラメータストアの利用メリット

 

この記事について

本記事は、2022年1月時点の社内向け資料をもとに再編集したものです。
記載されている技術情報・仕様・価格等は執筆当時の内容に基づいており、最新の内容とは異なる可能性があります。
ご利用の際は、AWS公式ドキュメント等で最新情報をご確認ください。


概要

アプリケーションで使用する定数や機密情報を、AWS Systems Managerの「パラメータストア」で管理する仕組みを導入しました。

本記事では、その導入背景と運用上のメリット・デメリットについてまとめます。 

目次

Systems Manager パラメータストアとは。

パラメータストアは、従来 .env ファイルで管理していたような設定値や機密情報を、AWS上で一元管理・取得できるサービスです。

サーバーやコンテナからこの情報を動的に参照することで、安全かつ柔軟な運用が可能になります。

 

 

 

 

 

メリット

  1. 設定値をコードから分離して管理できる
  2. 運用・開発の負荷軽減につながる
  3. 機密情報を安全に保管・管理できる 

1. 設定値をコードから分離して管理できる

  • パラメータが視覚的に一覧できるため、見やすい
  • AWSのコンソール画面を使って誰でも管理できる(非エンジニアでも操作可能)
  • パラメータ値の変更がすべてAWS上で完結するため、コードの修正は不要
  • 変更履歴をAWS上で確認でき、コードリポジトリを追う必要がない

 

2. 運用・開発の負荷軽減につながる

閾値などの設定値をパラメータストアで管理しておくことで、運用上の柔軟性が向上します。

例えば、閾値がコード内にハードコーディングされている場合は、
「コード修正 → PR作成 → レビュー → マージ → デプロイ」といった一連の開発フローが毎回必要になります。

一方、パラメータストアに閾値を設定していれば、
「パラメータの値を修正 → アプリケーションの再起動(例:Ruby on Railsの場合rails restart)」のみで対応が完了します。

そのため、わざわざ開発者に修正を依頼しなくても済み、運用担当者自身で設定変更ができるようになり、対応や確認作業にスピード感を持たせることが可能です。

 

3. アクセスキーなどの機密情報を安全に管理できる

パラメータストアは、データベースの接続情報やAPIキーなどの秘匿情報を安全に管理するのに適しています。

秘匿情報をソースコード内に記述しGitで管理してしまうと、万が一コードが外部に流出した際に、機密情報まで漏洩してしまうリスクがあります。

実際に、ソースコードがGitHub上で誤って公開され、情報流出につながった事例も報告されています(例:NEC、三井住友銀行、NTTデータなど)。

出典:ITmedia NEWS – NECもソースコード流出を確認、GitHubで
https://www.itmedia.co.jp/news/articles/2102/01/news118.html

パラメータストアでは「セキュア文字列(SecureString)」というタイプを選択することで、パラメータを暗号化して保存することが可能です。

これにより、機密情報の取り扱いをより安全に行うことができます。

 

デメリット

  1. 初期設定や管理に手間がかかる場面がある
  2. コンテナ利用時は変更を反映させるための再起動が必要
  3. ローカル開発環境には.envの併用が必要になる

 

1. 初期設定や管理に手間がかかる場面がある

パラメータをAWS上で設定し、それをコード側で読み込む必要があるため、運用上はひと手間増えることになります。

その分、安全性は高まりますが、手間とのバランスをどう取るかが課題になる場面もあります。

 

2. コンテナ利用時は変更を反映させるための再起動が必要

コンテナ環境では、パラメータストアの値を変更した後にコンテナを再起動しないと、変更内容が反映されません。

(Ruby on Railsの場合、rails restart などでも対応可能です)。

3. ローカル開発環境には.envの併用が必要になる

ローカルPCで開発を行う場合は、別途 .env ファイルを用意して設定する必要があります。

ただし、ローカル環境でもコンテナを利用して開発している場合は、パラメータストアの値を直接参照できるため、この対応が不要になる可能性もあります(※詳細は未検証)。

料金

パラメータストアには「スタンダード」と「アドバンスト」の2つのオプションがあります。

  • スタンダード(Standard):無料で利用可能です。
  • アドバンスト(Advanced):1パラメータあたり月額0.05 USDで、最大8KBまでのデータを設定できます。

詳細な料金については、以下の公式情報をご参照ください。

出典:Amazon Web Services Japan – AWS Systems Manager の料金
https://aws.amazon.com/jp/systems-manager/pricing/

 

設定方法(ECS)

task-definition.json

"containerDefinitions": [
        {
            "secrets": [
                {
                    "name": "DATABASE_PASSWORD",
                    "valueFrom": "arn:aws:ssm:{AWS Region}:{AWS Account ID}:parameter/DATABASE_PASSWORD"
                },
                {
                    "name": "DATABASE_USER",
                    "valueFrom": "arn:aws:ssm:{AWS Region}:{AWS Account ID}:parameter/DATABASE_USER"
                },
︙
︙

deploy.yml

- name: Render Amazon ECS task definition
        with:
          task-definition: ecs/task-definition.json

参考URL

出典:資格マフィア – 【AWS】パラメータストアを使うメリット
https://shikaku-mafia.com/parameter-store-merit/

出典:DevelopersIO(クラスメソッド) – ECS Task DefinitionをActionsで自動更新する
https://dev.classmethod.jp/articles/gh-actions-automation-task-definition/

出典:DevelopersIO(クラスメソッド) – AWS CLIですべてのSSM Parameterを一括取得する
https://dev.classmethod.jp/articles/aws-cli-all-ssm-parameter-get/

出典:Qiita – パラメータストアからEC2に環境変数を設定する
https://qiita.com/th_/items/8ffb28dd6d27779a6c9d

出典:Qiita – AWSのParameter StoreとSecrets Manager、結局どちらを使えばいいのか?比較
https://qiita.com/tomoya_oka/items/a3dd44879eea0d1e3ef5

出典:Stack Overflow 日本語サイト – AWS の Parameter Store と Secrets Manager はどのように使い分けますか?
https://ja.stackoverflow.com/questions/68897/

技術情報の補足

本記事でご紹介している手法や事例は、筆者が関わった2022年当時の開発案件におけるナレッジをまとめたものです。
現在の技術スタックやフレームワークのバージョンにおいては、より適切な手法がある場合がありますので、あくまで参考情報としてご覧いただき、必要に応じて最新の公式情報をご確認ください。

役に立ったらシェアしていただけると嬉しいです
  • URLをコピーしました!
  • URLをコピーしました!
目次