O armazenamento de objetos do dispositivo isolado do Google Distributed Cloud (GDC) é fornecido pelo OTS (ONTAP Select). O OTS tem o seu próprio sistema de gestão de utilizadores de armazenamento de objetos. Cada OTS
credencial de utilizador de armazenamento de objetos é armazenada como um segredo nos clusters.
Este documento descreve os passos para rodar as credenciais de utilizador do armazenamento de objetos OTS
. Rode as credenciais de utilizador do armazenamento de objetos nas seguintes situações:
- Rotação de chaves agendada regularmente para rodar todas as chaves de utilizador.
- mitigar a exposição de chaves. Deve rodar a chave do utilizador exposta assim que possível.
Antes de começar
Conclua os seguintes passos:
- Verifique se cumpre os pré-requisitos do portátil.
- Certifique-se de que consegue iniciar sessão no cluster do OTS e executar comandos da CLI
vserver object-store-server
. - Certifique-se de que consegue iniciar sessão como administrador no cluster de infraestrutura e no cluster de gestão através do comando
kubectl
.
UID de tradução
Cada utilizador do armazenamento de objetos tem uma chave de acesso e uma chave secreta que são armazenadas como um segredo do Kubernetes e usadas por cargas de trabalho do Kubernetes para aceder ao armazenamento de objetos de back-end. A rotação das chaves de utilizador inclui a atualização de todos os segredos.
Pode obter uma lista de utilizadores do armazenamento de objetos iniciando sessão num dos três nós através do seguinte comando:
vserver object-store-server user show
O resultado é uma lista de UIDs e deve ser semelhante a:
[
"root",
"k8ssa_gpc-system_inventory-export-images",
"k8ssa_gpc-system_inventory-export-hardware",
"k8su_test-user@example.com"
]
Existem três tipos de utilizadores:
UID | Tipo de utilizador | Nome secreto | Espaço de nomes secreto |
---|---|---|---|
raiz | Administrador de sistemas | objectstorage-tenant-bucket-controller-standard-system-s3-sa | gpc-system |
objectstorage-tenant-bucket-controller-standard-user-s3-sa | |||
objectstorage-tenant-bucket-controller-nearline-user-s3-sa | |||
k8ssa_<namespace>_<sa> | Conta de serviço do Kubernetes | object-storage-key-std-sa-<encoded-sa> | <namespace> |
k8su_<username> | Utilizador do Kubernetes | object-storage-key-std-user-<encoded-username> | object-storage-access-keys |
O utilizador root
tem três segredos idênticos, o que reflete a estrutura do centro de dados, que abrange várias classes de armazenamento e categorias de inquilinos. Por outro lado, o Appliance só tem um nível de armazenamento de objetos. Todos os três segredos associados ao utilizador raiz têm de ser rodados em simultâneo.
A identificação do utilizador (UID), excluindo o utilizador root
, deve seguir o formato k8ssa_<namespace>_<sa>
ou k8su_<username>
. Obtenha o <encoded-sa>
ou o <encoded-username>
:
echo -n 'UID_SUFFIX' | shasum -a 256 | cut -d " " -f 1 | xxd -r -p | base32 | awk '{print tolower($0)}' | sed 's/=*$//g'
Substitua UID_SUFFIX
por <sa>
no UID e
vai receber <encoded-sa>
.
Substitua UID_SUFFIX
por <username>
no UID,
e recebe <encoded-username>
.
Alterne a chave do utilizador
Inicie sessão no cluster OTS.
Obtenha uma lista de UIDs de utilizadores do armazenamento de objetos.
vserver object-store-server user show
O resultado é uma lista de UIDs. Pode encontrar exemplos em Traduzir UID. Repita os passos seguintes para cada UID na lista.
Obtenha a chave de acesso antiga e a chave secreta do utilizador de destino.
set -privilege advanced vserver object-store-server user show -user UID
Substitua
UID
pelo UID do utilizador de destino.Gere uma nova chave de acesso e uma chave secreta para o utilizador de destino no armazenamento de objetos. As chaves antigas e novas coexistem após este passo, e ambas podem ser usadas para acesso.
vserver object-store-server user regenerate-keys -vserver root-admin -user UID
Atualize o secret do Kubernetes com a nova chave de acesso e chave secreta. Só tem de atualizar o segredo no cluster de infraestrutura raiz ou no cluster de gestão, e o segredo é propagado para outros clusters, se necessário.
kubectl --kubeconfig KUBECONFIG patch secret -n SECRET_NAMESPACE SECRET_NAME --type='json' -p='[{"op": "replace", "path": "/data/access-key-id", "value": "'"$(echo -n "ACCESS_KEY" | base64)"'"}, {"op": "replace", "path": "/data/secret-access-key", "value": "'"$(echo -n "ACCESS_KEY" | base64)"'"}]'
Substitua o seguinte:
KUBECONFIG
: o caminho para o kubeconfig. O servidor da API tem de ser o servidor da API do plano de controlo para o utilizadorroot
; caso contrário, tem de ser o servidor da API de gestão.SECRET_NAME
: o nome secreto do utilizador, que pode ser derivado da secção Traduzir UID. Se o utilizador tiver vários segredos do Kubernetes (ou seja,root
user), substitua pelo nome de cada segredo e execute o comando.SECRET_NAMESPACE
: o espaço de nomes secreto para o utilizador, que pode ser derivado da secção Traduzir UID.ACCESS_KEY
: a nova chave de acesso gerada no passo anterior.SECRET_KEY
: a nova chave secreta gerada no passo anterior.
A carga de trabalho que consome o segredo tem de ser implementada para ser atualizada automaticamente. Caso contrário, tem de reiniciar a carga de trabalho para refletir a alteração no segredo.
Por exemplo, para o utilizador
root
, tem de reiniciar as seguintes cargas de trabalho no cluster de infraestrutura:kubectl --kubeconfig KUBECONFIG rollout restart deployment obj-bucket-cm-backend-controller -n obj-system
Validação
Siga os passos em Object Storage create bucket e upload and download object para criar um novo contentor e conceder acesso através do RBAC. A rotação da chave de armazenamento de objetos está concluída se o contentor for criado com êxito e o assunto tiver as autorizações necessárias para aceder ao mesmo.