- クラウド技術
AWS Systems Manager パラメータストアで設定値を安全に管理する
- #AWS

「環境ごとの設定値をコードに書くのは危険だけど、どうやって安全に管理すればいいの?」と思ったことはありませんか?そんなときに便利なのが、AWS Systems Manager Parameter Store(パラメータストア)です。環境変数やシークレット値をAWS上で安全かつ簡単に管理でき、IAMを使ったアクセス制御も可能です。
パラメータストアに設定値を登録する
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
AWSパラメータストアでは、「標準パラメータ」と「セキュア文字列」の2種類のパラメータタイプを登録できます。今回は「セキュア文字列」でAPIキーなどの機密情報を保存してみましょう。
- AWSマネジメントコンソールで「Systems Manager」に移動します。
- 左メニューの「パラメータストア」を選択し、「パラメータの作成」をクリックします。
- 以下の情報を入力します:
①名前:例 /prod/api/key
②説明:任意で記述
③タイプ:セキュア文字列
④値:APIキーなどのシークレット値 - KMSキー:特に理由がなければデフォルトの「aws/ssm」でOK(必要に応じてカスタムキーを使用可能)
- 「パラメータの作成」をクリックします。
アプリケーションからパラメータを参照する
登録した値は、CLI・SDK・CloudFormation・Lambdaなど様々な方法で取得可能です。以下は、AWS CLIで値を取得する例です:
1 |
aws ssm get-parameter --name "/prod/api/key" --with-decryption |
Node.jsやPythonからも、SDKで簡単に取得できます。
Node.jsの例(v3 SDK)
1 2 3 4 5 6 7 8 9 |
import { SSMClient, GetParameterCommand } from "@aws-sdk/client-ssm"; const client = new SSMClient({ region: "ap-northeast-1" }); const command = new GetParameterCommand({ Name: "/prod/api/key", WithDecryption: true, }); const response = await client.send(command); console.log(response.Parameter.Value); |
パラメータにアクセスできるようIAMロールを設定
Lambdaなどでパラメータを利用する場合、ssm:GetParameter 権限が必要です。以下はIAMポリシーの例です。
1 2 3 4 5 |
{ "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": "arn:aws:ssm:ap-northeast-1:123456789012:parameter/prod/api/key" } |
まとめ
AWS Systems Manager パラメータストアを使えば、以下のようなメリットがあります:
・アプリケーションから設定値をコード外で安全に管理できる
・環境ごとの切り替えが簡単(名前空間で管理)
・IAMとKMSによるアクセス制御が可能
・CloudFormationやTerraformでIaCとして管理可能
セキュアな設定値管理の第一歩として、ぜひ活用してみてください!
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>