Papéis e permissões

Nesta página, você encontra informações sobre os papéis e as permissões do Identity and Access Management (IAM) e como são usados com instâncias do Cloud SQL.

Introdução

Nesta página, falaremos sobre os aspectos do IAM que são relevantes para o Cloud SQL. Para ver informações detalhadas sobre o IAM e seus recursos gerais, consulte Gerenciamento de identidade e acesso. Consulte especificamente a seção Como gerenciar políticas do IAM. Com o IAM, é possível controlar quem tem acesso aos recursos do projeto do Google Cloud. O conjunto de regras de acesso aplicado a um recurso é chamado de política de IAM. Uma política do IAM aplicada ao projeto define as ações que os usuários podem executar em todos os recursos do projeto.

Os membros são o "quem" do IAM. Podem ser usuários individuais, grupos, domínios ou até mesmo o público em geral. A eles são atribuídos papéis que permitem a execução de ações no Cloud SQL e no Google Cloud de modo geral. Cada papel se baseia em um conjunto de uma ou mais permissões. As permissões são as unidades básicas do IAM: cada uma possibilita executar determinada ação. Consulte Papéis do IAM no Cloud SQL e Permissões do IAM no Cloud SQL para ver listas completas de todos os papéis e permissões disponíveis no Cloud SQL.

Quando você usa uma conta para se conectar a uma instância do Cloud SQL, essa conta precisa ter o papel Cloud SQL > Cliente (roles/cloudsql.client), que inclui as permissões obrigatórias para a conexão.

Adicione papéis a uma conta na página IAM e administrador > IAM do Console e veja quais permissões pertencem a quais papéis na página IAM e administrador > Papéis.

O Cloud SQL usa contas de serviço para autenticação entre o Cloud SQL e outros produtos do Google Cloud. As contas de serviço fornecem credentials no formato JSON. Faça o download desse arquivo pelo Console e use-o para autenticação em vários cenários.

Por exemplo: conexão a partir de um aplicativo em execução em um contêiner do Docker.

Papéis e permissões do Cloud SQL com o proxy do Cloud SQL Auth

Se estiver se conectando a uma instância do Cloud SQL a partir de uma instância do Compute Engine usando o proxy do Cloud SQL Auth, será possível utilizar a conta de serviço padrão associada à instância do Compute Engine.

Assim como todas as contas conectadas a uma instância do Cloud SQL, a conta de serviço precisa ter o papel Cloud SQL > Cliente.

Papéis e permissões do Cloud SQL com opções sem servidor

As opções sem servidor do Google Cloud incluem o App Engine, o Cloud Functions e o Cloud Run.

Use uma conta de serviço para autorizar o acesso a essas opções. A conta de serviço autoriza o acesso a todo o Cloud SQL em um projeto específico. Ao criar um aplicativo ou uma função do Cloud, esse serviço cria a conta para você. É possível encontrar a conta na página IAM e administrador > IAM , com o sufixo apropriado:

Opção sem servidor Sufixo da conta de serviço
App Engine @gae-api-prod.google.com.iam.gserviceaccount.com
Cloud Functions @appspot.gserviceaccount.com
Cloud Run compute@developer.gserviceaccount.com
Assim como todas as contas conectadas a uma instância do Cloud SQL, a conta de serviço precisa ter o papel Cloud SQL > Cliente.

Papéis e permissões do Cloud SQL com o Cloud Storage

Os atributos de importação e exportação no Cloud SQL funcionam juntos. As exportações realizam gravações no Cloud Storage, enquanto as importações fazem leituras. Por esse motivo, a conta de serviço usada para essas operações precisa de permissões de leitura e gravação no Cloud Storage:

  • Para importar e exportar dados do Cloud Storage, a conta de serviço da instância do Cloud SQL precisa ter o papel storage.objectAdmin do IAM definido no projeto. É possível encontrar o nome da conta de serviço da instância na página Visão geral da instância no Console do Google Cloud.
  • Use o comando gsutil iam para conceder esse papel do IAM à conta de serviço do bucket.
  • Para receber ajuda com a configuração de papéis e permissões do IAM, consulte Como usar permissões do IAM.
  • Para mais informações, consulte a página sobre IAM para o Cloud Storage.

Papéis e permissões do Cloud SQL com a autenticação de grupo do IAM

Ao usar a autenticação de grupo do IAM, você cria grupos. Em seguida, use os grupos para gerenciar o acesso e os privilégios do banco de dados para suas instâncias do Cloud SQL.

A tabela a seguir lista os papéis necessários para gerenciar a autenticação de grupo do IAM.

Ação Papéis
Crie, visualize e gerencie grupos.

roles/resourcemanager.organizationViewer

Ver o registro de alterações de associação ao grupo do IAM.

roles/logging.viewer

Conceda, visualize e defina permissões do IAM no nível do projeto.

roles/resourcemanager.projectIamAdmin

Conceda, visualize e defina permissões do IAM no nível da pasta.

roles/resourcemanager.folderIamAdmin

O administrador pode conceder papéis do Cloud SQL ou conceder permissões individuais do Cloud SQL a cada grupo. Os membros de cada grupo herdam papéis e permissões.

Permissão para acessar instâncias privadas do Cloud SQL

Quando outro serviço do Google Cloud, como o BigQuery, precisa se comunicar com sua instância do Cloud SQL para acessar dados e fazer consultas nesses dados por uma conexão particular, o serviço usa um caminho interno em vez dos endereços IP privados dentro da nuvem privada virtual (VPC). O tráfego não pode ser controlado ou restrito com configurações, regras de firewall, políticas de rota ou cortes do peering no nível da VPC.

Em vez disso, o Cloud SQL oferece uma sinalização de configuração na instância para controlar a ativação ou desativação desse caminho interno para outros serviços do Google Cloud que acessam seu banco de dados.

Controlar e revogar a permissão

Quando outro serviço do Google Cloud, como o BigQuery, tenta acessar sua instância particular do Cloud SQL, ele precisa fornecer uma identidade legítima com a permissão do IAM cloudsql.instances.connect.

Normalmente, um serviço pode fazer isso de duas maneiras:

  1. Encaminhando as credenciais do usuário. Um serviço pode encaminhar a identidade do IAM do usuário para o Cloud SQL para avaliar a permissão para acessar uma instância. Nesse cenário, o usuário precisa ter permissões de IAM suficientes para que o Cloud SQL possa fazer uma conexão bem-sucedida.
  2. Usando uma conta de serviço. Um serviço, como o BigQuery, pode usar uma conta de serviço pré-configurada para se conectar a uma instância do Cloud SQL. Nesse caso, a conta de serviço precisa ter permissões de IAM suficientes.

    Por exemplo, para a conexão federada entre o BigQuery e o Cloud SQL, uma conta de serviço chamada service-{PROJECT_NUMBER}@gcp-sa-bigqueryconnection.iam.gserviceaccount.com é criada quando a API de conexão do BigQuery é ativada. Esta conta de serviço tem duas permissões do Cloud SQL: cloudsql.instances.connect e cloudsql.instances.get. O BigQuery usa essas permissões para acessar uma instância particular do Cloud SQL por meio de um caminho interno.

Para controlar a permissão de quem pode usar esse caminho interno, é possível conceder e revogar as permissões do IAM de e para a identidade do IAM do usuário que o serviço do Google Cloud, como o BigQuery, usa para se conectar à sua Instância do Cloud SQL. Para mais informações sobre como conceder e revogar permissões no BigQuery, consulte Como configurar o acesso ao Cloud SQL.

Papéis e permissões do Cloud SQL com outros cenários

O Cloud SQL interage com outros produtos e ferramentas do Google Cloud. Essas interações também exigem papéis e permissões específicos que podem variar conforme o cenário. A documentação do Cloud SQL fornece informações detalhadas sobre esses requisitos para cada caso abaixo:

Usar o IAM com projetos

As seções a seguir mostram como concluir tarefas básicas de IAM em projetos.

Para concluir as tarefas a seguir, você precisa ter as permissões de IAM resourcemanager.projects.getIamPolicy e resourcemanager.projects.setIamPolicy.

Adicionar um membro a uma política no nível do projeto

Para ver a lista de papéis associados ao Cloud SQL, consulte Papéis do IAM.

Console

  1. Acesse a página IAM e administrador no Console do Google Cloud.
  2. No menu suspenso do projeto, na barra superior, selecione o projeto ao qual você quer adicionar um membro.
  3. Clique em Adicionar. A caixa de diálogo Adicionar membros, papéis ao projeto é exibida.
  4. No campo Novos membros, especifique o nome da entidade à qual você está concedendo acesso.
  5. Na lista suspensa Selecionar papel, escolha o papel que você quer conceder a esses membros. Os papéis que afetam os recursos do Cloud SQL estão nos submenus Projeto e Cloud SQL.
  6. Clique em Salvar.

gsutil

As políticas de IAM para envolvidos no projeto são gerenciadas por meio do comando gcloud, que faz parte do SDK do Google Cloud. Para adicionar uma política para envolvidos no projeto, use gcloud beta projects add-iam-policy-binding.

Ver a política de IAM de um projeto

Console

  1. Acesse a página IAM e administrador no Console do Google Cloud.
  2. No menu suspenso do projeto, na barra superior, selecione o projeto no qual está a política que você quer visualizar.
  3. Há duas maneiras de visualizar as permissões do projeto:
    • Visualizar por membros: visualize a coluna Papel associada a membros individuais para ver quais papéis cada membro tem.
    • Visualizar por papéis: use a lista suspensa associada a papéis individuais para ver quais membros têm o papel.

gsutil

As políticas de IAM para envolvidos no projeto são gerenciadas por meio do comando gcloud, que faz parte do SDK do Google Cloud. Para visualizar a política de IAM de um projeto, use o comando gcloud beta projects get-iam-policy.

Remover um membro de uma política no nível do projeto

Console

  1. Acesse a página IAM e administrador no Console do Google Cloud.
  2. No menu suspenso do projeto, na barra superior, selecione o projeto do qual você quer remover um membro.
  3. Verifique se você está visualizando as permissões por Membros e selecione aqueles que quer remover.
  4. Clique em Remover.
  5. Na janela de sobreposição exibida, clique em Confirmar.

gsutil

As políticas de IAM para envolvidos no projeto são gerenciadas por meio do comando gcloud, que faz parte do SDK do Google Cloud. Para remover uma política para envolvidos no projeto, use gcloud beta projects remove-iam-policy-binding.

Práticas recomendadas

O IAM, como qualquer outra configuração administrativa, exige que o gerenciamento ativo seja eficaz. Antes de tornar um recurso acessível a outros usuários, saiba quais são os papéis que serão atribuídos a essas pessoas. As mudanças no gerenciamento de projetos, nos padrões de uso e na propriedade organizacional podem exigir que você modifique as configurações de IAM em buckets e projetos, especialmente se gerenciar o Cloud SQL em uma organização ou para um grande grupo de usuários. Ao avaliar e planejar as configurações de controle de acesso, lembre destas práticas recomendadas:

  • Use o princípio do menor privilégio ao conceder acesso. O princípio de privilégio mínimo é uma diretriz de segurança para conceder acesso a seus recursos. Ao conceder acesso com base no princípio do menor privilégio, você dá a um usuário apenas o acesso necessário para realizar a tarefa atribuída.

  • Evite conceder papéis com a permissão setIamPolicy a desconhecidos. Com a permissão setIamPolicy, o usuário consegue alterar permissões e assumir o controle dos dados. Por isso, use papéis com a permissão setIamPolicy somente quando quiser delegar o controle administrativo de objetos e buckets.

  • Delegue o controle administrativo de seus recursos. Verifique se os recursos ainda podem ser gerenciados por outros membros da equipe caso um indivíduo com acesso administrativo saia do grupo. Duas maneiras comuns para fazer isso são as seguintes:

    • Atribua o papel Administrador do Cloud SQL do projeto a um grupo em vez de um indivíduo.
    • Atribua o papel Administrador do Cloud SQL do projeto a pelo menos dois indivíduos.

A seguir