TL

Cloud Service

Secret Manager

APIキーやパスワード等の機密値を暗号化して安全に保管・バージョン管理し、IAM とアクセス制御で配布するマネージドサービス。AWS Secrets Manager に相当。

基礎セキュリティ運用上の優秀性
最終更新: 2026-06-14公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.APIキーやパスワードなどの機密値を暗号化して安全に保管する金庫。
  • 2.シークレットはバージョン管理され、IAM で誰が読めるかを最小権限で制御。
  • 3.コードに直書きせず、実行時に Secret Manager から取得して使うのが基本。

解決する課題

APIキー・データベースのパスワード・トークンといった機密値を、ソースコードや環境変数、設定ファイルに直書きしてしまうと、リポジトリの漏えいや権限の広がりから一気に流出します。Secret Manager はこうした機密値を専用の保管庫に集約し、暗号化・アクセス制御・バージョン管理・監査をマネージドに提供します。

  • 認証情報をコードや設定ファイルに直書きしたくない(誤コミットによる漏えいを防ぐ)
  • 機密値のアクセス制御と利用監査を組織として統制したい
  • パスワードやキーの**ローテーション(差し替え)**を、アプリを止めずに行いたい
  • どのアプリ・サービスアカウントがどのシークレットを読めるかを最小権限で管理したい

主要概念と用語

  • シークレット(Secret): 機密値を入れる論理的な入れ物。名前・ラベル・レプリケーションポリシーなどのメタデータを持ち、値そのものは保持しない
  • シークレットバージョン(SecretVersion): 実際の機密値(ペイロード)を持つ単位。値を更新するたびに新しいバージョンが連番で追加される(追記型で、過去バージョンは上書きされない)
  • バージョンの状態: 各バージョンは有効、無効、破棄のいずれか。無効化で一時停止、破棄で値を恒久的に消去できる
  • エイリアス latest: 最新の有効バージョンを指す特別な参照。本番ではバージョン番号を固定する運用も推奨される
  • レプリケーションポリシー: 値を保存するロケーションの方針。Google が自動で複数リージョンに複製する自動レプリケーションと、対象リージョンを利用者が指定するユーザー管理レプリケーションがある
  • アクセス(access)操作: シークレットのペイロード(値)を実際に読み取る操作。メタデータの参照とは別の権限で制御される
  • Secret Accessor ロール: シークレットの値を読み取るための代表的な IAM ロール。アプリのサービスアカウントには原則これだけを付与する

仕様・制限・クォータ

  • 暗号化: 保存時は既定で暗号化される。組織のコンプライアンス要件に応じて Cloud KMS の CMEK(顧客管理の暗号鍵) を使い、暗号鍵を利用者管理に置き換えることもできる
  • バージョンは追記型: 値の更新は新バージョンの追加であり、既存バージョンは上書きされない。これによりロールバックや差し替えの履歴管理が容易
  • ペイロードサイズ: 1 バージョンに格納できる値にはサイズ上限がある。証明書やキーファイルなど比較的大きめのものは入るが、巨大なファイルやデータベース本体の保管には向かない
  • ロケーション: グローバルなエンドポイントに加え、特定リージョンに保存・処理を限定するリージョン版も利用できる。データ所在地(データレジデンシー)要件がある場合に選ぶ
  • クォータ: アクセス(読み取り)等の API 呼び出しには QPS のレート上限があり、必要に応じて引き上げ申請が可能。高頻度アクセスは値のキャッシュで呼び出しを削減する
  • 課金対象: 後述のとおり、アクティブなシークレットバージョン数とアクセス操作数が主な課金軸

内部の仕組み

シークレットは「メタデータを持つ入れ物(Secret)」と「実際の値を持つバージョン(SecretVersion)」に分かれています。値の取得は必ず特定のバージョン(または latest エイリアス)に対する access 操作として行われ、この操作と管理操作は Cloud Audit Logs に記録されます。

  • 値は保存時に暗号化され、access 操作のときだけ復号して返されます。CMEK を構成した場合、その暗号鍵の管理・ローテーション・監査を Cloud KMS 側で握れます
  • レプリケーションポリシーに従って値が複数ロケーションに複製され、可用性と耐久性が確保されます。自動レプリケーションは運用が簡単、ユーザー管理レプリケーションは保存先リージョンを明示的に制御できます
  • バージョンは追記型で連番管理されます。古い値の無効化・破棄、新しい値の追加といったライフサイクル操作を通じて、アプリを止めずに機密値を差し替えられます
Secret Manager と Cloud KMS の違い

Secret Manager は機密値そのもの(パスワードやAPIキー)の保管・バージョン管理、Cloud KMS は暗号鍵の生成・ラップ・ローテーション・署名を担います。役割が別で、Secret Manager の保存暗号化に Cloud KMS の CMEK を使う、という組み合わせも可能です。

設計パターン / ベストプラクティス

  • 認証情報はコードや設定ファイルに直書きせず、実行時に Secret Manager から取得する。CI/CD やコンテナのビルド成果物にも値を焼き込まない
  • アプリのサービスアカウントには原則 Secret Accessor のみを、対象シークレット単位で付与し、管理権限と読み取り権限を分離する
  • 本番では latest をそのまま使うのではなく特定バージョンに固定し、検証後に参照バージョンを切り替える(誤った値が即時に本番へ波及するのを防ぐ)
  • ローテーションは新バージョン追加 → アプリ側の参照切り替え → 旧バージョンの無効化 → 破棄の順で段階的に行う
  • データレジデンシー要件があればリージョン版やユーザー管理レプリケーションを選び、強い統制が必要なら CMEK を併用する
  • 高頻度に読むアプリは取得した値をアプリ内でキャッシュし、過剰な access 呼び出しとコストを抑える

運用・監視

  • シークレットの access(値の読み取り)・追加・破棄は Cloud Audit Logs で監査する。Data Access ログは明示的な有効化が必要なことに注意
  • 値が読めず PERMISSION_DENIED になる場合は、呼び出し元サービスアカウントへの Secret Accessor ロール付与と、対象シークレット(またはプロジェクト)のスコープを確認する
  • 参照しているバージョンが無効化・破棄されていないか、latest が想定どおりの有効バージョンを指しているかを確認する
  • ローテーション後は古いバージョンを即破棄せず、いったん無効化して問題なければ破棄する運用が安全
  • 高頻度アクセスでレート上限に当たる場合は、値のキャッシュ間隔を延ばして access 呼び出しを削減する

コスト

課金は「アクティブなシークレットバージョン数(月額)」と「アクセス(access)操作などの API 呼び出し数」が主な軸です。さらに、自動・ユーザー管理いずれのレプリケーションを使うか、保存ロケーションの数によってもコスト感が変わります。一定の無料枠が用意されており、小規模な利用では費用が小さく収まる傾向があります。

項目課金の考え方コスト最適化のヒント
シークレットバージョンアクティブなバージョン数に応じた月額不要になった古いバージョンは無効化のうえ破棄して整理する
アクセス操作値の読み取りなど API 呼び出し回数で従量課金アプリ側で値をキャッシュし、起動時取得など呼び出しを集約する
レプリケーション複製先ロケーションの数に応じて変動要件がなければ過剰に多リージョンへ複製しない
ローテーション通知通知連携(Pub/Sub 等)の付随コスト本当に通知が要るシークレットに限定して設定する

セキュリティ

  • アクセスはシークレット単位で IAM により最小権限化する。アプリには値を読む Secret Accessor、管理者には作成・破棄を行う管理ロール、というように役割を分離する
  • プロジェクト全体にまとめて読み取り権限を付与せず、個別シークレット単位でバインドして影響範囲を絞る
  • 強いコンプライアンス要件には CMEK を構成し、暗号鍵の管理・ローテーション・監査を Cloud KMS 側で統制する。データ所在地要件にはリージョン版を使う
  • 値の破棄は不可逆なため、ローテーション時はまず無効化で一時停止し、安全を確認してから破棄する
  • 組織ポリシーや IAM 条件を併用し、誤って広い読み取り権限が付かないようガードレールを敷く
アンチパターン

APIキーやパスワードをコードや環境変数、設定ファイルに直書きしてリポジトリに含めるのは NG。 機密値は Secret Manager に保管し、実行時に取得する。読み取り権限は個別シークレット単位で Secret Accessor を最小付与し、プロジェクト全体に広い権限を与えない。値の差し替えは新バージョンの追加で行い、破棄は無効化を経てから実施しましょう。

Well-Architected の観点

  • セキュリティ: 機密値を一元保管し、IAM による最小権限、CMEK による暗号鍵統制、Cloud Audit Logs による監査で、認証情報の漏えいと権限の広がりを抑える
  • 運用の優秀性: バージョン管理とローテーションにより、アプリを止めずに機密値を差し替え・ロールバックでき、認証情報のライフサイクルを標準化できる
  • 信頼性: レプリケーションにより値の可用性と耐久性を確保し、参照バージョンの固定で誤った値の即時波及を防ぐ

試験で問われるポイント

頻出
  • Secret Manager は機密値(APIキー・パスワード・トークン)の保管とバージョン管理を担い、AWS の AWS Secrets Manager に相当する
  • Cloud KMS は鍵の管理、Secret Manager は値の保管、という役割の違いを問われる。Secret Manager の保存暗号化に CMEK を併用できる点も押さえる
  • アプリのサービスアカウントには原則 Secret Accessor ロールを最小付与する。値の読み取りは access 操作で、管理権限とは別に制御される
  • 値の更新は**新しいバージョンの追加(追記型)**で行い、latest エイリアスや特定バージョン固定の使い分けを理解する
  • ローテーションは新バージョン追加 → 参照切り替え → 旧バージョンの無効化 → 破棄の順で安全に進める
  • データレジデンシー要件にはリージョン版やユーザー管理レプリケーション、強い鍵統制には CMEK を選ぶ
  • 認証情報をコードや設定ファイルに直書きしないことが基本方針として問われる

関連サービス・比較

観点Google Cloud Secret ManagerAWS Secrets Manager
位置づけ機密値の保管・バージョン管理(マネージド)機密値の保管・バージョン管理(マネージド)
保管の単位Secret + SecretVersionSecret + バージョン(ラベル付き)
最新参照latest エイリアスAWSCURRENT などのステージラベル
アクセス制御IAM(Secret Accessor 等)IAM + リソースベースポリシー
暗号鍵の統制CMEK(Cloud KMS)AWS KMS のカスタマー管理キー
利用監査Cloud Audit LogsAWS CloudTrail
鍵そのものの管理Cloud KMS(別サービス)AWS KMS(別サービス)

ハンズオン / CLI例

# シークレットを作成(自動レプリケーション)
gcloud secrets create db-password \
  --replication-policy automatic

# 値(バージョン)を追加。標準入力からパイプで渡す例
printf "S3cr3t-P@ssw0rd" | gcloud secrets versions add db-password \
  --data-file -

# アプリのサービスアカウントに、このシークレットの読み取り権限のみを付与
gcloud secrets add-iam-policy-binding db-password \
  --member "serviceAccount:app@PROJECT_ID.iam.gserviceaccount.com" \
  --role roles/secretmanager.secretAccessor

# 最新の有効バージョンの値を取得(latest エイリアス)
gcloud secrets versions access latest \
  --secret db-password

# 特定バージョンを明示して取得(本番はバージョン固定が推奨)
gcloud secrets versions access 1 \
  --secret db-password

# ローテーション後、古いバージョンをまず無効化(破棄は安全確認後)
gcloud secrets versions disable 1 \
  --secret db-password

Google Cloud Service

Secret Managerを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

セキュリティ・ID

比較で見る軸

クラウド: Google Cloud / カテゴリ: セキュリティ・ID / 難易度: basic

導入後に効く点

シークレットはバージョン管理され、IAM で誰が読めるかを最小権限で制御。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
セキュリティ・ID
難易度
basic
関連資格
設計柱
security / operational

判断チェックリスト

  • 自社の用途が「セキュリティ・ID / security」に近いか確認する。
  • 強みである「APIキーやパスワードなどの機密値を暗号化して安全に保管する金庫。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

セキュリティ・IDsecurityoperational