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. Esta página descreve como o Cloud SQL é integrado ao IAM e como você pode usar o IAM para gerenciar o acesso aos recursos do Cloud SQL e 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
- Permissões necessárias para tarefas comuns no console do Google Cloud.
- Permissões necessárias para os comandos
gcloud sql
- Permissões necessárias para métodos da API Cloud SQL Admin
- Papéis predefinidos do Cloud SQL IAM
- Permissões e os papéis delas
- Funções personalizadas
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 que efetuam login por meio da autenticação do banco de dados do IAM podem usar a autenticação do IAM para gerenciar centralmente o controle de acesso às suas instâncias 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. Um papel é um conjunto de permissões. Você pode conceder funções aos principais para fornecer a eles os privilégios necessários para realizar tarefas específicas.
Por exemplo, com a autenticação do banco de dados do IAM, um participante principal exige
a permissão
cloudsql.instances.login
para fazer login em uma instância, que é incluída no papel Usuário de instância do Cloud SQL. Para receber a permissão, vincule o usuário, a conta de serviço ou o grupo ao papel predefinido do Cloud SQL ou a um papel personalizado que inclua 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
Autenticação de banco de dados é o processo de verificação da identidade de um usuário que está tentando acessar bancos de dados. No Cloud SQL, você pode usar os seguintes tipos de autenticação de banco de dados para usuários de 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.
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.
Práticas recomendadas de autenticação de grupo do IAM
- Quando você revoga a permissão de login (
cloudsql.instances.login
) para um grupo do IAM no Cloud Identity, certifique-se de também excluir o grupo da instância do Cloud SQL. - Ao excluir um grupo de um Cloud Identity, também exclua esse grupo da instância do Cloud SQL.
- Use grupos para configurar o controle de acesso baseado em papéis no seu banco de dados. Sempre forneça o mínimo de privilégios necessários ao grupo.
- Não conceda papéis de autenticação de grupo do IAM a usuários integrados. Por exemplo, se você tiver um usuário integrado,
user-a
e criar um usuário de autenticação de grupo IAM,user-b@example.com
, não conceda o papeluser-b@example.com
auser-a
.
Restrições de autenticação de grupos do IAM
- É possível adicionar até 200 grupos do IAM 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
ouCLOUD_IAM_SERVICE_ACCOUNT
se já existir uma conta idêntica comCLOUD_IAM_GROUP_USER
ouCLOUD_IAM_GROUP_SERVICE_ACCOUNT
. - Se já existir uma conta individual em uma instância com o
tipo
CLOUD_IAM_USER
ouCLOUD_IAM_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.
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 de banco de dados automática do IAM permite transferir a solicitação e o gerenciamento de tokens de acesso para um conector do Cloud SQL intermediário proxy do Cloud SQL Auth ou um dos conectores de linguagem do Cloud SQL. 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 e é compatível com o proxy de autenticação do Cloud SQL, 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 IAM usa tokens de acesso OAuth 2.0, que têm vida curta e são válidos por apenas 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 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 Adicione 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
- O login de uma conta de usuário de autenticação de banco de dados do IAM precisa ser todo em letras minúsculas. Por exemplo,
example-user@example.com
. OExample-User@example.com
não é permitido. - 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.
- 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 autenticação do banco de dados do IAM não é compatível com instâncias que usam o MySQL 5.6.
A seguir
- Saiba como configurar instâncias para autenticação do banco de dados do IAM.
- Saiba como adicionar um usuário ou uma conta de serviço que use a autenticação de banco de dados do IAM ao seu banco de dados.
- Veja como fazer login em um banco de dados do Cloud SQL usando a autenticação de banco de dados do IAM.
- Saiba como visualizar informações de login nos registros de auditoria.