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 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. Todos os utilizadores que criar através do Cloud SQL 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.