Ativando a criptografia com a autenticação do Kubernetes usando o HashiCorp Vault (parte manual)

Defina as configurações do Kubernetes no servidor da área segura

Procedimento

  1. Obter o VAULT_SA_SECRET_NAME no OpenShift® Container Platform:
    1. Para OpenShift Container Platform 4.14 identifique o nome secreto associado ao serviceaccount (SA) criado anteriormente.
      VAULT_SA_SECRET_NAME=$(oc -n openshift-storage get sa odf-vault-auth -o jsonpath="{.secrets[*]['name']}" | grep -o "[^[:space:]]*-token-[^[:space:]]*")
      
      Saída de exemplo:
      
      [root@fu40 ~]# echo $VAULT_SA_SECRET_NAME
      odf-vault-auth-token-8kb2r
      
    2. Para OpenShift Container Platform 4.15, atribua um valor padrão para `VAULT_SA_SECRET_NAME`"
      VAULT_SA_SECRET_NAME=odf-vault-auth-token
  2. Obtenha os parâmetros do cluster do OpenShift Container Platform .
    1. Obtenha SA_JWT_TOKEN e SA_CA_CRT do segredo.
      SA_JWT_TOKEN=$(oc -n openshift-storage get secret "$VAULT_SA_SECRET_NAME" -o jsonpath="{.data.token}" | base64 --decode; echo)
      
    2. Obtenha SA_CA_CRT do segredo.
      SA_CA_CRT=$(oc -n openshift-storage get secret "$VAULT_SA_SECRET_NAME" -o jsonpath="{.data['ca\.crt']}" | base64 --decode; echo)
      
    3. Recupere o OpenShift Container Platform cluster endpoint OCP_HOST.
      OCP_HOST=$(oc config view --minify --flatten -o jsonpath="{.clusters[0].cluster.server}")
      
    4. Busque o emissor da conta de serviço:
      oc proxy &
      proxy_pid=$!
      issuer="$( curl --silent http://127.0.0.1:8001/.well-known/openid-configuration | jq -r .issuer)"
      kill $proxy_pid
      Saída de exemplo:
      # oc proxy &
      # proxy_pid=$!
      # issuer="$( curl --silent http://127.0.0.1:8001/.well-known/openid-configuration | jq -r .issuer)"
      # echo $issuer
      https://kubernetes.default.svc
      #     kill $proxy_pid
  3. Aplicar as configurações no servidor da área segura.
    1. Use as informações coletadas na seção anterior para configurar o método de autenticação Kubernetes no servidor de área segura.
      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"
      Saída de exemplo:
      # vault write auth/kubernetes/config \
      >           token_reviewer_jwt="$SA_JWT_TOKEN" \
      >           kubernetes_host="$OCP_HOST" \
      >           kubernetes_ca_cert="$SA_CA_CRT" \
      >           issuer="$issuer"
      Success! Data written to: auth/kubernetes/config
    2. Ative o caminho de backend de Chave / Valor (KV) no Vault. Para a API do mecanismo de segredo KV da área segura, consulte a versão 2. Use um nome de caminho exclusivo como o caminho de backend O nome não deve ser alterado e deve ser consistente com o valor de entrada do Caminho de Backend presente na interface com o usuário.
      vault secrets enable -path=<repalce-with-the-backend-path> kv-v2
      A amostra de exemplo usará o caminho de back-end odf
      vault secrets enable -path=odf kv-v2
    3. Crie uma política para restringir usuários para executar uma operação de gravação ou exclusão no segredo usando os comandos a seguir.
      echo '
      path "odf/*" {
        capabilities = ["create", "read", "update", "delete", "list"]
      }
      path "sys/mounts" {
      capabilities = ["read"]
      }'| vault policy write odf -
    4. Gere a função odf-rook-ceph-op usando os comandos a seguir:
      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
      Saída de exemplo:
      #     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
      Success! Data written to: auth/kubernetes/role/odf-rook-ceph-op
      A função odf-rook-ceph-op é inserida anteriormente no campo de função usado quando você configura os detalhes da conexão KMS na interface do usuário do IBM Fusion.
    5. Gere a função odf-rook-ceph-osd usando os comandos a seguir:
      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
      Saída de exemplo:
      #  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
      Success! Data written to: auth/kubernetes/role/odf-rook-ceph-osd