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 CAST
eDROP CAST
como um utilizador da base de dados com a funçãocloudsqlsuperuser
. No entanto, este utilizador tem de ter o privilégioUSAGE
nos tipos de dados de origem e de destino. Por exemplo, um utilizador pode criar uma conversão que converta o tipo de dadosint
de origem no tipo de dadosboolean
de 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 comando gcloud
:
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 no 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_authid
conté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 ver informações sobre como ver este registo, consulte o artigo Ver 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 ativa o pg_shadow
acesso 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.