本文へスキップ

Kubernetes Secretのデコード

Kubernetes Secret Decoder

Secretマニフェストの中のBase64値をすべて復号し、書き換えたものを適用できる形に符号化し直します。

KubernetesのSecretのマニフェストを開き、Base64の値をすべて復号して読めるようにし、どれでも編集でき、値を符号化し直したマニフェストを組み立て直します。すべてタブの中で動きます。Secretこそ、復号のためにサーバーへ送ってはいけないものです。

🔒 ブラウザの中だけで動きますkubernetessecretbase64devops

Secret マニフェスト

secret.yaml を置く

このタブの中で読みます。アップロードしません。

すべてこのタブの中で動きます。どこにも送らず、保存もしません。

値 4個

値
username

YWRtaW4=

password

c3VwZXItc2VjcmV0LXBhc3N3b3Jk

DATABASE_URL

cG9zdGdyZXM6Ly9hZG1pbjpzdXBlci1zZWNyZXQtcGFzc3dvcmRAZGI6NTQzMi9hcHA=

NOT_ENCODEDstringData — Base64 ではありません

dGhpcyBvbmUgaXMgcGxhaW4gdGV4dA==

符号化し直したマニフェスト

上で値を直すとここが変わります。`stringData` の項目は Base64 にして `data` にまとめます。`kubectl apply` も結局そうします。

Base64 は符号化であって暗号化ではありません。Kubernetes の Secret そのものは何も守りません。守るのは RBAC と保存時の暗号化です。

使い方

  1. マニフェストを貼り付けます

    `kubectl get secret 名前 -o yaml`の出力でも、リポジトリの中のファイルでも構いません。`data`と`stringData`のどちらも読みます。

  2. 値を読みます

    キーごとに復号された値が出て、その下にBase64が並びます。`stringData`の項目には印が付きます。そもそも符号化されたことのない値だからです。

  3. 編集して、組み立て直されたマニフェストを持っていきます

    値を変えると、下のマニフェストが更新されます。`stringData`の項目はBase64になって`data`にまとめられます。`kubectl apply`も、通すときにまさにそうします。

よくある質問

KubernetesのSecretは何かを暗号化していますか

それ自体は何も暗号化していません。Base64は符号化なので、マニフェストを読める人は値も読めます。Secretを守っているのは、クラスタのRBACとetcdでの保存時の暗号化で、どちらもYAMLには見えません。

ある値がエラーとして出るのはなぜですか

正しいBase64ではないからです。たいていはマニフェストを手で書き換えたか、その値が`stringData`に置かれるべき場合です。Kubernetesもこのマニフェストを拒否します。

本番のSecretをここに貼り付けても大丈夫ですか

どこへも送りませんし、保存もしません。復号はブラウザの中で行われます。ただし値が画面に出るので、画面共有やブラウザの履歴についての普段どおりの注意は、そのまま当てはまります。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。