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

Vaultに格納したシークレットをKubernetesから活用する方法

 Vaultに格納したシークレットをKubernetesから活用する方法

HashiCorpのWebinarで登壇した際の資料です。
Webinar動画はこちらから!
https://www.hashicorp.com/events/webinars/how-to-get-vault-secrets-into-kubernetes-jp

Kazuto Kusama

April 07, 2022
Tweet

More Decks by Kazuto Kusama

Other Decks in Technology

Transcript

  1. Copyright © 2021 HashiCorp
    Vaultに格納したシークレットを
    Kubernetesから活用する方法

    View Slide

  2. Copyright © 2021 HashiCorp
    草間一人
    Sr. Solutions Engineer
    @jacopen
    Kazuto
    Kusama

    View Slide

  3. Kubernetesのシークレット管理
    どうやってますか?

    View Slide

  4. Kubernetesでアプリを作るとき
    Pod
    App
    Pod
    DB
    Cloud
    Services

    View Slide

  5. Kubernetesでアプリを作るとき
    Pod
    App
    Pod
    DB
    Cloud
    Services
    Access Key
    Secret Access Key
    Username
    Password
    Secret
    Access Key
    Secret Access Key
    Username
    Password

    View Slide

  6. Kubernetesの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

    View Slide

  7. Kubernetesの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エンコードされているだけ。

    View Slide

  8. せっかくGitOpsにしたのに
    Secret
    Secret
    Deployment
    Service
    PVC
    ここは自動化
    Secret入れるのは
    手動

    View Slide

  9. せっかくGitOpsにしたのに
    Secret
    Secret
    間違えてgitに
    コミットしちゃった!
    あの鍵って誰が
    管理してるの?

    View Slide

  10. Secret sprawl
    バラバラに保管
    アプリごと/チームごと
    バラバラの
    アクセスフロー
    アクセスのコント
    ロールができない

    View Slide

  11. Secretのジレンマ
    ▪ Secretが大事なことは誰もが分かってる
    ▪ だから既存の自動化フローには載せず、特別対応
    – 一部の人だけが手元で厳重に管理
    – 権限を絞ったプライベートリポジトリで管理
    – 権限を絞ったSpreadsheetで管理
    ▪ しかしこの特別対応こそが、Secret Sprawlを生みセキュリティを低
    下させる
    – 人間が把握できる範囲には限界がある
    – 人間はミスをする

    View Slide

  12. 解決策

    View Slide

  13. アイデンティティベースの
    シークレットと暗号化の管理システム
    Key Valueのような静的なシークレットだけでなく、
    データベースや各クラウドプロバイダーのキーを動的
    に生成したり、PKIとして使えたり、SSH鍵の署名が
    できたり、暗号化ができたり。
    どの環境でも使えますが、Kubernetesと組み合わせ
    ても、とても便利!

    View Slide

  14. やりたいこと
    Pod
    格納
    取得
    このフローを、安全に、手間がかからない形で実現したい

    View Slide

  15. DEMO

    View Slide

  16. やりたいこと
    Pod
    格納
    取得
    どうやってVaultから
    値を取得するか
    どうやってPodに
    値を渡すか

    View Slide

  17. Kubernetes Auth Method

    View Slide

  18. Kubernetes Auth Method
    Service
    Account
    auth/kubernetes/login
    + service account token
    TokenReview API
    status.authenticated: true
    auth.client_token
    /v1/secret/foo
    Return secret

    View Slide

  19. やりたいこと
    Pod
    格納
    取得
    どうやってVaultから
    値を取得するか
    どうやってPodに
    値を渡すか

    View Slide

  20. Kubernetes & Vault
    アプリから
    直接Vault
    Vault agent
    init container
    Vault agent
    sidecar
    Vault CSI
    Provider
    External
    Secret
    公式 コミュニティ

    View Slide

  21. Vault Agent Injector
    Vault Agent InjectorをKubernetes
    上にセットアップ。Helmでインストー
    ル可能
    Mutating webhookでPodにInit
    containerやSidecarを追加してくれ

    View Slide

  22. DEMO

    View Slide

  23. Vault CSI Provider
    Kubernetes Secrets Store CSI Driver
    Secretを、KubernetesのCSI (Container Storage Interface)を使っ
    て、ボリュームとしてPodにマウントする仕組み。
    Vault CSI Provider
    ↑をHashiCorp Vaultで使うためのProvider
    Helmでインストール可能

    View Slide

  24. DEMO

    View Slide

  25. Sidecar or CSI?
    https://www.hashicorp.com/blog/ku
    bernetes-vault-integration-via-sidec
    ar-agent-injector-vs-csi-provider

    View Slide

  26. Kubernetes External Secrets
    https://github.com/external-secrets/external-secrets
    External Secrets
    Controller
    Secrets
    foo=bar
    foo=bar
    kube-apiserver
    External
    Secrets

    View Slide

  27. Thank You
    [email protected]
    www.hashicorp.com

    View Slide