AWS Secrets Manager から特定の値だけ取得できないか調べ無理と分かったこと

AWS Secrets Manager から特定の値だけ取得できないか調べ無理と分かったこと

2026.01.05

はじめに

お疲れ様です。年末に風邪を引いて寝ているだけの正月でした、あかつきです。

今回は AWS Secrets Manager から特定のキーだけを部分的に取得できないか調べる機会がありましたので、調査してみた内容を共有したいと思います。

調査のきっかけ

AWS Secrets Manager を使ってシークレットを管理し、プログラムからシークレットを呼び出す際に、「特定のキーだけを取得できないか」という疑問が湧いてきました。

例えば、JSON 形式で保存されているシークレットから password というキーだけを取得したい、といったケースです。

セキュリティや効率性の観点から、必要な値だけを取り出せれば便利だと思い、実際に調べてみることにしました。

結論から言うと、AWS Secrets Manager 単体では部分取得はできません

以下、調べた内容を書いていきます。

GetSecretValue API の仕様を確認

まず、AWS Secrets Manager からシークレットを取得する方法について公式ドキュメントを確認しました。

AWS Secrets Manager からシークレットを取得するには GetSecretValue API を使用します。

この API のリクエストパラメータを見てみると、以下のものしかありません:

  • SecretId: 取得したいシークレットの ID
  • VersionId: バージョン ID(オプション)
  • VersionStage: バージョンステージ(オプション)

つまり、特定のキーだけを指定して取得するパラメータは存在しないことがわかりました。

GetSecretValue は SecretString 全体、または SecretBinary 全体を返す仕様になっており、部分的な取得には対応していません。

https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_Operations.html

なぜ部分取得ができないのか

次に、なぜ部分取得ができないのかを考えてみました。

あくまで想像ですが、AWS Secrets Manager ではキーとバリューの関係自体が暗号化されているため、キーが何かわからない状態になっています。

そのため、特定のキーだけを取り出すには、結局一度全体を復号化する必要があるからなのかなと。

AWS サービス統合では JSON キー指定が可能

調査を進める中で、AWS Secrets Manager の値を参照する別サービスの機能として、JSON キー指定ができるものがあることがわかりました。

ただし、これは AWS サービス側の機能であり、Secrets Manager 自体が部分取得をサポートしているわけではありません。

これらのサービスでは、内部的に Secrets Manager から全体を取得した後、指定されたキーの値を抽出して環境変数などに設定しています。

https://dev.classmethod.jp/articles/get-values-by-secretmanager-from-apprunner/

どう対処すればいいか

AWS Secrets Manager で特定の値だけを扱いたい場合、以下の 2 つの対処法が考えられます。

1. キー単位でシークレットを分離する

シークレットを細かく分割して、1つのシークレットに 1つの値だけを保存する方法です。

メリット:

  • 必要な値だけを取得できる
  • IAM ポリシーで権限管理を細かく設定できる
  • 不要な値を取得しないため、セキュリティ面で安心

デメリット:

  • シークレットの数が増えて管理が煩雑になる
  • コストが増加する可能性がある(シークレット数に応じた料金)

2. アプリケーション側で全取得後に JSON をパースする

シークレットを JSON 形式で保存し、アプリケーション側で全体を取得してから必要なキーを抽出する方法です。

メリット:

  • シークレットの数を抑えられる
  • 管理がシンプル
  • 関連する設定値をまとめて管理できる

デメリット:

  • 不要な値も取得してしまう
  • アプリケーション側でパース処理が必要

今回の場合、私は「2. JSON パース」のアプローチを取りましたが、プロジェクトによって取る手段は変わると思います。

まとめ

今回は AWS Secrets Manager から特定のキーだけを部分的に取得できないか調査してみました。

結論として、AWS Secrets Manager から直接特定のキーだけを取得するような API は提供されていません。

複数の値をまとめてシークレット化している場合は、クライアント側で JSON パースが必要になります。

ただし、AWS サービスの統合機能を活用できる場合は JSON キー指定ができるので、そちらを利用するのも良いでしょう。

本ブログが誰かの参考になれば幸いです。

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

FacebookHatena blogX

関連記事