2.3. 使用 Kubernetes 身份验证方法通过 KMS 启用集群范围的加密


要使用 KMS 为集群范围加密启用 Kubernetes 验证方法,请按照以下步骤执行:

先决条件

  • 管理员对 Vault 的访问权限。
  • OpenShift Data Foundation 操作器必须从 Operator Hub 安装。
  • 仔细选择唯一路径名称作为遵循命名惯例的后端路径,因为它无法在以后更改。

    注意

    OpenShift Data Foundation 4.10 中的 Kubernetes 验证方法不支持 Vault 命名空间

流程

  1. 创建一个服务帐户。

    $ oc -n openshift-storage create serviceaccount <SA_NAME>
    Copy to Clipboard Toggle word wrap

    例如:

    $ oc -n openshift-storage create serviceaccount odf-vault-auth
    Copy to Clipboard Toggle word wrap
  2. 创建 clusterrolebindings 和 clusterroles。

    $ oc -n openshift-storage create clusterrolebinding vault-tokenreview-binding --clusterrole=system:auth-delegator --serviceaccount=openshift-storage:<SA_NAME>
    Copy to Clipboard Toggle word wrap

    例如:

    $ oc -n openshift-storage create clusterrolebinding vault-tokenreview-binding --clusterrole=system:auth-delegator --serviceaccount=openshift-storage:odf-vault-auth
    Copy to Clipboard Toggle word wrap
  3. 识别与上面创建的 serviceaccount(SA)关联的 secret 名称。

    $ VAULT_SA_SECRET_NAME=$(oc -n openshift-storage get sa <SA_NAME> -o jsonpath="{.secrets[*]['name']}") | grep -o "[^[:space:]]*-token-[^[:space:]]*"
    Copy to Clipboard Toggle word wrap

    例如:

    $ VAULT_SA_SECRET_NAME=$(oc -n openshift-storage get sa odf-vault-auth -o jsonpath="{.secrets[*]['name']}" | grep -o "[^[:space:]]*-token-[^[:space:]]*")
    Copy to Clipboard Toggle word wrap
  4. 从用于访问 TokenReview API 的 secret 获取令牌和 CA 证书。

    $ SA_JWT_TOKEN=$(oc -n openshift-storage get secret "$VAULT_SA_SECRET_NAME" -o jsonpath="{.data.token}" | base64 --decode; echo)
    Copy to Clipboard Toggle word wrap
    $ SA_CA_CRT=$(oc -n openshift-storage get secret "$VAULT_SA_SECRET_NAME" -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo)
    Copy to Clipboard Toggle word wrap
  5. 检索 OCP 集群端点。

    $ OCP_HOST=$(oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}")
    Copy to Clipboard Toggle word wrap
  6. 获取服务帐户签发者。

    $ oc proxy &
    $ proxy_pid=$!
    $ issuer="$( curl --silent http://127.0.0.1:8001/.well-known/openid-configuration | jq -r .issuer)"
    $ kill $proxy_pid
    Copy to Clipboard Toggle word wrap
  7. 使用以上步骤中收集的信息,在 Vault 中设置 Kubernetes 验证方法,如下所示。

    $ vault auth enable kubernetes
    $ vault write auth/kubernetes/config \
              token_reviewer_jwt="$SA_JWT_TOKEN" \
              kubernetes_host="$OCP_HOST" \
              kubernetes_ca_cert="$SA_CA_CRT" \
              issuer="$issuer"
    Copy to Clipboard Toggle word wrap
    重要

    在第 6 步中的签发者为空时在 Vault 中配置 Kubernetes 验证方法。

    $ vault write auth/kubernetes/config \
              token_reviewer_jwt="$SA_JWT_TOKEN" \
              kubernetes_host="$OCP_HOST" \
              kubernetes_ca_cert="$SA_CA_CRT"
    Copy to Clipboard Toggle word wrap
  8. 在 Vault 中启用 Key/Value(KV)后端路径。

    对于 Vault KV secret engine API,版本 1。

    $ vault secrets enable -path=odf kv
    Copy to Clipboard Toggle word wrap

    对于 Vault KV secret engine API,版本 2。

    $ vault secrets enable -path=odf kv-v2
    Copy to Clipboard Toggle word wrap
  9. 使用以下命令,创建一个策略来限制用户对机密执行写入或删除操作。

    echo '
    path "odf/*" {
      capabilities = ["create", "read", "update", "delete", "list"]
    }
    path "sys/mounts" {
    capabilities = ["read"]
    }'| vault policy write odf -
    Copy to Clipboard Toggle word wrap
  10. 运行以下命令来生成角色。

    $ vault write auth/kubernetes/role/odf-rook-ceph-op \
            bound_service_account_names=rook-ceph-system,rook-ceph-osd,noobaa \
            bound_service_account_namespaces=openshift-storage \
            policies=odf \
            ttl=1440h
    Copy to Clipboard Toggle word wrap

    稍后会在创建存储系统期间配置 KMS 连接详情时使用角色 odf-rook-ceph-op

    $ vault write auth/kubernetes/role/odf-rook-ceph-osd \
            bound_service_account_names=rook-ceph-osd \
            bound_service_account_namespaces=openshift-storage \
            policies=odf \
            ttl=1440h
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat