Este documento descreve como as implantações seguras do Spanner Omni controlam o acesso por autenticação e autorização. Você cria e gerencia usuários e atribui a eles papéis que definem as permissões. Os usuários podem fazer a autenticação usando um dos seguintes métodos:
- Autenticação de senha: usa o protocolo de senha OPAQUE. Esse protocolo melhora a segurança fornecendo tokens de acesso assinados para solicitações subsequentes.
- Autenticação de certificado do cliente: usa certificados assinados pela mesma
autoridade certificadora (CA) que assinou os certificados do servidor da API. O
Common Namedo certificado identifica o usuário.
A autorização no Spanner Omni usa nomes de papéis e permissões do Identity and Access Management (IAM), semelhantes ao Spanner. Você atribui papéis aos usuários que concedem permissões específicas. O IAM do Spanner Omni é diferente do IAM do Spanner. Por exemplo, ele não oferece suporte a papéis personalizados e inclui permissões específicas do Spanner Omni.
Usuários
Em uma implantação segura, o acesso às APIs do Spanner Omni exige um usuário. É possível criar, atualizar e excluir usuários usando a CLI do Spanner Omni. Cada implantação do Spanner Omni cria um único usuário admin por padrão com a senha admin.
Criar usuários
Crie novos usuários para atribuir papéis diferentes e auditar o uso. O comando a seguir atribui ao novo usuário o papel roles/spanner.databaseUser para que ele possa ler e gravar em um banco de dados do Spanner Omni.
spanner users create USER_NAME --roles=roles/spanner.databaseUser
Excluir usuários
Exclua usuários obsoletos do sistema:
spanner users delete USER_NAME
Atualizar usuários
Atualize o estado e os papéis de um usuário. Esse comando substitui o estado e os papéis atuais:
spanner users update USER_NAME --roles=NEW_ROLES --state=ACTIVE
Autenticação
Em uma implantação segura, os usuários precisam fazer login antes de acessar uma implantação do Spanner Omni.
O Spanner Omni oferece dois mecanismos para autenticar usuários:
| Mecanismo | Descrição |
|---|---|
| Senhas | Os usuários inserem o nome de usuário e a senha. |
| Certificados do cliente | Os clientes usam certificados assinados pela mesma autoridade certificadora (CA) que assinou os certificados do servidor da API. |
Senhas
A autenticação de senha exige que você insira seu nome de usuário e senha. Ela só funciona quando o TLS está ativado no servidor.
spanner auth login USER_NAME
O Spanner Omni usa uma implementação do protocolo OPAQUE para evitar o envio de senhas ao servidor, o que protege o sistema contra ataques "man-in-the-middle". O Spanner Omni não armazena senhas no servidor, portanto, o acesso não intencional ao servidor não compromete as credenciais do usuário.
Depois de fazer a autenticação, o Spanner Omni retorna um token de acesso assinado. Anexe o token de acesso a todas as solicitações futuras. A CLI do Spanner Omni armazena o token de acesso em ~/.config/spanner/access_token/token.txt. Para manter a segurança do sistema, não compartilhe esse token com outras pessoas.
Por padrão, o token de acesso tem um tempo de expiração de 60 minutos. Após 60 minutos, o servidor não aceita o token de acesso e você precisa fazer login novamente. O Spanner Omni assina o token de acesso para evitar adulterações.
Para evitar que as senhas apareçam em locais em que você possa visualizá-las, como variáveis de ambiente ou flags de linha de comando, os comandos da CLI do Spanner Omni aceitam senhas de duas maneiras:
- Solicitações que mascaram sua entrada.
- Strings em arquivos. O Spanner Omni verifica se as permissões de arquivo são 600, substitui os arquivos por dados aleatórios e os exclui após a leitura.
Para mais detalhes, execute spanner auth --help.
Certificados do cliente
A autenticação de certificado do cliente exige que os clientes usem certificados assinados pela mesma autoridade certificadora (CA) que assinou os certificados do servidor da API.
Inclua o nome de usuário de um usuário válido e ativo no campo Common Name do certificado.
Ao realizar a autorização, os papéis atribuídos determinam se você tem permissões para realizar a operação solicitada. Para anexar um certificado do cliente a uma solicitação, use as flags --ca-certificate-file e --client-certificate-directory. Confira a seguir um exemplo de listagem de bancos de dados:
spanner databases list --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR
Também é possível usar certificados do cliente para fazer login:
spanner auth login USER_NAME --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR
Autorização
O Spanner Omni usa a maioria dos mesmos nomes de papéis e permissões do IAM que o Spanner. Ao criar um usuário, é possível atribuir um ou mais papéis a ele. Cada papel contém uma ou mais permissões.
Para listar os papéis disponíveis no Spanner Omni, use o seguinte comando:
spanner roles list
Para saber mais sobre as permissões do IAM no Spanner Omni, consulte a Visão geral do IAM.