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, você pode usar vários tipos de principais: uma conta de usuário, uma conta de serviço (para aplicativos) ou um grupo . 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. Para receber essa permissão, vincule o usuário, a conta de serviço ou o grupo ao papel de usuário da instância do Cloud SQL predefinido 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. Você tem duas opções para gerenciar usuários ou contas de serviço.
    • Individualmente: por padrão, ao usar a autenticação de banco de dados do IAM, você concede papéis do IAM e atribui privilégios de banco de dados a usuários individuais e contas de serviço. Você adiciona contas individuais a instâncias e gerencia os privilégios de cada conta separadamente.
    • Por grupo: a autenticação de grupo do IAM permite controlar o acesso às instâncias do Cloud SQL no nível de grupo. Por exemplo, é possível atribuir papéis do Identity and Access Management e privilégios de banco de dados a um grupo do Cloud Identity. Todos os usuários e contas de serviço no grupo do Cloud Identity herdam os papéis do IAM e os privilégios do banco de dados atribuídos ao grupo. A autenticação de grupo do IAM está em Pré-lançamento.

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 de banco de dados do IAM (individual) Autenticação de grupo do IAM
Método de autenticação Senha Token de autenticação temporário Token de autenticação temporário
Criptografia de tráfego de rede SSL não obrigatório SSL obrigatório SSL obrigatório
Gerenciamento de usuários Manual Centralizado pelo IAM Centralizado por grupos do IAM e do Cloud Identity

Autenticação de grupo do IAM

A autenticação de grupo do IAM permite gerenciar usuários do Cloud SQL em nível de grupo. Um exemplo de grupo inclui um grupo do Cloud Identity. Esse recurso simplifica o gerenciamento de usuários do banco de dados. É possível gerenciar o papel ou as permissões do IAM do Cloud SQL para várias contas de uma só vez, em vez de precisar atualizar cada usuário ou conta de serviço individualmente. Também é possível conceder e revogar os privilégios de banco de dados para um grupo do Cloud Identity. Todas as contas novas adicionadas ao grupo do Cloud Identity herdam os privilégios desse grupo.

Com a autenticação de grupo do IAM, você pode fazer o seguinte:

  • Adicione um usuário a um grupo e faça com que ele herde automaticamente os papéis do IAM e os privilégios do banco de dados.
  • Remova um usuário de um grupo para remover o acesso de login e os privilégios de banco de dados dos bancos de dados do Cloud SQL.
  • Conceda privilégios de login ou de banco de dados a um grupo uma única vez, em vez de precisar conceder os mesmos privilégios várias vezes a usuários diferentes.
  • Remova as permissões de login ou o acesso a um objeto de banco de dados de um grupo de uma só vez.

Embora os papéis e as permissões do IAM sejam atribuídos no nível do grupo, os usuários e as contas de serviço usam as próprias contas e credenciais do IAM individuais, e não uma conta de grupo compartilhada, para fazer login. O Cloud SQL cria uma conta de banco de dados na instância para esse usuário ou conta de serviço após o primeiro login.

O login individual e a atividade do banco de dados de cada usuário ou conta de serviço aparecem nos registros de auditoria. Para fins de auditoria, você consegue verificar qual conta executou qual ação no seu banco de dados.

Para mais informações sobre como trabalhar com grupos do Cloud Identity, consulte a Visão geral do Cloud Identity.

Quando você adiciona um usuário ou uma conta de serviço a um grupo, ocorrem as seguintes alterações no Cloud SQL:

  • Se você já tiver concedido permissões de login do IAM ao grupo, o usuário ou a conta de serviço poderá fazer login na instância do Cloud SQL porque o usuário ou a conta de serviço pertence ao grupo.
  • O usuário herda automaticamente todos os privilégios de banco de dados concedidos ao grupo.

Quando você remove um usuário ou uma conta de serviço do grupo, ocorrem as seguintes alterações no Cloud SQL:

  • O usuário perde todos os privilégios de banco de dados herdados anteriormente por ser um membro do grupo.
  • O usuário ainda poderá fazer login se receber permissões de login do IAM para a instância do Cloud SQL usando outras associações a grupos. No entanto, o usuário não terá privilégios de banco de dados da antiga associação ao grupo durante o login.

Restrições de autenticação de grupos do IAM

  • A autenticação de grupo do IAM só pode ser gerenciada por meio da CLI gcloud durante a visualização.
  • É possível adicionar até 200 grupos do Cloud Identity a uma instância.
  • Não é possível adicionar contas de serviço ou usuários do IAM individuais que pertençam a um grupo na mesma instância. Em outras palavras, não é possível adicionar uma conta com o tipo CLOUD_IAM_USER ou CLOUD_IAM_SERVICE_ACCOUNT se já existir uma conta idêntica com CLOUD_IAM_GROUP_USER ou CLOUD_IAM_GROUP_SERVICE_ACCOUNT.
  • Se já existir uma conta individual em uma instância com o tipo CLOUD_IAM_GROUP_USER ou CLOUD_IAM_GROUP_SERVICE_ACCOUNT, a conta não poderá ser usada para a autenticação de grupo do IAM. Esses tipos de usuários não herdam os papéis do IAM e os privilégios do banco de dados de um grupo.

    Para corrigir esse problema e usar a conta com autenticação de grupo do IAM, remova o usuário individual do IAM ou a conta de serviço. Para mais informações, consulte Um usuário ou uma conta de serviço do IAM não herda os privilégios de banco de dados concedidos ao grupo.

  • As alterações na associação ao grupo do Cloud Identity, como a adição de uma conta, levam cerca de 15 minutos para serem propagadas. Isso é somado ao tempo necessário para alterações do IAM.

    Depois que as alterações forem propagadas, o usuário ou a conta de serviço precisará sair e fazer login novamente para que a alteração entre em vigor.

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

O Cloud SQL para MySQL 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 a usuários e contas de serviço acesso a bancos de dados em uma instância usando a autenticação de banco de dados do IAM, é preciso adicioná-los à instância ou adicioná-los a um grupo com acesso à 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.

Depois de adicionar o usuário do IAM ao banco de dados, você precisa conceder privilégios de banco de dados manualmente. Use o comando GRANT do MySQL para conceder outros 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.

Essa sinalização é necessária para a autenticação de grupo e de 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.
  3. A autenticação do banco de dados do IAM não é compatível com instâncias que usam o MySQL 5.6.

A seguir