Autenticação IAM

Google Cloud oferece a gestão de identidade e de acesso (IAM), que lhe permite conceder acesso a recursos Google Cloud específicos e impedir o acesso indesejado a outros recursos. Esta página descreve como o Cloud SQL está integrado com a IAM e como pode usar a IAM para gerir o acesso aos recursos do Cloud SQL e para a autenticação de bases de dados. Para uma descrição detalhada do Google Cloud IAM, consulte a documentação do IAM.

O Cloud SQL oferece um conjunto de funções predefinidas concebidas para ajudar a controlar o acesso aos seus recursos do Cloud SQL. Também pode criar as suas próprias funções personalizadas, se as funções predefinidas não oferecerem os conjuntos de autorizações de que precisa. Além disso, as funções básicas antigas (Editor, Leitor e Proprietário) também continuam disponíveis, embora não ofereçam o mesmo controlo detalhado que as funções do Cloud SQL. Em particular, as funções básicas fornecem acesso a recursos no Google Cloud, em vez de apenas no Cloud SQL. Para mais informações sobre as Google Cloud funções básicas, consulte o artigo Funções básicas.

Pode definir uma política IAM em qualquer nível na hierarquia de recursos: ao nível da organização, da pasta ou do projeto. Os recursos herdam as políticas de todos os respetivos recursos principais.

Referências do IAM para o Cloud SQL

Conceitos de autenticação IAM

Quando usa a autenticação do IAM, a autorização para aceder a um recurso (uma instância do Cloud SQL) não é concedida diretamente ao utilizador final. Em alternativa, as autorizações são agrupadas em funções, e as funções são concedidas a diretores. Para mais informações, consulte a vista geral do IAM.

Os administradores que têm utilizadores a iniciar sessão através da autenticação da base de dados do IAM podem usar a autenticação do IAM para gerir centralmente o controlo de acesso às respetivas instâncias através de políticas do IAM.

As políticas IAM envolvem as seguintes entidades:

  • Principais. No Cloud SQL, pode usar vários tipos de principais: uma conta de utilizador, uma conta de serviço (para aplicações) ou um grupo. Para mais informações, consulte o artigo Conceitos relacionados com a identidade.
  • Funções. Uma função é uma coleção de autorizações. Pode conceder funções a diretores para lhes fornecer os privilégios necessários para realizar tarefas específicas. Por exemplo, com a autenticação de base de dados da IAM, um principal requer a autorização cloudsql.instances.login para iniciar sessão numa instância, que está incluída na função Utilizador da instância do Cloud SQL. Para obter a autorização, associa o utilizador, a conta de serviço ou o grupo à função predefinida do Cloud SQL ou a uma função personalizada que inclua a autorização. Para mais informações sobre as funções do IAM, consulte o artigo Funções.
  • Recurso. Os recursos aos quais os principais acedem são instâncias do Cloud SQL. Por predefinição, as associações de políticas de IAM são aplicadas ao nível do projeto, de modo que os responsáveis recebem autorizações de funções para todas as instâncias do Cloud SQL no projeto.

Autenticação da base de dados de IAM

A autenticação da base de dados é o processo de validação da identidade de um utilizador que está a tentar aceder a bases de dados. No Cloud SQL, pode usar os seguintes tipos de autenticação de bases de dados para utilizadores de bases de dados:

  • A autenticação incorporada da base de dados usa um nome de utilizador e uma palavra-passe para autenticar um utilizador da base de dados.
  • A autenticação da base de dados de IAM usa o IAM para autenticar um utilizador através de um token de acesso. Tem duas opções para gerir utilizadores ou contas de serviço.
    • Individualmente: por predefinição, quando usa a autenticação de base de dados do IAM, concede funções do IAM e atribui privilégios de base de dados a utilizadores e contas de serviço individuais. Adiciona contas individuais a instâncias e gere os privilégios de cada conta separadamente.
    • Por grupo: a autenticação de grupos do IAM permite-lhe controlar o acesso a instâncias do Cloud SQL ao nível do grupo. Por exemplo, pode atribuir funções de gestão de identidade e de acesso e privilégios de base de dados a um grupo do Cloud Identity. Todos os utilizadores e contas de serviço no grupo do Cloud Identity herdam as funções do IAM e os privilégios da base de dados atribuídos ao grupo.

Compare as opções de autenticação de bases de dados

A tabela seguinte compara diferentes métodos de autenticação de base de dados para o Cloud SQL.

Funcionalidade Autenticação de base de dados incorporada Autenticação de base de dados do IAM (individual) Autenticação de grupo IAM
Método de autenticação Palavra-passe Token de autenticação temporário Token de autenticação temporário
Encriptação do tráfego de rede SSL não necessário SSL necessário SSL necessário
Gestão de utilizadores Manual Centralizada através do IAM Centralizada através do IAM e dos grupos do Cloud ID

Autenticação de grupo IAM

A autenticação de grupos do IAM permite-lhe gerir utilizadores do Cloud SQL ao nível do grupo. Um exemplo de um grupo inclui um grupo do Cloud Identity. Esta funcionalidade simplifica a gestão de utilizadores da base de dados. Pode gerir a função ou as autorizações do IAM do Cloud SQL para várias contas em simultâneo, em vez de ter de atualizar cada utilizador ou conta de serviço individualmente. Também pode conceder e revogar os privilégios da base de dados para um grupo do Cloud Identity. Todas as novas contas que adicionar ao grupo do Cloud ID herdam os privilégios desse grupo.

Com a autenticação de grupos da IAM, pode fazer o seguinte:

  • Adicionar um utilizador a um grupo e fazer com que o utilizador herde automaticamente as respetivas funções da IAM e privilégios da base de dados.
  • Remova um utilizador de um grupo para remover o respetivo acesso de início de sessão e privilégios da base de dados das bases de dados do Cloud SQL.
  • Conceder privilégios de início de sessão ou de base de dados a um grupo uma única vez, em vez de ter de conceder os mesmos privilégios várias vezes a diferentes utilizadores.
  • Remover autorizações de início de sessão ou acesso a um objeto de base de dados para um grupo de uma só vez.

Embora as funções e as autorizações do IAM sejam atribuídas ao nível do grupo, os utilizadores e as contas de serviço usam as respetivas contas e credenciais do IAM individuais e não uma conta de grupo partilhada para iniciar sessão. O Cloud SQL cria uma conta de base de dados na instância para esse utilizador ou conta de serviço após o primeiro início de sessão.

O início de sessão individual e a atividade da base de dados de cada utilizador ou conta de serviço aparecem nos registos de auditoria. Para fins de auditoria, tem a vantagem de ver que conta realizou que ação na sua base de dados.

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

Quando adiciona um utilizador ou uma conta de serviço a um grupo, ocorrem as seguintes alterações no Cloud SQL:

  • Se já tiver concedido autorizações de início de sessão do IAM ao grupo, o utilizador ou a conta de serviço ganha a capacidade de iniciar sessão na instância do Cloud SQL porque o utilizador ou a conta de serviço pertence ao grupo.
  • O utilizador herda automaticamente todos os privilégios da base de dados que foram concedidos ao grupo.

Quando remove um utilizador ou uma conta de serviço do grupo, ocorrem as seguintes alterações no Cloud SQL:

  • O utilizador perde todos os privilégios da base de dados que foram herdados anteriormente por ser membro do grupo.
  • O utilizador pode continuar a iniciar sessão se receber autorizações de início de sessão da IAM para a instância do Cloud SQL através de outras inscrições em grupos. No entanto, o utilizador não tem privilégios de base de dados da respetiva associação ao grupo anterior quando inicia sessão.

Práticas recomendadas de autenticação de grupos do IAM

  • Quando revoga a autorização de início de sessão (cloudsql.instances.login) para um grupo do IAM no Cloud ID, certifique-se de que também elimina o grupo da instância do Cloud SQL.
  • Quando elimina um grupo de um Cloud Identity, certifique-se de que também elimina esse grupo da instância do Cloud SQL.
  • Use grupos para configurar o controlo de acesso baseado em funções na sua base de dados. Conceda sempre ao grupo os privilégios mínimos necessários.
  • Não conceda funções de autenticação de grupos do IAM a utilizadores integrados. Por exemplo, se tiver um utilizador incorporado, user-a, e criar um utilizador de autenticação do grupo IAM, user-b@example.com, não conceda a função user-b@example.com a user-a.

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

  • Pode adicionar um máximo de 200 grupos da IAM a uma instância.
  • Não pode adicionar contas de serviço ou utilizadores do IAM individuais que pertencem a um grupo na mesma instância. Por outras palavras, não pode adicionar uma conta do tipo CLOUD_IAM_USER ou CLOUD_IAM_SERVICE_ACCOUNT se já existir uma conta idêntica do tipo CLOUD_IAM_GROUP_USER ou CLOUD_IAM_GROUP_SERVICE_ACCOUNT.
  • Se já existir uma conta individual numa instância com o tipo CLOUD_IAM_USER ou CLOUD_IAM_SERVICE_ACCOUNT, não é possível usar a conta para autenticação de grupos do IAM. Estes tipos de utilizadores não herdam funções da IAM nem privilégios da base de dados de um grupo.

    Para corrigir este problema e usar a conta com a autenticação de grupo do IAM, remova o utilizador ou a conta de serviço do IAM individual.

    Para mais informações, consulte o artigo Um utilizador ou uma conta de serviço do IAM existente não está a herdar os privilégios da base de dados concedidos ao respetivo grupo.
  • As alterações à associação a grupos do Cloud ID, como a adição de uma conta, demoram cerca de 15 minutos a serem propagadas. Isto é adicional ao tempo necessário para as alterações da IAM.

Autenticação da base de dados de IAM automática versus manual

O Cloud SQL para MySQL tem duas opções para a autenticação de base de dados da IAM: automática e manual.

Autenticação automática da base de dados de IAM

A autenticação automática de bases de dados da IAM permite-lhe transferir o pedido e a gestão de tokens de acesso para um conetor do Cloud SQL intermediário, como o proxy Auth do Cloud SQL ou um dos conetores de linguagem do Cloud SQL. Com a autenticação automática da base de dados do IAM, os utilizadores só têm de transmitir o nome de utilizador da base de dados do IAM num pedido de ligação do cliente. O conetor envia as informações do token de acesso para o atributo de palavra-passe em nome do cliente.

A autenticação automática da base de dados do IAM requer a utilização de um conetor do Cloud SQL e é suportada pelo proxy Auth do Cloud SQL, pelo conetor Go, pelo conetor Java e pelo conetor Python.

Para uma experiência mais segura e fiável, recomendamos que use a autenticação automática da base de dados do IAM. A autenticação de base de dados do IAM usa chaves de acesso do OAuth 2.0, que têm uma duração curta e são válidas apenas durante uma hora. Os conetores do Cloud SQL podem pedir e atualizar estes tokens, o que garante que os processos ou as aplicações de longa duração que dependem da partilha de ligações podem ter ligações estáveis. A autenticação automática da base de dados do IAM é fortemente recomendada em vez da autenticação manual.

Para mais informações, consulte o artigo Inicie sessão com a autenticação automática da base de dados da IAM.

Autenticação manual da base de dados de IAM

A autenticação manual da base de dados da IAM requer que o principal da IAM transmita explicitamente o token de acesso para o atributo de palavra-passe no pedido de ligação do cliente. Os principais têm de iniciar sessão primeiro no Google Cloud e pedir explicitamente o token de acesso ao IAM.

Com a CLI gcloud, pode pedir explicitamente um token do OAuth 2.0 com o âmbito da API Cloud SQL Admin que é usado para iniciar sessão na base de dados. Quando inicia sessão como utilizador da base de dados com a autenticação da base de dados da IAM, usa o seu endereço de email como nome de utilizador e o token de acesso como palavra-passe. Pode usar este método com uma ligação direta à base de dados ou com um conetor do Cloud SQL.

O início de sessão com a autenticação da base de dados do IAM só pode ser feito através de uma ligação SSL.

Para mais informações, consulte o artigo Iniciar sessão com a autenticação manual da base de dados da IAM.

Acesso sensível ao contexto e autenticação de base de dados IAM

Se estiver a usar o acesso sensível ao contexto na sua configuração do IAM, não pode usar um conetor do Cloud SQL, como o proxy Auth do Cloud SQL ou um dos conetores de linguagem do Cloud SQL com a autenticação da base de dados do IAM. As tentativas de início de sessão manual ou automático com a autenticação do IAM vão falhar. Em alternativa, estabeleça ligação diretamente à instância.

Administração de utilizadores e contas de serviço

Para conceder aos utilizadores e às contas de serviço acesso a bases de dados numa instância através da autenticação de base de dados do IAM, tem de os adicionar à instância ou adicioná-los a um grupo que tenha acesso à instância. Para mais informações, consulte o artigo Adicione um utilizador ou uma conta de serviço que use o IAM.

Se usar a Google Cloud consola para adicionar utilizadores ou contas de serviço, o Cloud SQL pede-lhe que adicione a função "Utilizador do Cloud SQL" ao utilizador. Esta função é necessária para que os utilizadores iniciem sessão na instância.

Depois de adicionar o utilizador do IAM à base de dados, tem de conceder privilégios da base de dados manualmente. Use o comando GRANT do MySQL para conceder outros privilégios da base de dados.

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

Pode ativar a autenticação da base de dados da IAM numa instância através da flag cloudsql_iam_authentication. Depois de ativar esta flag, a instância permite inícios de sessão de contas que estão configuradas para a autenticação da base de dados do IAM.

Este sinalizador é necessário para a autenticação de grupos IAM e a autenticação de bases de dados IAM.

A definição da flag não impede que os utilizadores existentes que não usam o IAM usem os respetivos nomes de utilizador e palavras-passe para iniciar sessão. No entanto, se desativar esta flag na instância, qualquer utilizador que tenha adicionado anteriormente através da autenticação da base de dados do IAM perde o acesso à instância. Para mais informações, consulte o artigo Configurar instâncias para autenticação de base de dados do IAM.

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

Ler réplicas A autenticação da base de dados da IAM não é ativada automaticamente numa réplica de leitura, mesmo quando está ativada na instância principal. Depois de criar uma réplica de leitura, tem de adicionar a autenticação da base de dados do IAM. Para mais informações, consulte o artigo Configure inícios de sessão de réplicas de leitura para a autenticação de base de dados do IAM.
Instâncias restauradas Se uma instância tiver sido previamente criada uma cópia de segurança e, posteriormente, restaurada para a mesma instância ou para uma instância diferente no mesmo projeto, as autorizações de início de sessão do utilizador atuais aplicam-se. Se restaurar uma cópia de segurança para uma nova instância noutro projeto, tem de configurar as autorizações do utilizador para a nova instância. Para mais informações, consulte o artigo Adicione um utilizador ou uma conta de serviço que use a autenticação da base de dados do IAM.

Acerca das condições do IAM

As condições da IAM permitem-lhe conceder funções com base em vários atributos. Por exemplo, pode permitir o acesso apenas em determinadas datas e horas ou conceder acesso apenas a recursos do Cloud SQL com determinados nomes.

Para mais informações sobre as condições do IAM, consulte a página Vista geral das condições do IAM. Também pode saber mais sobre a utilização de condições de IAM com o Cloud SQL, incluindo exemplos.

Trabalhe com os registos de auditoria do Cloud

Para manter registos do acesso aos dados, incluindo inícios de sessão, pode usar registos de auditoria. Os registos de auditoria do Google Cloud estão desativados por predefinição. Tem de ativar os registos de auditoria de acesso a dados para o acompanhamento de inícios de sessão. A utilização do registo de auditoria para este fim incorre em custos de registo de dados. Para mais informações, consulte os artigos Registos de auditoria, Configurar registos de auditoria de acesso aos dados e Preços para dados de registo.

Restrições

  1. O início de sessão de uma conta de utilizador de autenticação de base de dados do IAM tem de ser totalmente em letras minúsculas. Por exemplo, example-user@example.com. Example-User@example.com não é permitido.
  2. Por motivos de segurança, os inícios de sessão que usam a autenticação da base de dados do IAM só estão disponíveis numa ligação SSL. As associações não encriptadas são rejeitadas.
  3. Existe uma quota de inícios de sessão por minuto para cada instância, que inclui inícios de sessão com êxito e sem êxito. Quando a quota é excedida, os inícios de sessão ficam temporariamente indisponíveis. Recomendamos que evite inícios de sessão frequentes e restrinja os inícios de sessão através de redes autorizadas. A quota para autorização de inícios de sessão é de 12 000 por minuto, por instância.
  4. A autenticação de base de dados da IAM não é suportada para instâncias que usam o MySQL 5.6.

O que se segue?