【问题标题】:Difference between Kubernetes Service Account Tokens from secret and projected volumeKubernetes 服务帐户令牌与秘密卷和预计卷之间的区别
【发布时间】:2020-07-30 17:07:21
【问题描述】:

当我执行kubectl get secret my-sa-token-lr928 -o yaml 时,data.token 有一个 base64 字符串(JWT A)值。还有其他字段,例如此返回的秘密中的data.ca.crt

当我use projected volume with source serviceAccountToken 并读取文件时,还有另一个非base64 字符串(JWT B)。

cat /var/run/secrets/some.directory/serviceaccount/token

为什么 JWT A 和 JWT B 字符串不同?最显着的区别在于 JWT B iss 即我的颁发者 URL (--service-account-issuer) 和 JWT A iss i.e my issuer url iskubernetes/serviceaccount`。 它们不是 JWT 服务帐户令牌吗?如果不是,那么它们实际代表的是什么 Kubernetes API 对象?

以下是我的 Kubernetes Pod 规范(为简洁而编辑)

apiVersion: v1
kind: Pod
metadata:
  annotations:
  labels:
    app: sample-app
  name: sample-pod-gwrcf
spec:
  containers:
    image: someImage
    name: sample-app-container
    resources: {}
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: my-sa-token-lr928
      readOnly: true
    - mountPath: /var/run/secrets/some.directory/serviceaccount
      name: good-token
      readOnly: true
  serviceAccount: my-sa
  serviceAccountName: my-sa
  terminationGracePeriodSeconds: 30
  volumes:
  - name: good-token
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          audience: my.audience.com
          expirationSeconds: 86400
          path: token
  - name: my-sa-token-lr928
    secret:
      defaultMode: 420
      secretName: my-sa-token-lr928

【问题讨论】:

    标签: docker kubernetes oauth-2.0 jwt kubernetes-secrets


    【解决方案1】:

    它们不都是 JWT 服务帐户令牌吗?

    是的,它们都是 JWT 令牌。

    您在my-sa-token-lr928 中提到的 JWT A 被 base64 编码为每个 kubernetes 密钥中的所有数据。

    当 k8s 将秘密数据挂载到 pod 时,这些数据正在被解码和存储,例如在这种情况下作为令牌文件。

    JWT B 使用 Service Account Token Volume Projection 的 token 是由 kubelet 发行的,它可以让您更加灵活,例如设置过期时间,而普通的 Service Account Tokens 一旦发行就保持不变(除非重新创建)并且不会过期。

    如果您执行到您的 pod 并查找这些令牌的内容,您将看到一个实际的 JWT 令牌。您可以使用任何 jwt 解码器从这个令牌中解码数据,例如jwt.io.

    为什么 JWT A 和 JWT B 字符串不同?

    因为它们包含不同的数据。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2018-04-02
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多