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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size 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 full-size 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 full-size 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  15. Kubernetes Auth Method

    View full-size slide

  16. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide