Google Cloud oferece Gerenciamento de Identidade e Acesso (IAM), que permite que você conceda acesso a Google Cloud recursos e impedir 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 obter uma descrição detalhada de Google Cloud IAM, consulte a documentação do IAM .
O Cloud SQL fornece um conjunto de funções predefinidas projetadas para ajudar você a controlar o acesso aos seus recursos do Cloud SQL. Você também pode criar suas próprias funções personalizadas , caso as funções predefinidas não forneçam os conjuntos de permissões necessários. Além disso, as funções básicas legadas (Editor, Visualizador e Proprietário) ainda estão disponíveis, embora não ofereçam o mesmo controle detalhado que as funções do Cloud SQL. Em particular, as funções básicas fornecem acesso a recursos em Google Cloud, em vez de apenas para Cloud SQL. Para obter mais informações sobre o básico Google Cloud funções, veja Funções básicas .
Você pode definir uma política do IAM em qualquer nível da hierarquia de recursos : nível da organização, nível da pasta ou nível do projeto. Os recursos herdam as políticas de todos os seus recursos pais.
Referências do IAM para Cloud SQL
- Permissões necessárias para tarefas comuns no Google Cloud console
- Permissões necessárias para comandos
gcloud sql
- Permissões necessárias para métodos da API de administração do Cloud SQL
- Funções predefinidas do Cloud SQL IAM
- Permissões e suas funções
- Funções personalizadas
Conceitos de autenticação 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 funções , e as funções são concedidas aos principais . Para obter 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 obter mais informações, consulte Conceitos relacionados à identidade .
- Funções . Uma função é um conjunto de permissões. Você pode conceder funções a entidades principais para fornecer a elas os privilégios necessários para realizar tarefas específicas. Por exemplo, com a autenticação de banco de dados do IAM, uma entidade principal requer a permissão
cloudsql.instances.login
para efetuar login em uma instância, que está incluída na função Usuário da Instância do Cloud SQL . Para obter a permissão, vincule o usuário, a conta de serviço ou o grupo à função predefinida do Cloud SQL ou a uma função personalizada que inclua a permissão. Para obter mais informações sobre funções do IAM, consulte Funções . - Recurso . Os recursos que os principais acessam são instâncias do Cloud SQL. Por padrão, as vinculações de políticas do IAM são aplicadas no nível do projeto, de forma que os principais recebem permissões de função para todas as instâncias do Cloud SQL no projeto.
Autenticação de banco de dados IAM
A autenticação de banco de dados é o processo de verificação da identidade de um usuário que tenta 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 interna do banco de dados usa um nome de usuário e uma senha para autenticar um usuário do banco de dados.
- A autenticação de 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 de banco de dados IAM (individual) | Autenticação de grupo 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 é necessário | SSL necessário | SSL necessário |
Gerenciamento de usuários | Manual | Centralizado através do IAM | Centralizado por meio de grupos IAM e Cloud Identity |
Autenticação de grupo 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. Você pode gerenciar a função ou as permissões do IAM do Cloud SQL para várias contas simultaneamente, em vez de precisar atualizar cada usuário ou conta de serviço individualmente. Você também pode conceder e revogar os privilégios de banco de dados para um grupo do Cloud Identity. Todas as novas contas 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 suas funções do IAM e privilégios de banco de dados automaticamente.
- Remova um usuário de um grupo para remover seu acesso de login e 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 ter que conceder os mesmos privilégios várias vezes a usuários diferentes.
- Remova permissões de login ou acesso a um objeto de banco de dados para um grupo de uma só vez.
Embora as funções e permissões do IAM sejam atribuídas no nível do grupo, os usuários e contas de serviço usam suas contas e credenciais individuais do IAM e não uma conta de grupo compartilhada para efetuar 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 para cada usuário ou conta de serviço aparecem nos logs de auditoria. Para fins de auditoria, você tem a vantagem de visualizar qual conta executou qual ação no seu banco de dados.
Para obter mais informações sobre como trabalhar com grupos do Cloud Identity, consulte Visão geral do Cloud Identity .
Quando você adiciona uma conta de usuário ou 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 quaisquer privilégios de banco de dados que tenham sido concedidos ao grupo.
Quando você remove uma conta de usuário ou serviço do grupo, ocorrem as seguintes alterações no Cloud SQL:
- O usuário perde todos os privilégios de banco de dados que foram herdados anteriormente por ser membro do grupo.
- O usuário ainda poderá efetuar login se receber permissões de login do IAM para a instância do Cloud SQL por meio de outras associações de grupo. No entanto, o usuário não terá os privilégios de banco de dados da associação de grupo anterior ao efetuar login.
Práticas recomendadas de autenticação de grupo do IAM
- Ao revogar 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 uma Cloud Identity, certifique-se de excluir também esse grupo da instância do Cloud SQL.
- Use grupos para configurar o controle de acesso baseado em funções no seu banco de dados. Sempre conceda os privilégios menos necessários ao grupo.
- Não conceda funções 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 do IAM,[email protected]
, não conceda a função[email protected]
auser-a
.
Restrições de autenticação do grupo IAM
- Ao usar a autenticação de grupo do IAM, se você tiver uma instância do Cloud SQL com réplicas de leitura, será necessário efetuar login na instância primária antes de efetuar login na réplica de leitura. Após o primeiro login na instância primária, as informações do usuário do grupo serão replicadas para as réplicas de leitura. Para logins subsequentes, você pode efetuar login diretamente na réplica de leitura.
- Você pode adicionar no máximo 200 grupos IAM a uma instância.
- Não é possível adicionar contas de usuário ou serviço individuais do IAM 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 com o tipoCLOUD_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 autenticação de grupo do IAM. Esses tipos de usuário não herdam funções do IAM e privilégios de banco de dados de um grupo.Para corrigir esse problema e usar a conta com autenticação de grupo do IAM, remova a conta de serviço ou usuário individual do IAM.
Para obter mais informações, consulte Um usuário ou conta de serviço do IAM existente não está herdando os privilégios de banco de dados concedidos ao seu grupo . - Alterações na associação de grupos do Cloud Identity, como a adição de uma conta, levam cerca de 15 minutos para serem propagadas. Esse tempo é adicional ao tempo necessário para alterações no IAM .
Autenticação automática versus manual do banco de dados IAM
O Cloud SQL para PostgreSQL tem duas opções para autenticação de banco de dados IAM: automática e manual.
Autenticação automática de banco de dados IAM
A autenticação automática do banco de dados IAM permite que você transfira a solicitação e o gerenciamento de tokens de acesso para um conector intermediário do Cloud SQL , como o Cloud SQL Auth Proxy ou um dos Conectores de Linguagem do Cloud SQL. Com a autenticação automática do banco de dados IAM, os usuários precisam informar apenas o nome de usuário do banco de dados 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 IAM requer o uso de um conector Cloud SQL e é compatível com o Cloud SQL Auth Proxy , o conector Go , o conector Java e o conector 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 utiliza tokens de acesso OAuth 2.0, que têm vida útil curta e são válidos por apenas uma hora. Os conectores do Cloud SQL podem solicitar e atualizar esses tokens, garantindo que processos ou aplicativos de longa duração que dependem de pool 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 obter mais informações, consulte Efetuar login com autenticação automática do banco de dados IAM .
Autenticação manual do banco de dados IAM
A autenticação manual do banco de dados do IAM exige que o principal do IAM passe explicitamente o token de acesso para o atributo de senha na solicitação de conexão do cliente. Os principais devem primeiro efetuar login em Google Cloud e solicitar explicitamente o token de acesso do IAM.
Usando a CLI gcloud , você pode solicitar explicitamente um token OAuth 2.0 com o escopo da API Admin do Cloud SQL, usado para efetuar login no banco de dados. Ao efetuar login como usuário do banco de dados com autenticação de banco de dados do IAM, você usa seu endereço de e-mail como nome de usuário e o token de acesso como senha. Você pode usar esse método com uma conexão direta ao banco de dados ou com um conector do Cloud SQL.
O login com autenticação de banco de dados IAM só pode ser realizado por meio de uma conexão SSL.
Para obter mais informações, consulte Efetuar login com autenticação manual do banco de dados IAM .
Acesso sensível ao contexto e autenticação de banco de dados IAM
Se você estiver usando acesso sensível ao contexto na sua configuração do IAM, não poderá usar um conector do Cloud SQL, como o Cloud SQL Auth Proxy ou um dos Conectores de Linguagem do Cloud SQL, com autenticação de banco de dados do IAM. Tentativas de login manual ou automático com autenticação do IAM falharão. Em vez disso, conecte-se diretamente à instância.
Administração de contas de usuário e serviço
Para conceder aos usuários e contas de serviço acesso aos bancos de dados em uma instância usando a autenticação de banco de dados do IAM, você precisa adicioná-los à instância ou adicioná-los a um grupo que tenha acesso a ela. Para obter mais informações, consulte Adicionar uma conta de usuário ou serviço que use o IAM .
Se você usar o Google Cloud Para adicionar usuários ou contas de serviço no console, o Cloud SQL solicita que você adicione a função "Usuário do Cloud SQL" ao usuário. Essa função é necessária para que os usuários efetuem login na instância.
Se você adicionar usuários usandogcloud
ou a API, precisará conceder privilégios de login manualmente. Use o comando GRANT do PostgreSQL para conceder privilégios de banco de dados .Configuração de instância para autenticação de banco de dados IAM do Cloud SQL
Você pode habilitar a autenticação do banco de dados do IAM em uma instância usando o sinalizador cloudsql.iam_authentication
. Após habilitar esse sinalizador, a instância habilitará logins de contas configuradas para autenticação do banco de dados do IAM.
Este sinalizador é necessário para autenticação de grupo IAM e autenticação de banco de dados IAM.
Definir o sinalizador não impede que usuários existentes, não pertencentes ao IAM, usem seus nomes de usuário e senhas para efetuar login. No entanto, se você desabilitar esse sinalizador na instância, qualquer usuário adicionado anteriormente usando a autenticação do banco de dados do IAM perderá o acesso à instância. Para obter mais informações, consulte Configurando instâncias para autenticação do banco de dados do IAM .
Autenticação de banco de dados IAM do Cloud SQL para diferentes cenários de instância
Ler réplicas | A autenticação do banco de dados do IAM não é habilitada automaticamente em uma réplica de leitura, mesmo quando habilitada na instância primária. Após criar uma réplica de leitura, você precisa adicionar a autenticação do banco de dados do IAM. Para obter 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 previamente submetida a backup e posteriormente restaurada para a mesma instância ou para uma instância diferente no mesmo projeto, as autorizações de login do usuário atuais serão aplicadas. Se você restaurar um backup para uma nova instância em outro projeto, precisará configurar as autorizações de usuário para a nova instância. Para obter mais informações, consulte Adicionar uma conta de usuário ou serviço que use a autenticação de banco de dados do IAM . |
Sobre as condições do IAM
As Condições do IAM permitem que você conceda funções com base em diversos atributos. Por exemplo, você pode permitir acesso apenas em determinadas datas e horários ou conceder acesso apenas a recursos do Cloud SQL com determinados nomes.
Para obter mais informações sobre as Condições do IAM, consulte a página Visão Geral das Condições do IAM . Você também pode aprender mais sobre o Uso das Condições do IAM com o Cloud SQL, incluindo exemplos.
Trabalhar com logs de auditoria na nuvem
Para manter registros de acesso a dados, incluindo logins, você pode usar logs de auditoria. Os Logs de Auditoria do Cloud estão desativados por padrão. Você precisa ativar os logs de auditoria de Acesso a Dados para rastrear logins. O uso de logs de auditoria para essa finalidade incorre em custos de registro de dados. Para obter mais informações, consulte Logs de Auditoria , Configurando logs de auditoria de Acesso a Dados e Preços para registro de dados .
Restrições
- O login para uma conta de usuário de autenticação de banco de dados do IAM deve ser todo em letras minúsculas. Por exemplo,
[email protected]
.[email protected]
não é permitido. - Por motivos de segurança, logins usando autenticação de banco de dados IAM estão disponíveis apenas em conexões SSL. Conexões não criptografadas serão rejeitadas.
- Há uma cota de login por minuto para cada instância, que inclui logins bem-sucedidos e malsucedidos. Quando a cota é excedida, os logins ficam temporariamente indisponíveis. Recomendamos que você evite logins frequentes e restrinja os logins usando redes autorizadas . A cota para autorização de logins é de 12.000 por minuto, por instância.
O que vem a seguir
- Aprenda a configurar instâncias para autenticação de banco de dados do IAM .
- Saiba como adicionar uma conta de usuário ou serviço que usa autenticação de banco de dados do IAM ao seu banco de dados .
- Saiba como fazer login em um banco de dados Cloud SQL com autenticação de banco de dados IAM .
- Aprenda como visualizar informações de login em logs de auditoria .
Google Cloud oferece Gerenciamento de Identidade e Acesso (IAM), que permite que você conceda acesso a Google Cloud recursos e impedir 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 obter uma descrição detalhada de Google Cloud IAM, consulte a documentação do IAM .
O Cloud SQL fornece um conjunto de funções predefinidas projetadas para ajudar você a controlar o acesso aos seus recursos do Cloud SQL. Você também pode criar suas próprias funções personalizadas , caso as funções predefinidas não forneçam os conjuntos de permissões necessários. Além disso, as funções básicas legadas (Editor, Visualizador e Proprietário) ainda estão disponíveis, embora não ofereçam o mesmo controle detalhado que as funções do Cloud SQL. Em particular, as funções básicas fornecem acesso a recursos em Google Cloud, em vez de apenas para Cloud SQL. Para obter mais informações sobre o básico Google Cloud funções, veja Funções básicas .
Você pode definir uma política do IAM em qualquer nível da hierarquia de recursos : nível da organização, nível da pasta ou nível do projeto. Os recursos herdam as políticas de todos os seus recursos pais.
Referências do IAM para Cloud SQL
- Permissões necessárias para tarefas comuns no Google Cloud console
- Permissões necessárias para comandos
gcloud sql
- Permissões necessárias para métodos da API de administração do Cloud SQL
- Funções predefinidas do Cloud SQL IAM
- Permissões e suas funções
- Funções personalizadas
Conceitos de autenticação 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 funções , e as funções são concedidas aos principais . Para obter 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 obter mais informações, consulte Conceitos relacionados à identidade .
- Funções . Uma função é um conjunto de permissões. Você pode conceder funções a entidades principais para fornecer a elas os privilégios necessários para realizar tarefas específicas. Por exemplo, com a autenticação de banco de dados do IAM, uma entidade principal requer a permissão
cloudsql.instances.login
para efetuar login em uma instância, que está incluída na função Usuário da Instância do Cloud SQL . Para obter a permissão, vincule o usuário, a conta de serviço ou o grupo à função predefinida do Cloud SQL ou a uma função personalizada que inclua a permissão. Para obter mais informações sobre funções do IAM, consulte Funções . - Recurso . Os recursos que os principais acessam são instâncias do Cloud SQL. Por padrão, as vinculações de políticas do IAM são aplicadas no nível do projeto, de forma que os principais recebem permissões de função para todas as instâncias do Cloud SQL no projeto.
Autenticação de banco de dados IAM
A autenticação de banco de dados é o processo de verificação da identidade de um usuário que tenta 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 interna do banco de dados usa um nome de usuário e uma senha para autenticar um usuário do banco de dados.
- A autenticação de 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 de banco de dados IAM (individual) | Autenticação de grupo 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 é necessário | SSL necessário | SSL necessário |
Gerenciamento de usuários | Manual | Centralizado através do IAM | Centralizado por meio de grupos IAM e Cloud Identity |
Autenticação de grupo 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. Você pode gerenciar a função ou as permissões do IAM do Cloud SQL para várias contas simultaneamente, em vez de precisar atualizar cada usuário ou conta de serviço individualmente. Você também pode conceder e revogar os privilégios de banco de dados para um grupo do Cloud Identity. Todas as novas contas 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 suas funções do IAM e privilégios de banco de dados automaticamente.
- Remova um usuário de um grupo para remover seu acesso de login e 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 ter que conceder os mesmos privilégios várias vezes a usuários diferentes.
- Remova permissões de login ou acesso a um objeto de banco de dados para um grupo de uma só vez.
Embora as funções e permissões do IAM sejam atribuídas no nível do grupo, os usuários e contas de serviço usam suas contas e credenciais individuais do IAM e não uma conta de grupo compartilhada para efetuar 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 para cada usuário ou conta de serviço aparecem nos logs de auditoria. Para fins de auditoria, você tem a vantagem de visualizar qual conta executou qual ação no seu banco de dados.
Para obter mais informações sobre como trabalhar com grupos do Cloud Identity, consulte Visão geral do Cloud Identity .
Quando você adiciona uma conta de usuário ou 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 quaisquer privilégios de banco de dados que tenham sido concedidos ao grupo.
Quando você remove uma conta de usuário ou serviço do grupo, ocorrem as seguintes alterações no Cloud SQL:
- O usuário perde todos os privilégios de banco de dados que foram herdados anteriormente por ser membro do grupo.
- O usuário ainda poderá efetuar login se receber permissões de login do IAM para a instância do Cloud SQL por meio de outras associações de grupo. No entanto, o usuário não terá os privilégios de banco de dados da associação de grupo anterior ao efetuar login.
Práticas recomendadas de autenticação de grupo do IAM
- Ao revogar 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 uma Cloud Identity, certifique-se de excluir também esse grupo da instância do Cloud SQL.
- Use grupos para configurar o controle de acesso baseado em funções no seu banco de dados. Sempre conceda os privilégios menos necessários ao grupo.
- Não conceda funções 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 do IAM,[email protected]
, não conceda a função[email protected]
auser-a
.
Restrições de autenticação do grupo IAM
- Ao usar a autenticação de grupo do IAM, se você tiver uma instância do Cloud SQL com réplicas de leitura, será necessário efetuar login na instância primária antes de efetuar login na réplica de leitura. Após o primeiro login na instância primária, as informações do usuário do grupo serão replicadas para as réplicas de leitura. Para logins subsequentes, você pode efetuar login diretamente na réplica de leitura.
- Você pode adicionar no máximo 200 grupos IAM a uma instância.
- Não é possível adicionar contas de usuário ou serviço individuais do IAM 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 com o tipoCLOUD_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 autenticação de grupo do IAM. Esses tipos de usuário não herdam funções do IAM e privilégios de banco de dados de um grupo.Para corrigir esse problema e usar a conta com autenticação de grupo do IAM, remova a conta de serviço ou usuário individual do IAM.
Para obter mais informações, consulte Um usuário ou conta de serviço do IAM existente não está herdando os privilégios de banco de dados concedidos ao seu grupo . - Alterações na associação de grupos do Cloud Identity, como a adição de uma conta, levam cerca de 15 minutos para serem propagadas. Esse tempo é adicional ao tempo necessário para alterações no IAM .
Autenticação automática versus manual do banco de dados IAM
O Cloud SQL para PostgreSQL tem duas opções para autenticação de banco de dados IAM: automática e manual.
Autenticação automática de banco de dados IAM
A autenticação automática do banco de dados IAM permite que você transfira a solicitação e o gerenciamento de tokens de acesso para um conector intermediário do Cloud SQL , como o Cloud SQL Auth Proxy ou um dos Conectores de Linguagem do Cloud SQL. Com a autenticação automática do banco de dados IAM, os usuários precisam informar apenas o nome de usuário do banco de dados 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 IAM requer o uso de um conector Cloud SQL e é compatível com o Cloud SQL Auth Proxy , o conector Go , o conector Java e o conector 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 utiliza tokens de acesso OAuth 2.0, que têm vida útil curta e são válidos por apenas uma hora. Os conectores do Cloud SQL podem solicitar e atualizar esses tokens, garantindo que processos ou aplicativos de longa duração que dependem de pool 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 obter mais informações, consulte Efetuar login com autenticação automática do banco de dados IAM .
Autenticação manual do banco de dados IAM
A autenticação manual do banco de dados do IAM exige que o principal do IAM passe explicitamente o token de acesso para o atributo de senha na solicitação de conexão do cliente. Os principais devem primeiro efetuar login em Google Cloud e solicitar explicitamente o token de acesso do IAM.
Usando a CLI gcloud , você pode solicitar explicitamente um token OAuth 2.0 com o escopo da API Admin do Cloud SQL, usado para efetuar login no banco de dados. Ao efetuar login como usuário do banco de dados com autenticação de banco de dados do IAM, você usa seu endereço de e-mail como nome de usuário e o token de acesso como senha. Você pode usar esse método com uma conexão direta ao banco de dados ou com um conector do Cloud SQL.
O login com autenticação de banco de dados IAM só pode ser realizado por meio de uma conexão SSL.
Para obter mais informações, consulte Efetuar login com autenticação manual do banco de dados IAM .
Acesso sensível ao contexto e autenticação de banco de dados IAM
Se você estiver usando acesso sensível ao contexto na sua configuração do IAM, não poderá usar um conector do Cloud SQL, como o Cloud SQL Auth Proxy ou um dos Conectores de Linguagem do Cloud SQL, com autenticação de banco de dados do IAM. Tentativas de login manual ou automático com autenticação do IAM falharão. Em vez disso, conecte-se diretamente à instância.
Administração de contas de usuário e serviço
Para conceder aos usuários e contas de serviço acesso aos bancos de dados em uma instância usando a autenticação de banco de dados do IAM, você precisa adicioná-los à instância ou adicioná-los a um grupo que tenha acesso a ela. Para obter mais informações, consulte Adicionar uma conta de usuário ou serviço que use o IAM .
Se você usar o Google Cloud Para adicionar usuários ou contas de serviço no console, o Cloud SQL solicita que você adicione a função "Usuário do Cloud SQL" ao usuário. Essa função é necessária para que os usuários efetuem login na instância.
Se você adicionar usuários usandogcloud
ou a API, precisará conceder privilégios de login manualmente. Use o comando GRANT do PostgreSQL para conceder privilégios de banco de dados .Configuração de instância para autenticação de banco de dados IAM do Cloud SQL
Você pode habilitar a autenticação do banco de dados do IAM em uma instância usando o sinalizador cloudsql.iam_authentication
. Após habilitar esse sinalizador, a instância habilitará logins de contas configuradas para autenticação do banco de dados do IAM.
Este sinalizador é necessário para autenticação de grupo IAM e autenticação de banco de dados IAM.
Definir o sinalizador não impede que usuários existentes, não pertencentes ao IAM, usem seus nomes de usuário e senhas para efetuar login. No entanto, se você desabilitar esse sinalizador na instância, qualquer usuário adicionado anteriormente usando a autenticação do banco de dados do IAM perderá o acesso à instância. Para obter mais informações, consulte Configurando instâncias para autenticação do banco de dados do IAM .
Autenticação de banco de dados IAM do Cloud SQL para diferentes cenários de instância
Ler réplicas | A autenticação do banco de dados do IAM não é habilitada automaticamente em uma réplica de leitura, mesmo quando habilitada na instância primária. Após criar uma réplica de leitura, você precisa adicionar a autenticação do banco de dados do IAM. Para obter 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 previamente submetida a backup e posteriormente restaurada para a mesma instância ou para uma instância diferente no mesmo projeto, as autorizações de login do usuário atuais serão aplicadas. Se você restaurar um backup para uma nova instância em outro projeto, precisará configurar as autorizações de usuário para a nova instância. Para obter mais informações, consulte Adicionar uma conta de usuário ou serviço que use a autenticação de banco de dados do IAM . |
Sobre as condições do IAM
As Condições do IAM permitem que você conceda funções com base em diversos atributos. Por exemplo, você pode permitir acesso apenas em determinadas datas e horários ou conceder acesso apenas a recursos do Cloud SQL com determinados nomes.
Para obter mais informações sobre as Condições do IAM, consulte a página Visão Geral das Condições do IAM . Você também pode aprender mais sobre o Uso das Condições do IAM com o Cloud SQL, incluindo exemplos.
Trabalhar com logs de auditoria na nuvem
Para manter registros de acesso a dados, incluindo logins, você pode usar logs de auditoria. Os Logs de Auditoria do Cloud estão desativados por padrão. Você precisa ativar os logs de auditoria de Acesso a Dados para rastrear logins. O uso de logs de auditoria para essa finalidade incorre em custos de registro de dados. Para obter mais informações, consulte Logs de Auditoria , Configurando logs de auditoria de Acesso a Dados e Preços para registro de dados .
Restrições
- O login para uma conta de usuário de autenticação de banco de dados do IAM deve ser todo em letras minúsculas. Por exemplo,
[email protected]
.[email protected]
não é permitido. - Por motivos de segurança, logins usando autenticação de banco de dados IAM estão disponíveis apenas em conexões SSL. Conexões não criptografadas serão rejeitadas.
- Há uma cota de login por minuto para cada instância, que inclui logins bem-sucedidos e malsucedidos. Quando a cota é excedida, os logins ficam temporariamente indisponíveis. Recomendamos que você evite logins frequentes e restrinja os logins usando redes autorizadas . A cota para autorização de logins é de 12.000 por minuto, por instância.
O que vem a seguir
- Aprenda a configurar instâncias para autenticação de banco de dados do IAM .
- Saiba como adicionar uma conta de usuário ou serviço que usa autenticação de banco de dados do IAM ao seu banco de dados .
- Saiba como fazer login em um banco de dados Cloud SQL com autenticação de banco de dados IAM .
- Aprenda como visualizar informações de login em logs de auditoria .
Google Cloud oferece Gerenciamento de Identidade e Acesso (IAM), que permite que você conceda acesso a Google Cloud recursos e impedir 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 obter uma descrição detalhada de Google Cloud IAM, consulte a documentação do IAM .
O Cloud SQL fornece um conjunto de funções predefinidas projetadas para ajudar você a controlar o acesso aos seus recursos do Cloud SQL. Você também pode criar suas próprias funções personalizadas , caso as funções predefinidas não forneçam os conjuntos de permissões necessários. Além disso, as funções básicas legadas (Editor, Visualizador e Proprietário) ainda estão disponíveis, embora não ofereçam o mesmo controle detalhado que as funções do Cloud SQL. Em particular, as funções básicas fornecem acesso a recursos em Google Cloud, em vez de apenas para Cloud SQL. Para obter mais informações sobre o básico Google Cloud funções, veja Funções básicas .
Você pode definir uma política do IAM em qualquer nível da hierarquia de recursos : nível da organização, nível da pasta ou nível do projeto. Os recursos herdam as políticas de todos os seus recursos pais.
Referências do IAM para Cloud SQL
- Permissões necessárias para tarefas comuns no Google Cloud console
- Permissões necessárias para comandos
gcloud sql
- Permissões necessárias para métodos da API de administração do Cloud SQL
- Funções predefinidas do Cloud SQL IAM
- Permissões e suas funções
- Funções personalizadas
Conceitos de autenticação 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 funções , e as funções são concedidas aos principais . Para obter 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 obter mais informações, consulte Conceitos relacionados à identidade .
- Funções . Uma função é um conjunto de permissões. Você pode conceder funções a entidades principais para fornecer a elas os privilégios necessários para realizar tarefas específicas. Por exemplo, com a autenticação de banco de dados do IAM, uma entidade principal requer a permissão
cloudsql.instances.login
para efetuar login em uma instância, que está incluída na função Usuário da Instância do Cloud SQL . Para obter a permissão, vincule o usuário, a conta de serviço ou o grupo à função predefinida do Cloud SQL ou a uma função personalizada que inclua a permissão. Para obter mais informações sobre funções do IAM, consulte Funções . - Recurso . Os recursos que os principais acessam são instâncias do Cloud SQL. Por padrão, as vinculações de políticas do IAM são aplicadas no nível do projeto, de forma que os principais recebem permissões de função para todas as instâncias do Cloud SQL no projeto.
Autenticação de banco de dados IAM
A autenticação de banco de dados é o processo de verificação da identidade de um usuário que tenta 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 interna do banco de dados usa um nome de usuário e uma senha para autenticar um usuário do banco de dados.
- A autenticação de 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 de banco de dados IAM (individual) | Autenticação de grupo 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 é necessário | SSL necessário | SSL necessário |
Gerenciamento de usuários | Manual | Centralizado através do IAM | Centralizado por meio de grupos IAM e Cloud Identity |
Autenticação de grupo 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. Você pode gerenciar a função ou as permissões do IAM do Cloud SQL para várias contas simultaneamente, em vez de precisar atualizar cada usuário ou conta de serviço individualmente. Você também pode conceder e revogar os privilégios de banco de dados para um grupo do Cloud Identity. Todas as novas contas 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 suas funções do IAM e privilégios de banco de dados automaticamente.
- Remova um usuário de um grupo para remover seu acesso de login e 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 ter que conceder os mesmos privilégios várias vezes a usuários diferentes.
- Remova permissões de login ou acesso a um objeto de banco de dados para um grupo de uma só vez.
Embora as funções e permissões do IAM sejam atribuídas no nível do grupo, os usuários e contas de serviço usam suas contas e credenciais individuais do IAM e não uma conta de grupo compartilhada para efetuar 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 para cada usuário ou conta de serviço aparecem nos logs de auditoria. Para fins de auditoria, você tem a vantagem de visualizar qual conta executou qual ação no seu banco de dados.
Para obter mais informações sobre como trabalhar com grupos do Cloud Identity, consulte Visão geral do Cloud Identity .
Quando você adiciona uma conta de usuário ou 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 quaisquer privilégios de banco de dados que tenham sido concedidos ao grupo.
Quando você remove uma conta de usuário ou serviço do grupo, ocorrem as seguintes alterações no Cloud SQL:
- O usuário perde todos os privilégios de banco de dados que foram herdados anteriormente por ser membro do grupo.
- O usuário ainda poderá efetuar login se receber permissões de login do IAM para a instância do Cloud SQL por meio de outras associações de grupo. No entanto, o usuário não terá os privilégios de banco de dados da associação de grupo anterior ao efetuar login.
Práticas recomendadas de autenticação de grupo do IAM
- Ao revogar 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 uma Cloud Identity, certifique-se de excluir também esse grupo da instância do Cloud SQL.
- Use grupos para configurar o controle de acesso baseado em funções no seu banco de dados. Sempre conceda os privilégios menos necessários ao grupo.
- Não conceda funções 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 do IAM,[email protected]
, não conceda a função[email protected]
auser-a
.
Restrições de autenticação do grupo IAM
- Ao usar a autenticação de grupo do IAM, se você tiver uma instância do Cloud SQL com réplicas de leitura, será necessário efetuar login na instância primária antes de efetuar login na réplica de leitura. Após o primeiro login na instância primária, as informações do usuário do grupo serão replicadas para as réplicas de leitura. Para logins subsequentes, você pode efetuar login diretamente na réplica de leitura.
- Você pode adicionar no máximo 200 grupos IAM a uma instância.
- Não é possível adicionar contas de usuário ou serviço individuais do IAM 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 com o tipoCLOUD_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 autenticação de grupo do IAM. Esses tipos de usuário não herdam funções do IAM e privilégios de banco de dados de um grupo.Para corrigir esse problema e usar a conta com autenticação de grupo do IAM, remova a conta de serviço ou usuário individual do IAM.
Para obter mais informações, consulte Um usuário ou conta de serviço do IAM existente não está herdando os privilégios de banco de dados concedidos ao seu grupo . - Alterações na associação de grupos do Cloud Identity, como a adição de uma conta, levam cerca de 15 minutos para serem propagadas. Esse tempo é adicional ao tempo necessário para alterações no IAM .
Autenticação automática versus manual do banco de dados IAM
O Cloud SQL para PostgreSQL tem duas opções para autenticação de banco de dados IAM: automática e manual.
Autenticação automática de banco de dados IAM
A autenticação automática do banco de dados IAM permite que você transfira a solicitação e o gerenciamento de tokens de acesso para um conector intermediário do Cloud SQL , como o Cloud SQL Auth Proxy ou um dos Conectores de Linguagem do Cloud SQL. Com a autenticação automática do banco de dados IAM, os usuários precisam informar apenas o nome de usuário do banco de dados 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 IAM requer o uso de um conector Cloud SQL e é compatível com o Cloud SQL Auth Proxy , o conector Go , o conector Java e o conector 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 utiliza tokens de acesso OAuth 2.0, que têm vida útil curta e são válidos por apenas uma hora. Os conectores do Cloud SQL podem solicitar e atualizar esses tokens, garantindo que processos ou aplicativos de longa duração que dependem de pool 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 obter mais informações, consulte Efetuar login com autenticação automática do banco de dados IAM .
Autenticação manual do banco de dados IAM
A autenticação manual do banco de dados do IAM exige que o principal do IAM passe explicitamente o token de acesso para o atributo de senha na solicitação de conexão do cliente. Os principais devem primeiro efetuar login em Google Cloud e solicitar explicitamente o token de acesso do IAM.
Usando a CLI gcloud , você pode solicitar explicitamente um token OAuth 2.0 com o escopo da API Admin do Cloud SQL, usado para efetuar login no banco de dados. Ao efetuar login como usuário do banco de dados com autenticação de banco de dados do IAM, você usa seu endereço de e-mail como nome de usuário e o token de acesso como senha. Você pode usar esse método com uma conexão direta ao banco de dados ou com um conector do Cloud SQL.
O login com autenticação de banco de dados IAM só pode ser realizado por meio de uma conexão SSL.
Para obter mais informações, consulte Efetuar login com autenticação manual do banco de dados IAM .
Acesso sensível ao contexto e autenticação de banco de dados IAM
Se você estiver usando acesso sensível ao contexto na sua configuração do IAM, não poderá usar um conector do Cloud SQL, como o Cloud SQL Auth Proxy ou um dos Conectores de Linguagem do Cloud SQL, com autenticação de banco de dados do IAM. Tentativas de login manual ou automático com autenticação do IAM falharão. Em vez disso, conecte-se diretamente à instância.
Administração de contas de usuário e serviço
Para conceder aos usuários e contas de serviço acesso aos bancos de dados em uma instância usando a autenticação de banco de dados do IAM, você precisa adicioná-los à instância ou adicioná-los a um grupo que tenha acesso a ela. Para obter mais informações, consulte Adicionar uma conta de usuário ou serviço que use o IAM .
Se você usar o Google Cloud Para adicionar usuários ou contas de serviço no console, o Cloud SQL solicita que você adicione a função "Usuário do Cloud SQL" ao usuário. Essa função é necessária para que os usuários efetuem login na instância.
Se você adicionar usuários usandogcloud
ou a API, precisará conceder privilégios de login manualmente. Use o comando GRANT do PostgreSQL para conceder privilégios de banco de dados .Configuração de instância para autenticação de banco de dados IAM do Cloud SQL
Você pode habilitar a autenticação do banco de dados do IAM em uma instância usando o sinalizador cloudsql.iam_authentication
. Após habilitar esse sinalizador, a instância habilitará logins de contas configuradas para autenticação do banco de dados do IAM.
Este sinalizador é necessário para autenticação de grupo IAM e autenticação de banco de dados IAM.
Definir o sinalizador não impede que usuários existentes, não pertencentes ao IAM, usem seus nomes de usuário e senhas para efetuar login. No entanto, se você desabilitar esse sinalizador na instância, qualquer usuário adicionado anteriormente usando a autenticação do banco de dados do IAM perderá o acesso à instância. Para obter mais informações, consulte Configurando instâncias para autenticação do banco de dados do IAM .
Autenticação de banco de dados IAM do Cloud SQL para diferentes cenários de instância
Ler réplicas | A autenticação do banco de dados do IAM não é habilitada automaticamente em uma réplica de leitura, mesmo quando habilitada na instância primária. Após criar uma réplica de leitura, você precisa adicionar a autenticação do banco de dados do IAM. Para obter 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 previamente submetida a backup e posteriormente restaurada para a mesma instância ou para uma instância diferente no mesmo projeto, as autorizações de login do usuário atuais serão aplicadas. Se você restaurar um backup para uma nova instância em outro projeto, precisará configurar as autorizações de usuário para a nova instância. Para obter mais informações, consulte Adicionar uma conta de usuário ou serviço que use a autenticação de banco de dados do IAM . |
Sobre as condições do IAM
As Condições do IAM permitem que você conceda funções com base em diversos atributos. Por exemplo, você pode permitir acesso apenas em determinadas datas e horários ou conceder acesso apenas a recursos do Cloud SQL com determinados nomes.
Para obter mais informações sobre as Condições do IAM, consulte a página Visão Geral das Condições do IAM . Você também pode aprender mais sobre o Uso das Condições do IAM com o Cloud SQL, incluindo exemplos.
Trabalhar com logs de auditoria na nuvem
Para manter registros de acesso a dados, incluindo logins, você pode usar logs de auditoria. Os Logs de Auditoria do Cloud estão desativados por padrão. Você precisa ativar os logs de auditoria de Acesso a Dados para rastrear logins. O uso de logs de auditoria para essa finalidade incorre em custos de registro de dados. Para obter mais informações, consulte Logs de Auditoria , Configurando logs de auditoria de Acesso a Dados e Preços para registro de dados .
Restrições
- O login para uma conta de usuário de autenticação de banco de dados do IAM deve ser todo em letras minúsculas. Por exemplo,
[email protected]
.[email protected]
não é permitido. - Por motivos de segurança, logins usando autenticação de banco de dados IAM estão disponíveis apenas em conexões SSL. Conexões não criptografadas serão rejeitadas.
- Há uma cota de login por minuto para cada instância, que inclui logins bem-sucedidos e malsucedidos. Quando a cota é excedida, os logins ficam temporariamente indisponíveis. Recomendamos que você evite logins frequentes e restrinja os logins usando redes autorizadas . A cota para autorização de logins é de 12.000 por minuto, por instância.
O que vem a seguir
- Aprenda a configurar instâncias para autenticação de banco de dados do IAM .
- Saiba como adicionar uma conta de usuário ou serviço que usa autenticação de banco de dados do IAM ao seu banco de dados .
- Saiba como fazer login em um banco de dados Cloud SQL com autenticação de banco de dados IAM .
- Aprenda como visualizar informações de login em logs de auditoria .
Google Cloud oferece Gerenciamento de Identidade e Acesso (IAM), que permite que você conceda acesso a Google Cloud recursos e impedir 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 obter uma descrição detalhada de Google Cloud IAM, consulte a documentação do IAM .
O Cloud SQL fornece um conjunto de funções predefinidas projetadas para ajudar você a controlar o acesso aos seus recursos do Cloud SQL. Você também pode criar suas próprias funções personalizadas , caso as funções predefinidas não forneçam os conjuntos de permissões necessários. Além disso, as funções básicas legadas (Editor, Visualizador e Proprietário) ainda estão disponíveis, embora não ofereçam o mesmo controle detalhado que as funções do Cloud SQL. Em particular, as funções básicas fornecem acesso a recursos em Google Cloud, em vez de apenas para Cloud SQL. Para obter mais informações sobre o básico Google Cloud funções, veja Funções básicas .
Você pode definir uma política do IAM em qualquer nível da hierarquia de recursos : nível da organização, nível da pasta ou nível do projeto. Os recursos herdam as políticas de todos os seus recursos pais.
Referências do IAM para Cloud SQL
- Permissões necessárias para tarefas comuns no Google Cloud console
- Permissões necessárias para comandos
gcloud sql
- Permissões necessárias para métodos da API de administração do Cloud SQL
- Funções predefinidas do Cloud SQL IAM
- Permissões e suas funções
- Funções personalizadas
Conceitos de autenticação 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 funções , e as funções são concedidas aos principais . Para obter 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 obter mais informações, consulte Conceitos relacionados à identidade .
- Funções . Uma função é um conjunto de permissões. Você pode conceder funções a entidades principais para fornecer a elas os privilégios necessários para realizar tarefas específicas. Por exemplo, com a autenticação de banco de dados do IAM, uma entidade principal requer a permissão
cloudsql.instances.login
para efetuar login em uma instância, que está incluída na função Usuário da Instância do Cloud SQL . Para obter a permissão, vincule o usuário, a conta de serviço ou o grupo à função predefinida do Cloud SQL ou a uma função personalizada que inclua a permissão. Para obter mais informações sobre funções do IAM, consulte Funções . - Recurso . Os recursos que os principais acessam são instâncias do Cloud SQL. Por padrão, as vinculações de políticas do IAM são aplicadas no nível do projeto, de forma que os principais recebem permissões de função para todas as instâncias do Cloud SQL no projeto.
Autenticação de banco de dados IAM
A autenticação de banco de dados é o processo de verificação da identidade de um usuário que tenta 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 interna do banco de dados usa um nome de usuário e uma senha para autenticar um usuário do banco de dados.
- A autenticação de 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 de banco de dados IAM (individual) | Autenticação de grupo 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 é necessário | SSL necessário | SSL necessário |
Gerenciamento de usuários | Manual | Centralizado através do IAM | Centralizado por meio de grupos IAM e Cloud Identity |
Autenticação de grupo 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. Você pode gerenciar a função ou as permissões do IAM do Cloud SQL para várias contas simultaneamente, em vez de precisar atualizar cada usuário ou conta de serviço individualmente. Você também pode conceder e revogar os privilégios de banco de dados para um grupo do Cloud Identity. Todas as novas contas 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 suas funções do IAM e privilégios de banco de dados automaticamente.
- Remova um usuário de um grupo para remover seu acesso de login e 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 ter que conceder os mesmos privilégios várias vezes a usuários diferentes.
- Remova permissões de login ou acesso a um objeto de banco de dados para um grupo de uma só vez.
Embora as funções e permissões do IAM sejam atribuídas no nível do grupo, os usuários e contas de serviço usam suas contas e credenciais individuais do IAM e não uma conta de grupo compartilhada para efetuar 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 para cada usuário ou conta de serviço aparecem nos logs de auditoria. Para fins de auditoria, você tem a vantagem de visualizar qual conta executou qual ação no seu banco de dados.
Para obter mais informações sobre como trabalhar com grupos do Cloud Identity, consulte Visão geral do Cloud Identity .
Quando você adiciona uma conta de usuário ou 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 quaisquer privilégios de banco de dados que tenham sido concedidos ao grupo.
Quando você remove uma conta de usuário ou serviço do grupo, ocorrem as seguintes alterações no Cloud SQL:
- O usuário perde todos os privilégios de banco de dados que foram herdados anteriormente por ser membro do grupo.
- O usuário ainda poderá efetuar login se receber permissões de login do IAM para a instância do Cloud SQL por meio de outras associações de grupo. No entanto, o usuário não terá os privilégios de banco de dados da associação de grupo anterior ao efetuar login.
Práticas recomendadas de autenticação de grupo do IAM
- Ao revogar 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 uma Cloud Identity, certifique-se de excluir também esse grupo da instância do Cloud SQL.
- Use grupos para configurar o controle de acesso baseado em funções no seu banco de dados. Sempre conceda os privilégios menos necessários ao grupo.
- Não conceda funções 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 do IAM,[email protected]
, não conceda a função[email protected]
auser-a
.
Restrições de autenticação do grupo IAM
- Ao usar a autenticação de grupo do IAM, se você tiver uma instância do Cloud SQL com réplicas de leitura, será necessário efetuar login na instância primária antes de efetuar login na réplica de leitura. Após o primeiro login na instância primária, as informações do usuário do grupo serão replicadas para as réplicas de leitura. Para logins subsequentes, você pode efetuar login diretamente na réplica de leitura.
- Você pode adicionar no máximo 200 grupos IAM a uma instância.
- Não é possível adicionar contas de usuário ou serviço individuais do IAM 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 com o tipoCLOUD_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 autenticação de grupo do IAM. Esses tipos de usuário não herdam funções do IAM e privilégios de banco de dados de um grupo.Para corrigir esse problema e usar a conta com autenticação de grupo do IAM, remova a conta de serviço ou usuário individual do IAM.
Para obter mais informações, consulte Um usuário ou conta de serviço do IAM existente não está herdando os privilégios de banco de dados concedidos ao seu grupo . - Alterações na associação de grupos do Cloud Identity, como a adição de uma conta, levam cerca de 15 minutos para serem propagadas. Esse tempo é adicional ao tempo necessário para alterações no IAM .
Autenticação automática versus manual do banco de dados IAM
O Cloud SQL para PostgreSQL tem duas opções para autenticação de banco de dados IAM: automática e manual.
Autenticação automática de banco de dados IAM
A autenticação automática do banco de dados IAM permite que você transfira a solicitação e o gerenciamento de tokens de acesso para um conector intermediário do Cloud SQL , como o Cloud SQL Auth Proxy ou um dos Conectores de Linguagem do Cloud SQL. Com a autenticação automática do banco de dados IAM, os usuários precisam informar apenas o nome de usuário do banco de dados 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 IAM requer o uso de um conector Cloud SQL e é compatível com o Cloud SQL Auth Proxy , o conector Go , o conector Java e o conector 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 utiliza tokens de acesso OAuth 2.0, que têm vida útil curta e são válidos por apenas uma hora. Os conectores do Cloud SQL podem solicitar e atualizar esses tokens, garantindo que processos ou aplicativos de longa duração que dependem de pool 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 obter mais informações, consulte Efetuar login com autenticação automática do banco de dados IAM .
Autenticação manual do banco de dados IAM
A autenticação manual do banco de dados do IAM exige que o principal do IAM passe explicitamente o token de acesso para o atributo de senha na solicitação de conexão do cliente. Os principais devem primeiro efetuar login em Google Cloud e solicitar explicitamente o token de acesso do IAM.
Usando a CLI gcloud , você pode solicitar explicitamente um token OAuth 2.0 com o escopo da API Admin do Cloud SQL, usado para efetuar login no banco de dados. Ao efetuar login como usuário do banco de dados com autenticação de banco de dados do IAM, você usa seu endereço de e-mail como nome de usuário e o token de acesso como senha. Você pode usar esse método com uma conexão direta ao banco de dados ou com um conector do Cloud SQL.
O login com autenticação de banco de dados IAM só pode ser realizado por meio de uma conexão SSL.
Para obter mais informações, consulte Efetuar login com autenticação manual do banco de dados IAM .
Acesso sensível ao contexto e autenticação de banco de dados IAM
Se você estiver usando acesso sensível ao contexto na sua configuração do IAM, não poderá usar um conector do Cloud SQL, como o Cloud SQL Auth Proxy ou um dos Conectores de Linguagem do Cloud SQL, com autenticação de banco de dados do IAM. Tentativas de login manual ou automático com autenticação do IAM falharão. Em vez disso, conecte-se diretamente à instância.
Administração de contas de usuário e serviço
Para conceder aos usuários e contas de serviço acesso aos bancos de dados em uma instância usando a autenticação de banco de dados do IAM, você precisa adicioná-los à instância ou adicioná-los a um grupo que tenha acesso a ela. Para obter mais informações, consulte Adicionar uma conta de usuário ou serviço que use o IAM .
Se você usar o Google Cloud Para adicionar usuários ou contas de serviço no console, o Cloud SQL solicita que você adicione a função "Usuário do Cloud SQL" ao usuário. Essa função é necessária para que os usuários efetuem login na instância.
Se você adicionar usuários usandogcloud
ou a API, precisará conceder privilégios de login manualmente. Use o comando GRANT do PostgreSQL para conceder privilégios de banco de dados .Configuração de instância para autenticação de banco de dados IAM do Cloud SQL
Você pode habilitar a autenticação do banco de dados do IAM em uma instância usando o sinalizador cloudsql.iam_authentication
. Após habilitar esse sinalizador, a instância habilitará logins de contas configuradas para autenticação do banco de dados do IAM.
Este sinalizador é necessário para autenticação de grupo IAM e autenticação de banco de dados IAM.
Definir o sinalizador não impede que usuários existentes, não pertencentes ao IAM, usem seus nomes de usuário e senhas para efetuar login. No entanto, se você desabilitar esse sinalizador na instância, qualquer usuário adicionado anteriormente usando a autenticação do banco de dados do IAM perderá o acesso à instância. Para obter mais informações, consulte Configurando instâncias para autenticação do banco de dados do IAM .
Autenticação de banco de dados IAM do Cloud SQL para diferentes cenários de instância
Ler réplicas | A autenticação do banco de dados do IAM não é habilitada automaticamente em uma réplica de leitura, mesmo quando habilitada na instância primária. Após criar uma réplica de leitura, você precisa adicionar a autenticação do banco de dados do IAM. Para obter 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 previamente submetida a backup e posteriormente restaurada para a mesma instância ou para uma instância diferente no mesmo projeto, as autorizações de login do usuário atuais serão aplicadas. Se você restaurar um backup para uma nova instância em outro projeto, precisará configurar as autorizações de usuário para a nova instância. Para obter mais informações, consulte Adicionar uma conta de usuário ou serviço que use a autenticação de banco de dados do IAM . |
Sobre as condições do IAM
As Condições do IAM permitem que você conceda funções com base em diversos atributos. Por exemplo, você pode permitir acesso apenas em determinadas datas e horários ou conceder acesso apenas a recursos do Cloud SQL com determinados nomes.
Para obter mais informações sobre as Condições do IAM, consulte a página Visão Geral das Condições do IAM . Você também pode aprender mais sobre o Uso das Condições do IAM com o Cloud SQL, incluindo exemplos.
Trabalhar com logs de auditoria na nuvem
Para manter registros de acesso a dados, incluindo logins, você pode usar logs de auditoria. Os Logs de Auditoria do Cloud estão desativados por padrão. Você precisa ativar os logs de auditoria de Acesso a Dados para rastrear logins. O uso de logs de auditoria para essa finalidade incorre em custos de registro de dados. Para obter mais informações, consulte Logs de Auditoria , Configurando logs de auditoria de Acesso a Dados e Preços para registro de dados .
Restrições
- O login para uma conta de usuário de autenticação de banco de dados do IAM deve ser todo em letras minúsculas. Por exemplo,
[email protected]
.[email protected]
não é permitido. - Por motivos de segurança, logins usando autenticação de banco de dados IAM estão disponíveis apenas em conexões SSL. Conexões não criptografadas serão rejeitadas.
- Há uma cota de login por minuto para cada instância, que inclui logins bem-sucedidos e malsucedidos. Quando a cota é excedida, os logins ficam temporariamente indisponíveis. Recomendamos que você evite logins frequentes e restrinja os logins usando redes autorizadas . A cota para autorização de logins é de 12.000 por minuto, por instância.
O que vem a seguir
- Aprenda a configurar instâncias para autenticação de banco de dados do IAM .
- Saiba como adicionar uma conta de usuário ou serviço que usa autenticação de banco de dados do IAM ao seu banco de dados .
- Saiba como fazer login em um banco de dados Cloud SQL com autenticação de banco de dados IAM .
- Aprenda como visualizar informações de login em logs de auditoria .