GH GambleHub

シークレットマネジメント

シークレットマネジメント

1)「秘密」とはどのようなものなのか"

秘密-開示がシステムまたはデータの妥協につながる資料:パスワード、APIトークン、OAuth/JWTプライベートキー、SSHキー、証明書、暗号化キー(KEK/DEK)、 Webhook署名キー、DSNデータベース/キャッシュ、ベンダーキー(支払い、メール/SMSプロバイダー)、クッキーソルト/ペッパー、ボット/チャットトークン、ライセンス。
秘密はコード、構成、環境、コンテナイメージ、CI/CD、 Terraform/Ansible、ログ/ダンプに住んでいます-秘密の管理のタスク:アカウント→ストレージ→配信→使用→回転→応答→監査→利用。

2)アーキテクチャの原則

一元化。ストレージ、発行、および監査のための1つの信頼できるレイヤー(Vault/Cloud Secret Manager/KMS)。
最小特権(PoLP)。最低期間、必要なサービス/ロールにのみアクセスできます。
短命だった。TTL/リースでのダイナミック/タイムシークレットが好ましい。
暗号アジリティ。ダウンタイムなしでアルゴリズム/キー長を変更する機能。
秘密をコード/画像から分離します。リポジトリにパスワードはなく、Dockerイメージもありません。
観察可能性と監査。発行/読み取りシークレットの各操作はログ化され、削除されます。
自動ローテーション。回転はパイプライン内のプロセスであり、手動操作ではありません。

3)典型的なソリューションとコンポーネントの役割

KMS/HSM。ルートトラスト、暗号化/キー包装操作(エンベロープ)。
シークレットマネージャー/ヴォールト。シークレットバージョンストア、ACL、監査、動的秘密(DB、 クラウドIAM、 PKI)、回転テンプレート。
PKI/CA。短命なmTLS/SSH/JWT署名の発行。
エージェント/サイドカー。runtime (tmpfs、 in-memory k/v、 hot-reloadファイル)への秘密の配信。
CSIドライバ/演算子。Kubernetes (Secret Store CSI Driver、 cert-manager)との統合。
Gitの暗号化レイヤー。SOPS/age、 git-crypt(インフラストラクチャコード用)。

4)分類と方針

クリティカル(P0/P1/P2)とダメージの量(テナントスコープ、環境スコープ、組織全体)による個別の秘密。各クラスには、次のように指定します:
  • TTL/リースおよび回転頻度;
  • 出力方法(ダイナミクスと静的)、フォーマット、メディア;
  • アクセスポリシー(who/where/when/why)、 mTLSおよび相互認証要件;
  • 監査(私たちがどれくらい保管しているか、誰がレビューしているかをログに記録すること);
  • 壊れ目ガラスのプロシージャおよびリコール。

5)秘密のライフサイクル

1.作成:メタデータ(所有者、タグ、スコープ)を持つSecret Manager APIを使用します。
2.ストレージ:暗号化(エンベロープ:KMS/HSMからKEKでラップされたDEK)。
3.配達:承認されたエンティティ(OIDC/JWT、 SPIFFE/SVID、 mTLS)の要求に応じて。
4.使用法:専用メモリ/tmpfs;ロギング/ダンプの禁止。

5.回転: TTLまたはイベントによって(妥協);並列バージョンのサポート(N-1)

6.リコール/ブロック:リースの即時期限、ターゲットシステムのアカウント/キーの無効化。
7.廃棄:バージョン/マテリアル、明確な監査チェーンの破壊。

6)動的秘密(デフォルトで推奨)

アイデア:秘密は短時間発行され、自動的に期限切れになります。例:
  • データベース認証情報(Postgres/MySQL)とTTL 15-60 min。
  • サービスロールによる一時的なクラウドキー(AWS/GCP/Azure)。
  • SSH証明書(5-30分)、X。509証明書(時間/日)。
  • 署名要求のための一時的なJWT、セッションチケットブローカー。
  • 長所:最小限の爆風半径、単純化されたリコール(世界では何も「残る」ことはありません)。

7)実行時の秘密の配信

Kubernetes:
  • Secret Store CSI Driver→外部マネージャからPodをファイルとしてマウントする(tmpfs)。
  • 唯一のソースとしてKubernetes Secretを避ける(base64 ≠暗号化)。必要に応じて、KMSプロバイダをetcdに有効にします。
  • 自動リネバルリースとホットリロードを備えたサイドカーエージェント(Vault Agent/Secrets Store)。
  • VM/ベアメタル:システムエージェント+mTLSからVault/Secret Manager、メモリ内のキャッシュ、最小TCB。
  • サーバーレス:環境変数/ファイルとしてシークレットを透過的に置き換えるクラウド統合ですが、長寿命のエンバー(好ましくはファイル/メモリ内)は避けてください。

例(Kubernetes+CSI、概念的に)

yaml apiVersion: v1 kind: Pod metadata: { name: app }
spec:
serviceAccountName: app-sa # is associated with a role in Secret Manager volumes:
- name: secrets csi:
driver: secrets-store. csi. k8s. io readOnly: true volumeAttributes:
secretProviderClass: app-spc containers:
- name: app volumeMounts:
- mountPath: /run/secrets name: secrets readOnly: true

8) CI/CDおよびIaCの統合

CI:労働者はOIDC (Workload Identity)に従って短命のトークンを受け取ります。ログに入る「マスクされた」秘密の禁止。ステップ「リークスキャン」(trufflehog/gitleaks)。
CD:展開は、表示時に秘密を取ります、アーティファクトにそれらを書き込みません。
IaC: TerraformはSecret Managerに変数を格納します。状態は暗号化され、アクセスが制限されます。
SOPS/age: reposの場合-KMSの制御下で暗号化されたマニフェスト、キーを保存します。

例(SOPSフラグメント)

yaml apiVersion: v1 kind: Secret metadata: { name: app }
data:
PASSWORD: ENC[AES256_GCM,data:...,sops:...]
sops:
kms:
- arn: arn:aws:kms:...
encrypted_regex: '^(data    stringData)$'
version: '3. 8. 0'

9)アクセスポリシーとワークロード認証

ワークロードのアイデンティティ:SPIFFE/SPIRE、 Kubernetes SA→OIDC→IAM- роль、 mTLS。
一時トークン:短いTTL、狭いスコープ。
ABAC/RBAC in Secret Manager: 「Y環境でXシークレットを読める人」と「作成/回転できる人」は別です。
マルチテナント:テナントごとに別々の名前空間/キーリング。個々のポリシーとレポート。

10)回転、バージョンおよび互換性

シークレットIDとバージョン('secret/app/db#v17')を分離します。
非停止回転のための2つのアクティブなバージョン(NとN-1)をサポートします。
ローテーションはイベントベースです:解雇、妥協、プロバイダの変更、アルゴリズムの移行。
自動化:Vault/Secret Managerのcron/backend回転+アプリケーションの再起動/renevalのwebhookトリガー。

ミニレシピ「ツーキー」Webhook回転

text
T0: we publish two secrets in the provider: current, next
T1: the application starts accepting signatures by both current and next
T2: external system switches signature to next
T3: we do next -> current, re-release new next

11)オフランタイムストレージ: バックアップとアーティファクト

アーティファクト(画像、ログアーカイブ、ダンプ)に入らないでください。
Secret Managerバックアップ-暗号化、同一ループ外のストレージキー(職務の分離)。
タグとDLPスキャン:S3/Blob/GCS、 Git、 CIアーティファクトの秘密を検出します。

12)観察可能性、監査およびSLO

メトリクス:発行回数/秘密/サービス、期限切れのリースのシェア、平均TTL、回転時間、収束時間(新しいバージョンを「受け入れる」前の秒/分)。
監査ログ:who/what/when/where/why;ストレージは別々に暗号化されています。
SLO: 99%出力<200ミリ秒;0ログのリーク;100%の秘密が所有者/TTL/タグを持っています。100%重要な秘密-30日≤動的または回転。
アラート:secret expires <7 days (staticの場合)、spike in authentication failures to storage、 Ndays (dead)、予期しないgeo/ASNソース。

13)頻繁な間違いとそれらを回避する方法

Git/imageryの秘密。SOPS/ageとスキャナを使用します。「ベアライン」を禁止する方針。
長期的な媒体としてEnvvars。tmpfs/in-memoryファイルを優先します。フォーク/ダンプで環境をきれいにして下さい。
dev/stage/prodの同じ秘密。環境によって分けて下さい。
長寿命の静的パスワード。動的/短命に切り替えます。
すべてのための単一のマスターキー"。"テナント/プロジェクト/サービスで分ける。
ホットリロードなし。アプリケーションは、回転中に再起動→脆弱性ウィンドウを必要とします。

14)統合の例(回路図)

Vaultの動的Postgresアクセス

hcl
Vault: role -> issues the user to the database with TTL 30m and privileges only to the app path "database/creds/app-role" {
capabilities = ["read"]
}
Application requests/database/creds/app-role -> receives (user, pass, ttl)

リクエストのJWT署名(短期)

秘密鍵はシークレットマネージャに格納されます。サービスは短命の署名トークンを要求し、ローカルエージェントはペイロードに署名します(キーはアプリケーションに文字列として渡されません)。

管理者のSSH証明書

SSO (OIDC)経由でSSH-certを10分間発行し、永久キーを配布しない。

15)端のまわりの安全

ログ/トレイル/メトリクス:サニタイザ、既知のキー/パターンのフィルタ。「秘密」フィールド-APMでのマスキング。
ダンプ/クラッシュレポート:デフォルトでカット;必要ならば-暗号化し、きれいにして下さい。
クライアントアプリケーション/モバイル:オフラインの秘密を最小限に抑え、プラットフォームストレージ(キーチェーン/キーストア)、デバイスバインディング、緊急ローリングによるTLSピニングを使用します。

16)コンプライアンス

PCI DSS:暗号化なしでPAN/secretsを保存することを禁止します。厳密なアクセス管理および回転。

ISO 27001/SOC 2-資産管理、ロギング、アクセス制御、再構成要件

GDPR/ローカルレギュレータ:最小化、必要に応じてアクセス、監査。

17)プロセスとランブック

コミッショニング

1.秘密のインベントリ(リポジトリ、CI、イメージ、ランタイム、バックアップ)。
2.分類とタグ(所有者、環境、テナント、回転ポリシー)。
3.Vault/Cloud SM+KMS/HSMの統合。
4.ワークロードID (OIDC/SPIRE)で出力を設定します。
5.DB/Cloud/PKIの動的シークレットを有効にします。
6.自動回転およびホットリロード;有効期限を通知します。
7.リークスキャナとデータカタログ/ETの設定。

緊急事態のシナリオ

漏洩の疑い:アクセス停止リスト、即時回転、証明書/キーの取り消し、トークンの再発行、監査の増加、RCAを有効にします。
Secret Managerは使用できません。TTLが低いメモリ内のローカルキャッシュ、機能の劣化、新しい接続の制限、手動のブレークガラスステップ。
ルートキーの妥協:キー階層の再生、すべてのDEKのリラップ、リスクウィンドウのすべてのエクスポージャのチェック。

18)チェックリスト

販売する前に

  • コード/画像から削除された秘密。リークスキャナが含まれています。
  • 重要な秘密のために動的メカニズムが有効になります。
  • ホットリロードでサイドカー/CSI/tmpfs経由で配信、耐久性のあるエンバーはありません。
  • IAM/ABACポリシーが設定され、ワークロードIDにバインドされます。
  • 互換性のための自動回転およびデュアルバージョン(N、 N-1)。
  • メトリック/アラート/監査が有効になっています。劣化テストに合格しました。

操作

  • マンスリーレポート:所有者、TTL、期限切れの秘密、未使用。
  • 漏れ経路(ログ、ダンプ、アーティファクト)の周期的な回転および浸透試験。
  • 暗号アジリティプランとCA/ルートの緊急交換。

19) FAQ

Q: Secret ManagerはKMSなしで十分ですか?
A:基本的なレベル-はい、しかし、エンベロープ暗号化を使用することをお勧めします:KMS/HSMのKEK、秘密-ラップ。これにより、フィードバックとコンプライアンスが簡素化されます。

Q:静的またはダイナミクスを選択するには?
A:デフォルトはダイナミクスです。サポートされているプロバイダがない場合にのみ静的に放置し、TTLを数日/時間+自動回転まで焼き付けます。

Q:マイクロサービスに安全に秘密を投げる方法か?
作業負荷ID→mTLSシークレットマネージャ→サイドカー/CSI→файлы tmpfs+ホットリロード。ログも、エンバーも「永遠」もありません。

Q: Kubernetes Secretで秘密を守ることはできますか?
A: KMSプロバイダと厳格なポリシーでetcd暗号化が有効になっている場合のみ。外部ストレージとCSIを好みます。

Q:テナントのアクセスを「暗号消去」するには?
A:シークレットマネージャーでポリシーを取り消し/ブロックし、すべてのリース、キーの回転/再生を無効にします。KMSを使用する場合-対応するKEKのunwrapを無効にします。

関連資料:
  • 「At Rest Encryption」
  • 「In Transit Encryption」
  • 「キー管理とローテーション」
  • 「S2S認証」
  • 「Sign and Verify Requests」
Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。