Nesta página, descrevemos como usuários e contas de serviço podem fazer login nos bancos de dados do Cloud SQL usando a autenticação de banco de dados do Cloud SQL IAM. Para mais informações, consulte Autenticação do IAM.
Antes de começar
- Configure a instância para usar a autenticação do banco de dados do IAM. Para mais informações, consulte Configurar novas instâncias para a autenticação do banco de dados do IAM.
- Adicione um usuário, uma conta de serviço ou um grupo do IAM ao banco de dados. Para mais informações, consulte Adicionar um usuário do IAM ou uma conta de serviço ao banco de dados e Adicionar um grupo ao banco de dados.
- Adicione o papel
roles/cloudsql.instanceUser
do IAM ao usuário, à conta de serviço ou ao grupo do IAM. É um papel predefinido que contém a permissão IAMcloudsql.instances.login
do Cloud SQL necessária. Você precisa dessa permissão para fazer login em uma instância de banco de dados com a autenticação de banco de dados do IAM. Para mais informações, consulte Papéis e permissões. Por padrão, quando um usuário do IAM é adicionado a um banco de dados, o novo usuário não tem privilégios para nenhum banco de dados. Use o comando
GRANT
para dar ao usuário do banco de dados do IAM as permissões necessárias. Para mais informações, consulte Conceder privilégios de banco de dados ao usuário do IAM e Conceder privilégios de banco de dados a um grupo.Se você estiver usando a autenticação de grupo do IAM, o usuário ou a conta de serviço do IAM precisará ser membro de um grupo que recebeu permissões ou um papel do IAM para fazer login na instância do Cloud SQL. O Cloud SQL cria uma conta depois que o usuário ou a conta de serviço faz login na instância pela primeira vez.
Fazer login com autenticação automática do banco de dados do IAM
É possível configurar um conector do Cloud SQL para processar automaticamente a autenticação na instância do Cloud SQL em nome de um usuário ou um aplicativo. Os conectores incluem o proxy do Cloud SQL Auth, o conector Go, o conector Java e o conector Python, todos compatíveis com a autenticação automática de banco de dados do IAM. Ao usar um conector do Cloud SQL com autenticação automática do banco de dados do IAM, a conta do IAM usada para iniciar o conector precisa ser a mesma autenticada no banco de dados.
Para fazer login com a autenticação automática de banco de dados do IAM, faça o seguinte:
Proxy de autenticação do Cloud SQL
Faça a autenticação no Google Cloud.
Usuário
Faça a autenticação no Google Cloud usando o Application Default Credentials (ADC).
Use o comando
gcloud auth application-default login
. Para mais informações, consulte Configurar o Application Default Credentials.Conta de serviço
Para autenticar no Google Cloud usando o ADC com uma conta de serviço, use a identidade temporária de conta de serviço ou use uma chave de conta de serviço. Para usar a identidade temporária de conta de serviço, substitua SERVICE_ACCOUNT_EMAIL_ADDRESS e execute o seguinte comando:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS
Para mais informações, consulte Configurar o Application Default Credentials.
Inicie o proxy do Cloud SQL Auth com a sinalização
--auto-iam-authn
.Substitua:
- INSTANCE_CONNECTION_NAME: a string de conexão para identificar uma instância do Cloud SQL. Se você usar uma porta diferente da padrão do PostgreSQL, especifique o número dela. Para mais informações sobre como encontrar e construir essa string, consulte Opções para autenticar o proxy do Cloud SQL Auth.
./cloud-sql-proxy --auto-iam-authn INSTANCE_CONNECTION_NAME
Para mais informações sobre como iniciar o proxy, consulte Iniciar o proxy de autenticação do Cloud SQL.
Quando você estiver pronto para se conectar à instância usando o proxy do Cloud SQL Auth, faça login com o cliente
psql
.Substitua:
- HOSTNAME: endereço IP usado pelo proxy do Cloud SQL Auth. Por padrão,
o proxy do Cloud SQL Auth usa o endereço localhost de
127.0.0.1
, mas é possível atribuir um endereço IP diferente ao iniciar o proxy do Cloud SQL Auth. - USERNAME: para um IAM, o nome de usuário é o
endereço de e-mail completo do usuário. Para uma conta de serviço, esse é o
e-mail da conta de serviço sem o
sufixo de domínio
.gserviceaccount.com
. - PORT_NUMBER: opcional. Se você especificou uma porta diferente na string de conexão da instância, especifique o número da porta.
- DATABASE_NAME: o nome do banco de dados a ser conectado.
Execute este comando:
psql -h HOSTNAME \ -U USERNAME \ --port PORT_NUMBER \ --dbname=DATABASE_NAME
Para mais informações sobre como se conectar ao proxy do Cloud SQL Auth, consulte Conectar-se com o cliente psql.
- HOSTNAME: endereço IP usado pelo proxy do Cloud SQL Auth. Por padrão,
o proxy do Cloud SQL Auth usa o endereço localhost de
Go
JDBC do Java
Java R2DBC
Python
Fazer login com autenticação do banco de dados do IAM
Um usuário ou aplicativo pode se autenticar no banco de dados usando o IAM solicitando manualmente um token de acesso do Google Cloud e apresentando-o ao banco de dados. Com a gcloud CLI, é possível solicitar explicitamente um token OAuth 2.0 com o escopo da API Cloud SQL Admin usado para fazer login no banco de dados. Ao fazer login como usuário do banco de dados com a autenticação do banco de dados do IAM, use o endereço de e-mail como nome de usuário e o token de acesso como senha. Use esse método com uma conexão direta com o banco de dados ou com um conector do Cloud SQL.
Nessas etapas, você faz a autenticação no Google Cloud, solicita um token de acesso e se conecta ao banco de dados passando o token como a senha do usuário do banco de dados do IAM. Use estas etapas para se conectar sem o proxy Auth do Cloud SQL.
Para essas etapas, você precisa:
gcloud sql generate-login-token
para gerar seu token de autenticação.Para fazer login com a autenticação automática de banco de dados do IAM, faça o seguinte:
gcloud
Faça a autenticação no Google Cloud.
Usuário
Autentique-se no IAM usando
gcloud auth login
. Para mais informações, consulte Autorizar com uma conta de usuário.Conta de serviço
Autentique-se no IAM usando
gcloud auth activate-service-account
. Para mais informações, consulte Autorizar com uma conta de serviço.Solicite o token de acesso e faça login com um cliente.
Substitua:
- HOSTNAME: o endereço IP da instância, o endereço IP público ou particular.
- USERNAME: para um IAM, o nome de usuário é o
endereço de e-mail completo do usuário. Para uma conta de serviço, esse é o
e-mail da conta de serviço sem o
sufixo de domínio
.gserviceaccount.com
. - DATABASE_NAME: o nome do banco de dados a ser conectado.
PGPASSWORD=`gcloud sql generate-login-token` \ psql "sslmode=require \ hostaddr=HOSTNAME \ user=USERNAME \ dbname=DATABASE_NAME" \ --no-password
Se o
ssl_mode
na instância do Cloud SQL estiver configurado paraTRUSTED_CLIENT_CERTIFICATE_REQUIRED
, recomendamos que você faça login com o IAM automático do banco de dados para aplicar a validação de identidade do cliente.
A seguir
- Saiba mais sobre a autenticação do banco de dados do IAM.
- Saiba como ativar e visualizar informações de login em registros de auditoria.
- Veja como criar usuários e contas de serviço que usam a autenticação de banco de dados do IAM do Cloud SQL.
- Saiba como gerenciar usuários e contas de serviço para autenticação do banco de dados do IAM.