Neste documento, descrevemos 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 funções que definem as permissões. Os usuários podem fazer a autenticação usando um dos seguintes métodos:
- Autenticação por senha: usa o protocolo de senha OPAQUE. Esse protocolo aumenta 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 de 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), assim como no Spanner. Você atribui papéis a 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 funções diferentes e auditar o uso. O comando a seguir atribui a um novo usuário a função 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
Atualiza o estado e as funções de um usuário. Esse comando substitui o estado e as funções 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 de certificação (CA) que assinou os certificados do servidor da API. |
Senhas
A autenticação por senha exige que você insira seu nome de usuário e senha. Ele funciona apenas 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 de interceptação. 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 que você se autenticar, o Spanner Omni vai retornar 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 seu 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 onde você possa vê-las, como variáveis de ambiente ou flags de linha de comando, os comandos da CLI do Spanner Omni aceitam senhas de duas maneiras:
- Comandos 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
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 uma ou mais funções a ele. Cada função contém uma ou mais permissões.
Para listar as funções 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.