AWS Systems Manager パラメータストアで設定値を安全に管理する

この記事を書いたチーム:tenko

「環境ごとの設定値をコードに書くのは危険だけど、どうやって安全に管理すればいいの?」と思ったことはありませんか?そんなときに便利なのが、AWS Systems Manager Parameter Store(パラメータストア)です。環境変数やシークレット値をAWS上で安全かつ簡単に管理でき、IAMを使ったアクセス制御も可能です。 

パラメータストアに設定値を登録する

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

AWSパラメータストアでは、「標準パラメータ」と「セキュア文字列」の2種類のパラメータタイプを登録できます。今回は「セキュア文字列」でAPIキーなどの機密情報を保存してみましょう。

  1. AWSマネジメントコンソールで「Systems Manager」に移動します。
  2. 左メニューの「パラメータストア」を選択し、「パラメータの作成」をクリックします。
  3. 以下の情報を入力します:
    ①名前:例 /prod/api/key
    ②説明:任意で記述
    ③タイプ:セキュア文字列
    ④値:APIキーなどのシークレット値
  4. KMSキー:特に理由がなければデフォルトの「aws/ssm」でOK(必要に応じてカスタムキーを使用可能)
  5. 「パラメータの作成」をクリックします。

アプリケーションからパラメータを参照する

登録した値は、CLISDKCloudFormationLambdaなど様々な方法で取得可能です。以下は、AWS CLIで値を取得する例です:

Node.jsPythonからも、SDKで簡単に取得できます。
Node.jsの例(v3 SDK

パラメータにアクセスできるようIAMロールを設定

Lambdaなどでパラメータを利用する場合、ssm:GetParameter 権限が必要です。以下はIAMポリシーの例です。

まとめ

AWS Systems Manager パラメータストアを使えば、以下のようなメリットがあります:
・アプリケーションから設定値をコード外で安全に管理できる
・環境ごとの切り替えが簡単(名前空間で管理)
IAMKMSによるアクセス制御が可能
CloudFormationTerraformIaCとして管理可能
セキュアな設定値管理の第一歩として、ぜひ活用してみてください!

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス