Autenticação do IAM

O Google Cloud oferece o Identity and Access Management (IAM), que permite a concessão de acesso a recursos específicos do Google Cloud e impede o acesso indesejado a outros recursos. Nesta página, descrevemos como o Cloud SQL é integrado ao IAM e como você pode usar o IAM para autenticação de banco de dados. Para uma descrição detalhada do Google Cloud IAM, consulte a documentação do IAM.

O Cloud SQL fornece um conjunto de papéis predefinidos, projetados para ajudar você a controlar o acesso aos recursos do Cloud SQL. Também é possível criar seus próprios papéis personalizados caso aqueles predefinidos não forneçam os conjuntos de permissões necessárias. Além disso, os papéis básicos de legado (Editor, Leitor e Proprietário) também estão disponíveis, embora não forneçam o mesmo controle granular que os papéis do Cloud SQL. Em particular, os papéis básicos fornecem acesso a recursos no Google Cloud e não apenas para o Cloud SQL. Para mais informações sobre os papéis básicos do Google Cloud, consulte Papéis básicos.

É possível definir uma política do IAM em qualquer nível da hierarquia de recursos: de organização, pasta ou projeto. Os recursos herdam as políticas de todos os recursos pai.

Referências de IAM para o Cloud SQL

Conceitos da autenticação do IAM

Ao usar a autenticação do IAM, a permissão para acessar um recurso (uma instância do Cloud SQL) não é concedida diretamente ao usuário final. Em vez disso, as permissões são agrupadas em papéis, que são concedidos a principals. Para mais informações, consulte a visão geral do IAM.

Os administradores que têm usuários fazendo login por meio da autenticação do banco de dados do IAM podem usar o IAM para gerenciar o controle de acesso às instâncias de modo centralizado usando políticas do IAM. As políticas do IAM envolvem as seguintes entidades:

  • Principais. No Cloud SQL, é possível usar dois tipos de principais: uma conta de usuário e uma conta de serviço (para aplicativos). Outros tipos de principais, como grupos do Google, domínios do Google Workspace ou domínios do Cloud Identity, não são compatíveis com a autenticação do banco de dados do IAM. Para mais informações, consulte Conceitos relacionados à identidade.
  • Papéis. A autenticação do banco de dados do IAM exige que um dos principais tenha a permissão cloudsql.instances.login para fazer login em uma instância. Sendo assim, é preciso vincular a conta de usuário ou de serviço ao papel predefinido de usuário da instância do Cloud SQL ou a um papel personalizado que agrupe a permissão. Para mais informações sobre os papéis do IAM, consulte Papéis.
  • Recurso. Os recursos que os principais acessam são instâncias do Cloud SQL. Por padrão, as vinculações de política do IAM são aplicadas no nível do projeto, de modo que os principais recebam permissões de papel para todas as instâncias do Cloud SQL no projeto.

Autenticação do banco de dados do IAM

O Cloud SQL é integrado ao Identity and Access Management (IAM) para ajudar você a gerenciar melhor o acesso de login para usuários e contas de serviço a bancos de dados. Esse recurso é chamado de autenticação de banco de dados do IAM.

A autenticação é o processo de verificar a identidade de um usuário que está tentando acessar uma instância. O Cloud SQL usa os seguintes tipos de autenticação para usuários do banco de dados:

  • A autenticação integrada do banco de dados que usa um nome de usuário e senha para autenticar um usuário de banco de dados.
  • A autenticação do banco de dados do IAM usa o IAM para autenticar um usuário, usando um token de acesso.

Comparar opções de autenticação de banco de dados

A tabela a seguir compara diferentes métodos de autenticação de banco de dados para o Cloud SQL.

Recurso Autenticação de banco de dados integrada Autenticação do banco de dados do IAM
Método de autenticação Senha Token de autenticação temporário
Criptografia de tráfego de rede SSL não obrigatório SSL obrigatório
Gerenciamento de usuários Manual Centralizado pelo IAM

Autenticação automática e manual do banco de dados do IAM

O Cloud SQL para PostgreSQL tem duas opções de autenticação do banco de dados do IAM: automática e manual.

Autenticação automática do banco de dados do IAM

A autenticação automática do banco de dados do IAM permite transferir a solicitação e o gerenciamento de tokens de acesso para um conector do Cloud SQL intermediário, como o proxy do Cloud SQL Auth. Com a autenticação automática do banco de dados do IAM, os usuários precisam passar apenas o nome de usuário do banco de dados do IAM em uma solicitação de conexão do cliente. O conector envia as informações do token de acesso para o atributo de senha em nome do cliente.

A autenticação automática do banco de dados do IAM requer o uso de um conector do Cloud SQL. Ele é compatível com o proxy do Cloud SQL Auth , o conector do Go, o conector do Java e o Conector do Python.

Para uma experiência mais segura e confiável, recomendamos o uso da autenticação automática do banco de dados do IAM. A autenticação do banco de dados do IAM usa tokens de acesso do OAuth 2.0, que são de curta duração e só são válidos por uma hora. Os conectores do Cloud SQL podem solicitar e atualizar esses tokens, garantindo que processos de longa duração ou aplicativos que dependem do pooling de conexões possam ter conexões estáveis. A autenticação automática do banco de dados do IAM é altamente recomendada em vez da autenticação manual.

Para mais informações, consulte Fazer login com a autenticação automática do banco de dados do IAM.

Autenticação manual do banco de dados do IAM

A autenticação manual do banco de dados do IAM exige que o principal do IAM transmita explicitamente o token de acesso para o atributo de senha na solicitação de conexão do cliente. Os principais precisam primeiro fazer login no Google Cloud e solicitar explicitamente o token de acesso pelo IAM.

Com a CLI gcloud, é possível solicitar explicitamente um token OAuth 2.0 com o escopo da API Cloud SQL Admin usado para fazer login no banco de dados. Ao fazer login como usuário do banco de dados com a autenticação do banco de dados do IAM, use o endereço de e-mail como nome de usuário e o token de acesso como senha. Use esse método com uma conexão direta com o banco de dados ou com um conector do Cloud SQL.

O login com a autenticação do banco de dados do IAM só pode ser realizado por uma conexão SSL.

Para mais informações, consulte Como fazer login com a autenticação do banco de dados manual do IAM.

Administração de conta de serviço e usuários

Para fornecer acesso a usuários e contas de serviço a bancos de dados em uma instância usando a autenticação do banco de dados do IAM, você precisa adicioná-los à instância. Para mais informações, consulte Adicionar um usuário ou uma conta de serviço que usa o IAM.

Se você usa o console do Google Cloud para adicionar usuários ou contas de serviço, o Cloud SQL solicita que você adicione o papel "Usuário do Cloud SQL" ao usuário. Esse papel é necessário para que os usuários façam login na instância.

Se você adicionar usuários usando gcloud ou a API, será necessário conceder privilégios de login manualmente. Use o comando GRANT do PostgreSQL para conceder privilégios do banco de dados.

Configuração da instância para autenticação do banco de dados do Cloud SQL IAM

É possível ativar a autenticação do banco de dados do IAM em uma instância usando a sinalização cloudsql.iam_authentication. Depois de ativar essa sinalização, a instância ativa logins de contas configuradas para autenticação do banco de dados do IAM.

Definir a sinalização não impede que usuários existentes que não são do IAM usem os próprios nomes de usuário e senhas para fazer login. No entanto, se você desativar essa sinalização na instância, qualquer usuário adicionado anteriormente usando a autenticação do banco de dados do IAM perderá o acesso à instância. Para mais informações, consulte Configurar instâncias para a autenticação do banco de dados do IAM.

Autenticação de banco de dados do Cloud SQL IAM para diferentes cenários de instâncias

Réplicas de leitura A autenticação do banco de dados do IAM não é ativada automaticamente em uma réplica de leitura, mesmo quando ativada na instância principal. Depois de criar uma réplica de leitura, adicione a autenticação do banco de dados do IAM. Para mais informações, consulte Como configurar logins de réplica de leitura para autenticação do banco de dados do IAM.
Instâncias restauradas Se uma instância tiver sido armazenada em backup e posteriormente restaurada para a mesma instância ou outra no mesmo projeto, as autorizações de login do usuário atual serão aplicadas. Se você restaurar um backup para uma nova instância em outro projeto, precisará configurar as autorizações para a nova instância. Para mais informações, consulte Como adicionar um usuário ou uma conta de serviço que use a autenticação de banco de dados do IAM.

Sobre as condições do IAM

Com as condições do IAM, é possível conceder papéis com base em vários atributos. Por exemplo, é possível permitir o acesso apenas em determinadas datas e horas ou conceder acesso somente aos recursos do Cloud SQL com determinados nomes.

Para mais informações sobre as Condições do IAM, consulte a página Visão geral das Condições do IAM. Também é possível aprender mais sobre Como usar as Condições do IAM com o Cloud SQL, incluindo exemplos.

Trabalhe com os registros de auditoria do Cloud

Para manter registros de acesso a dados, incluindo logins, use os registros de auditoria. Os Registros de auditoria do Cloud ficam desativados por padrão. É necessário ativar os registros de auditoria de acesso a dados para acompanhamento de registro. Gerar registros de auditoria com essa finalidade implica custos para a geração de registros de dados. Para mais informações, consulte Registros de auditoria, Como configurar registros de auditoria de acesso a dados e Preços para dados de geração de registros.

Restrições

  1. Por segurança, os logins com a autenticação de banco de dados do IAM estão disponíveis apenas em uma conexão SSL. Conexões não criptografadas são rejeitadas.
  2. Há uma cota de logins por minuto para cada instância, incluindo os bem-sucedidos e os mal-sucedidos. Quando a cota é excedida, os logins ficam temporariamente indisponíveis. Recomendamos evitar logins frequentes e restringi-los usando redes autorizadas. A cota de autorização de logins é de 12.000 por minuto em cada instância.

A seguir