Esta página descreve como o Cloud SQL funciona com utilizadores e funções do PostgreSQL. As funções do PostgreSQL permitem-lhe controlar o acesso e as capacidades dos utilizadores que acedem a uma instância do PostgreSQL.
Para ver a documentação completa sobre as funções do PostgreSQL, consulte o artigo Funções da base de dados na documentação do PostgreSQL. Para obter informações sobre como criar e gerir utilizadores do Cloud SQL, consulte o artigo Crie e faça a gestão de utilizadores.
Diferença entre utilizadores e funções
As funções do PostgreSQL podem ser uma única função ou podem funcionar como um grupo de funções.
Um utilizador é uma função com a capacidade de iniciar sessão (a função tem o atributo LOGIN). Uma vez que todas as funções criadas pelo Cloud SQL têm o atributo LOGIN, o Cloud SQL usa os termos função e utilizador de forma intercambiável.
No entanto, se criar uma função com o cliente psql, a função não tem necessariamente o atributo LOGIN.
Todos os utilizadores do PostgreSQL têm de ter uma palavra-passe. Não pode iniciar sessão com um utilizador que não tenha uma palavra-passe.
Restrições e privilégios de superutilizador
O Cloud SQL para PostgreSQL é um serviço gerido, pelo que restringe o acesso a determinadas tabelas e procedimentos do sistema que exigem privilégios avançados. No Cloud SQL, os clientes não podem criar nem ter acesso a utilizadores com atributos de superutilizador.
Não pode criar utilizadores da base de dados com privilégios de superutilizador. No entanto, pode criar utilizadores da base de dados com a função cloudsqlsuperuser, que tem alguns privilégios de superutilizador, incluindo:
- Criar extensões que requerem privilégios de superutilizador.
- Criar acionadores de eventos.
- Criar utilizadores de replicação.
- Criar publicações e subscrições de replicação.
Executar as declarações
CREATE CASTeDROP CASTcomo um utilizador da base de dados com a funçãocloudsqlsuperuser. No entanto, este utilizador tem de ter o privilégioUSAGEnos tipos de dados de origem e de destino. Por exemplo, um utilizador pode criar uma conversão que converta o tipo de dadosintde origem no tipo de dadosbooleande destino.- Ter acesso total à tabela do catálogo
pg_largeobject.
Utilizadores predefinidos do PostgreSQL
Quando cria uma nova instância do Cloud SQL para PostgreSQL, o utilizador administrador predefinido postgres é criado, mas não a respetiva palavra-passe. Tem de
definir uma palavra-passe para este utilizador antes de poder iniciar sessão. Pode fazê-lo na
Google Cloud consola ou através do seguinte comandogcloud:
gcloud sql users set-password postgres \ --instance=INSTANCE_NAME \ --password=PASSWORD
O utilizador postgres faz parte da função cloudsqlsuperuser e tem os seguintes atributos (privilégios): CREATEROLE, CREATEDB e LOGIN. Não tem os atributos SUPERUSER nem REPLICATION.
É criado um utilizador cloudsqlimportexport predefinido com o conjunto mínimo de privilégios necessários para operações de importação/exportação de CSV. Pode criar os seus próprios utilizadores para realizar estas operações, mas, se não o fizer, é usado o utilizador cloudsqlimportexport predefinido. O utilizador cloudsqlimportexport é um utilizador do sistema e os clientes não o podem usar diretamente.
Utilizadores do Cloud SQL IAM para autenticação IAM
A gestão de identidade e de acesso (IAM) está integrada com o Cloud SQL numa funcionalidade denominada autenticação IAM. Quando cria instâncias através desta funcionalidade, os utilizadores do IAM podem iniciar sessão na instância com os respetivos nomes de utilizador e palavras-passe do IAM. A vantagem de usar a autenticação IAM é que pode usar as credenciais IAM existentes de um utilizador quando lhe concede acesso a uma base de dados. Quando o utilizador sai da organização, a respetiva conta do IAM é suspensa, o que remove automaticamente o acesso.
Outros utilizadores do PostgreSQL
Pode criar outros utilizadores do PostgreSQL ou funções. Os utilizadores criados
com o Cloud SQL que
não são criados com o
IAM
são criados como parte da função cloudsqlsuperuser e têm o mesmo conjunto de
atributos que o utilizador postgres: CREATEROLE, CREATEDB e LOGIN. Pode alterar os atributos de qualquer utilizador através do comando ALTER
ROLE.
Se criar um novo utilizador com o cliente psql, pode optar por associá-lo a uma função diferente ou atribuir-lhe atributos diferentes.
Acesso à vista pg_shadow e à tabela pg_authid
Pode usar a vista pg_shadow para trabalhar com as propriedades de funções marcadas como rolcanlogin na tabela do catálogo pg_authid.
A vista pg_shadow contém palavras-passe com hash e outras propriedades
das funções (utilizadores) autorizadas a iniciar sessão num cluster. A tabela de catálogo pg_authidcontém palavras-passe com hash e outras propriedades para todas as funções da base de dados.
No Cloud SQL, os clientes não podem aceder à vista pg_shadow nem à tabela pg_authid com os privilégios predefinidos. No entanto, o acesso aos nomes das funções e às palavras-passe com hash
é útil em determinadas situações, incluindo:
- Configurar proxies ou equilíbrio de carga com utilizadores e palavras-passe existentes
- Migrar utilizadores sem alterações nas palavras-passe
- Implementar soluções personalizadas para a gestão de políticas de palavras-passe
Definir as flags para a vista pg_shadow e a tabela pg_authid
Para aceder à vista pg_shadow, defina a flag cloudsql.pg_shadow_select_role
para um nome de função do PostgreSQL. Para aceder à tabela pg_authid, defina a flag cloudsql.pg_authid_select_role para um nome de função do PostgreSQL.
Se o cloudsql.pg_shadow_select_role existir, tem acesso só de leitura (SELECT) à visualização de propriedade pg_shadow. Se o cloudsql.pg_authid_select_role existir,
tem acesso SELECT à tabela pg_authid.
Se qualquer uma das funções não existir, as definições não têm efeito, mas não ocorre nenhum erro.
No entanto, é registado um erro quando um utilizador tenta aceder à vista ou à tabela.
O erro é registado no registo da base de dados do PostgreSQL: cloudsql.googleapis.com/postgres.log.
Para obter informações sobre como ver este registo, consulte o artigo Veja os registos de instâncias.
Certifique-se de que as funções configuradas existem e que não existe um erro ortográfico no valor da flag cloudsql.pg_shadow_select_role ou da flag cloudsql.pg_authid_select_role. Também pode usar a função pg_has_role para verificar se um utilizador é membro destas funções. As informações sobre esta função estão disponíveis na página
Funções e operadores de informações do sistema.
Pode usar a flag cloudsql.pg_shadow_select_role ou a flag cloudsql.pg_authid_select_role com a subscrição de funções do PostgreSQL para gerir o acesso pg_shadow ou pg_authid para vários utilizadores.
As alterações a qualquer uma das flags não requerem o reinício da base de dados.
Para mais informações sobre as flags suportadas, consulte o artigo Configure flags de base de dados.
Escolha um formato de armazenamento de palavras-passe
O Cloud SQL para PostgreSQL armazena as palavras-passe dos utilizadores num formato com hash.
Pode usar a flag password_encryption para definir o algoritmo de encriptação como md5 ou scram-sha-256. O algoritmo md5 oferece a compatibilidade mais ampla, enquanto o algoritmo scram-sha-256 é mais seguro, mas pode ser incompatível com clientes mais antigos.
Quando ativar o pg_shadowacesso para exportar propriedades de funções de uma instância do Cloud SQL, considere usar o algoritmo mais seguro suportado pelos seus clientes.
Na documentação do PostgreSQL, consulte também:
O que se segue?
- Crie e faça a gestão de utilizadores.
- Crie e faça a gestão de bases de dados.
- Consulte a documentação do PostgreSQL sobre funções.
- Saiba mais sobre as opções de ligação à sua instância.