Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HashiCorp VaultとTKG(TCE)でSecretを良い感じに管理する

HashiCorp VaultとTKG(TCE)でSecretを良い感じに管理する

ツナカン(TUNA-JP Conference) #3 で話した資料です。

Kazuto Kusama

June 26, 2022
Tweet

More Decks by Kazuto Kusama

Other Decks in Technology

Transcript

  1. Secretってありますよね kind: Secret apiVersion: v1 data: username: YWRtaW4= password: MWYyZDFlMmU2N2Rm

    metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: { ... } creationTimestamp: 2016-01-22T18:41:56Z name: mysecret namespace: default resourceVersion: "164619" uid: cfee02d6-c137-11e5-8d73-42010af00002 type: Opaque
  2. Secretってありますよね kind: Secret apiVersion: v1 data: username: YWRtaW4= password: MWYyZDFlMmU2N2Rm

    metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: { ... } creationTimestamp: 2016-01-22T18:41:56Z name: mysecret namespace: default resourceVersion: "164619" uid: cfee02d6-c137-11e5-8d73-42010af00002 type: Opaque “admin” “1f2d1e2e67df” Base64エンコードされているだけ。Git等に入れるのはNG
  3. Secretのジレンマ ▪ Secretが大事なことは誰もが分かってる ▪ だから既存の自動化フローには載せず、特別対応 – 一部の人だけが手元で厳重に管理 – 権限を絞ったプライベートリポジトリで管理 –

    権限を絞ったSpreadsheetで管理 ▪ しかしこの特別対応こそが、Secret Sprawlを生みセキュリティを低 下させる – 人間が把握できる範囲には限界がある – 人間はミスをする
  4. 利用方法 or or Server CLI GUI API Interface Client Admin

    アプリ CI/CD さまざまな人/システムが、さま ざまな方法でアクセス
  5. 認証 Otka JWT/OIDC LDAP Azure AD AWS IAM GitHub Token

    etc… AppRole Kubernetes TLS Certs
  6. CODE EDITOR spec: template: metadata: annotations: vault.hashicorp.com/agent-inject: "true" vault.hashicorp.com/agent-inject-status: "update"

    vault.hashicorp.com/role: "internal-app" vault.hashicorp.com/agent-inject-secret-database-config.txt: "internal/data/database/config" vault.hashicorp.com/agent-inject-template-database-config.txt: | {{- with secret "internal/data/database/config" -}} postgresql://{{ .Data.data.username }}:{{ .Data.data.password }}@postgres:5432/wizard {{- end -}}
  7. TERMINAL > kubectl exec payroll --container payroll \ -- cat

    /vault/secrets/database-config.txt postgresql://db-readonly-user:db-secret-password@postgres:5432/wizard Render されたTemplate
  8. External Secrets Operator ▪ 前述のKubernetes External Secrets (KES)は メンテナンスモードに ▪

    後継のExternal Secrets Operatorが登場 – https://github.com/external-secrets/external-secrets – Vaultにも対応 – まだ試したことないので誰か教えてください