Gerenciar a autenticação do IAM

Para autenticar usuários e grupos de banco de dados com credenciais do Google Cloud em vez de senhas de banco de dados, ative e configure a autenticação do Identity and Access Management (IAM) na instância do AlloyDB para PostgreSQL.

A autenticação do IAM complementa a autenticação do banco de dados por meio de usuários padrão do PostgreSQL, que são compatíveis com todos os clusters do AlloyDB.

É possível autenticar usando contas ou grupos individuais:

  • Contas individuais: adicione cada usuário ou conta de serviço do IAM ao cluster. É possível usar papéis de usuário do IAM ou do PostgreSQL para autenticar com esse cluster.
  • Grupos: você adiciona um grupo do IAM ao cluster. Todos os membros (usuários e contas de serviço) desse grupo herdam as permissões para autenticação. Isso permite gerenciar o acesso gerenciando a associação ao grupo sem adicionar cada membro ao cluster individualmente.

A autenticação do IAM fica desativada por padrão nas instâncias do AlloyDB.

Para usar a autenticação do IAM, siga estas etapas gerais:

  1. Ative a autenticação individual ou de grupo do IAM na instância.
  2. Conceda os papéis necessários à conta ou ao grupo.
  3. Adicione a conta ou o grupo ao cluster.
  4. Conceda privilégios de banco de dados à conta ou ao grupo.

Ativar e desativar a autenticação do IAM

Para ativar a autenticação do IAM em uma instância, defina as flags do banco de dados.

Para desativar a autenticação do IAM, defina as flags como off.

Para mais informações sobre como definir flags, consulte Configurar flags de banco de dados de uma instância.

Conceder acesso a uma conta individual

Para ativar o acesso do IAM a um novo usuário do banco de dados, siga estas etapas:

  1. Atualize as configurações do IAM do projeto para conceder acesso ao banco de dados do AlloyDB ao usuário ou à conta de serviço do IAM apropriado.

  2. Crie um novo usuário de banco de dados no cluster, definindo o nome de usuário como o endereço de e-mail do usuário ou da conta de serviço do IAM.

Para conceder a uma conta do IAM acesso a outros clusters no projeto, repita a última etapa.

Atualizar uma conta do IAM com o papel apropriado

É possível conceder aos usuários ou às contas de serviço do IAM a capacidade de autenticar com instâncias do AlloyDB concedendo a eles os seguintes papéis do IAM:

  • Usuário do banco de dados do AlloyDB (roles/alloydb.databaseUser): permite que o usuário se conecte à instância do AlloyDB.

  • Consumidor do Service Usage (roles/serviceusage.serviceUsageConsumer): fornece ao usuário acesso a uma API que verifica permissões.

Para fazer isso, siga as instruções em Conceder acesso a outros usuários. Na etapa em que você seleciona um papel para conceder ao principal do IAM, escolha Usuário do banco de dados do AlloyDB (roles/alloydb.databaseUser).

Adicionar um usuário do IAM ou uma conta de serviço a um cluster

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster ao qual você quer adicionar um usuário.

  3. Clique em Usuários.

  4. Clique em Adicionar conta de usuário.

  5. Selecione Cloud IAM.

  6. No campo Principal, insira o principal do IAM.

    Para uma conta de usuário do IAM, forneça o endereço de e-mail completo da conta de usuário. Por exemplo, dana@example.com

    Para uma conta de serviço do IAM, forneça o endereço da conta de serviço sem o sufixo .gserviceaccount.com. Por exemplo, para especificar a conta de serviço my-service@my-project.iam.gserviceaccount.com, use o valor my-service@my-project.iam.

  7. Para atribuir papéis diferentes do alloydbsuperuser padrão ao usuário, siga estas etapas:

    1. Insira o nome do papel em Papéis.
    2. Para adicionar o papel, pressione Enter ou Tab.
    3. Selecione x para qualquer função que você queira remover do usuário.

      Para mais informações sobre os papéis predefinidos do PostgreSQL, consulte Papéis predefinidos.

  8. Clique em Adicionar.

gcloud

Para criar um usuário de banco de dados do PostgreSQL com base em um usuário ou uma conta de serviço do IAM, use o comando gcloud alloydb users create.

gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED \
--db-roles=alloydbiamuser

Substitua:

  • USERNAME: o identificador do usuário do IAM que você quer adicionar como um novo usuário do banco de dados.

    Para uma conta de usuário do IAM, forneça o endereço de e-mail completo da conta de usuário. Por exemplo, dana@example.com

    Para uma conta de serviço do IAM, forneça o endereço da conta de serviço sem o sufixo .gserviceaccount.com. Por exemplo, para especificar a conta de serviço my-service@my-project.iam.gserviceaccount.com, use o valor my-service@my-project.iam.

  • CLUSTER: o ID do cluster em que a conta de usuário do banco de dados será criada.

  • REGION: o ID da região em que o cluster está localizado, por exemplo, us-central1.

Conceder as permissões de banco de dados apropriadas aos usuários do IAM

Quando você adiciona um usuário do IAM a um cluster do AlloyDB, ele não tem privilégios em nenhum banco de dados por padrão, exceto para os objetos de banco de dados que o PUBLIC pode acessar.

Se os usuários precisarem de mais acesso, conceda mais privilégios usando a instrução GRANT do PostgreSQL:

GRANT SELECT ON TABLE_NAME TO "USERNAME";

Substitua:

  • USERNAME: o endereço de e-mail do usuário. É preciso incluir aspas duplas ao redor do endereço.

  • TABLE_NAME: o nome da tabela a que você quer conceder acesso ao usuário.

Remover um usuário ou uma conta de serviço do IAM de um cluster

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster de que você quer remover o usuário.

  3. Clique em Usuários.

  4. Na linha que representa o usuário que você quer remover, clique em Abrir ações para este usuário.

  5. Selecione Remover.

  6. Na caixa de diálogo Remover conta de usuário?, clique em Remover.

gcloud

Use o comando gcloud alloydb users delete.

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION

Substitua:

  • USERNAME: o identificador do usuário do IAM que você quer remover do cluster.

    Para uma conta de usuário do IAM, forneça o endereço de e-mail completo da conta de usuário. Por exemplo, dana@example.com

    Para uma conta de serviço do IAM, forneça o endereço da conta de serviço sem o sufixo .gserviceaccount.com. Por exemplo, para especificar a conta de serviço my-service@my-project.iam.gserviceaccount.com, use o valor my-service@my-project.iam.

  • CLUSTER: o ID do cluster do qual o usuário será removido.

  • REGION: o ID da região em que o cluster está localizado. Por exemplo, us-central1.

Conceder acesso a um grupo do IAM

Para usar a autenticação de grupo (pré-lançamento), adicione um grupo do IAM ao cluster do AlloyDB.

Adicionar um grupo do IAM a um cluster

  1. Atribua os papéis roles/alloydb.databaseUser e roles/serviceusage.serviceUsageConsumer à conta do grupo. Para mais informações, consulte Atualizar uma conta do IAM com o papel apropriado.

    Um cluster pode ter no máximo 200 grupos do IAM. Os grupos inativos contam para esse limite.

    Os nomes de grupos do IAM podem ter apenas 63 caracteres.

    Se você tiver um grupo do IAM com um nome que exceda o limite de comprimento, poderá aninhá-lo em um grupo pai com um nome válido. É preciso adicionar o grupo pai ao cluster antes de usar o grupo aninhado.

  2. Para criar um usuário de banco de dados para o grupo, use o comando gcloud alloydb users create com a flag --type=IAM_GROUP.

    gcloud alloydb users create GROUP_EMAIL \
    --cluster=CLUSTER \
    --region=REGION \
    --type=IAM_GROUP

    Substitua:

    • GROUP_EMAIL: o endereço de e-mail completo do grupo do IAM, por exemplo, my-group@example.com.

    • CLUSTER: o ID do cluster ao qual esse grupo será adicionado.

    • REGION: o ID da região em que o cluster reside, por exemplo, us-central1.

Adicionar membros de um grupo automaticamente

Quando você adiciona um grupo do IAM a um cluster, todos os membros (usuários e contas de serviço) desse grupo herdam as permissões de autenticação. Não é necessário adicionar os membros individualmente. Depois que um membro faz login pela primeira vez, o AlloyDB cria uma conta para ele automaticamente.

Conceder privilégios de banco de dados a um grupo do IAM

Você concede privilégios de banco de dados a grupos, em vez de usuários individuais.

Execute a instrução GRANT na linha de comando psql:

GRANT SELECT ON TABLE_NAME TO "GROUP_NAME";

Substitua:

  • GROUP_NAME: o endereço de e-mail do grupo. É preciso usar aspas porque a string contém caracteres especiais.

  • TABLE_NAME: o nome da tabela.

Excluir um grupo do IAM de um cluster

Para excluir um grupo do IAM de um cluster do AlloyDB, revogue as permissões do grupo no console do Google Cloud e exclua o usuário do grupo correspondente do cluster do AlloyDB.

  1. Revogar permissões do IAM:

    1. No console do Google Cloud , acesse a página IAM.

      Acessar IAM

    2. Encontre o grupo do IAM de que você quer remover o acesso.

    3. Remova o papel roles/alloydb.databaseUser e todos os outros papéis relacionados ao AlloyDB que concedem acesso ao cluster. Essa ação impede que os membros do grupo se autentiquem.

  2. Exclua o usuário do grupo do cluster do AlloyDB:

    Use a Google Cloud CLI para excluir o usuário que representa o grupo do IAM do cluster do AlloyDB. O nome de usuário normalmente é o endereço de e-mail do grupo do IAM.

    gcloud alloydb users delete GROUP_EMAIL_ADDRESS \
    --cluster=CLUSTER_ID \
    --region=REGION_ID

    Substitua:

    • GROUP_EMAIL_ADDRESS: o endereço de e-mail completo do grupo do IAM, por exemplo, my-group@example.com.

    • CLUSTER_ID: o ID do cluster do AlloyDB.

    • REGION_ID: a região em que o cluster do AlloyDB está localizado. Por exemplo, us-central1.

  3. Opcional: exclua o grupo do Cloud Identity:

    Você precisa ter os privilégios de administrador adequados (como administrador de grupos) na sua conta do Cloud Identity para excluir grupos. Normalmente, os proprietários de grupos só podem excluir os grupos que criaram.

    As alterações nas permissões do IAM e nas associações a grupos podem levar tempo para serem propagadas, possivelmente 15 minutos ou mais.

    1. Consiga os privilégios de administrador adequados, como administrador de grupos, na sua conta do Cloud Identity. Os proprietários só podem excluir os grupos que criaram. Para mais informações, consulte Funções de administrador predefinidas.

    2. Execute o seguinte comando da CLI gcloud do Cloud Identity:

      gcloud identity groups delete GROUP_EMAIL_ADDRESS
    3. Ao revogar o papel de usuário do banco de dados do AlloyDB (roles/alloydb.databaseUser) para um grupo do IAM no Cloud Identity, você também precisa excluir o grupo do cluster do AlloyDB para que o acesso seja completamente removido.

Migrar usuários atuais para a autenticação de grupo do IAM

Os usuários individuais do IAM não usam a autenticação de grupo. Para migrar, siga estas etapas:

  1. Adicione os usuários a um grupo do IAM.

  2. Atribua os papéis do IAM necessários (roles/alloydb.databaseUser e roles/serviceusage.serviceUsageConsumer) ao grupo.

  3. Adicione o grupo ao cluster.

  4. Atribua privilégios de banco de dados ao grupo.

  5. Exclua o usuário individual do cluster. Transfira a propriedade do objeto antes de excluir o usuário, se necessário.

Quando o usuário fizer login novamente, o AlloyDB vai recriar a conta como um usuário de grupo.

Resolver problemas de autenticação de grupo

Use as informações a seguir para resolver problemas de autenticação de grupo.

Uma conta atual não está herdando privilégios

Se uma conta não estiver herdando privilégios de um grupo, siga estas etapas:

  1. Liste os usuários:

    gcloud alloydb users list --cluster=CLUSTER --region=REGION

    Substitua:

    • CLUSTER: o ID do cluster.

    • REGION: a região em que o cluster está localizado, por exemplo, us-central1.

  2. Se o tipo for ALLOYDB_IAM_USER ou ALLOYDB_IAM_SERVICE_ACCOUNT, remova a conta. Ele não herda privilégios de grupo.

  3. Para recriar a conta com o tipo de grupo correto, faça login novamente na instância com o usuário ou a conta de serviço. Fazer login novamente na instância recria a conta com o tipo de conta correto de ALLOYDB_IAM_GROUP_USER ou ALLOYDB_IAM_GROUP_SERVICE_ACCOUNT.

A seguir