Introdução às chaves de API
Há dois tipos de chaves de API: padrão e de autorização. As duas chaves permitem associar uma solicitação a um projeto para fins de faturamento e cota. No entanto, eles diferem da seguinte maneira:
Uma chave de API padrão não autentica um principal.
Uma chave de autorização faz a autenticação como uma conta de serviço. Ele opera de maneira semelhante a um token de acesso de longa duração.
A página Credenciais no consoleGoogle Cloud garante que o tipo correto de chave de API seja criado para uma API selecionada.
Chaves de API padrão
As chaves de API padrão oferecem uma maneira de associar uma solicitação a um projeto para fins de faturamento e cota. Quando você usa uma chave de API padrão (uma chave que não foi vinculada a uma conta de serviço) para acessar uma API, ela não identifica um principal. Sem um principal, a solicitação não pode usar o Identity and Access Management (IAM) para verificar se o autor da chamada está autorizado a realizar a operação solicitada.
As chaves de API padrão podem ser usadas com qualquer API que as aceite, a menos que restrições de API tenham sido adicionadas à chave. As chaves de API padrão não podem ser usadas com serviços que não as aceitam, incluindo no modo expresso.
Chaves de autorização
As chaves de autorização são chaves de API vinculadas a uma conta de serviço. Quando você usa uma chave de autorização para acessar uma API, sua solicitação é processada como se você tivesse usado a conta de serviço vinculada para fazer a solicitação.
As APIs que aceitam chaves de autorização incluem a
Vertex AI
(aiplatform.googleapis.com) e a
API Gemini
(generativelanguage.googleapis.com).
Ao usar chaves de autorização, lembre-se do seguinte:
As solicitações autenticadas por chaves de autorização não são registradas nas métricas de uso da conta de serviço.
A vinculação de chaves a uma conta de serviço é impedida por uma restrição padrão da política da organização. Para mudar isso, consulte Ativar chaves de autorização.
Componentes da chave de API
Uma chave de API tem os seguintes componentes, que permitem gerenciar e usar a chave:
- String
- A string da chave de API é uma string criptografada. Por exemplo,
AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe. Ao usar uma chave de API para acessar uma API, você sempre usa a string da chave. As chaves de API não têm um arquivo JSON associado. - ID
- O ID da chave de API é usado pelas ferramentas administrativas do Google Cloud para identificar a chave de forma exclusiva. O ID da chave não pode ser usado para acessar APIs. O ID da chave pode ser encontrado no URL da página de edição da chave no console do Google Cloud . Também é possível receber o ID da chave usando a Google Cloud CLI para listar as chaves no seu projeto.
- Nome de exibição
- O nome de exibição é um nome opcional e descritivo para a chave. É possível definir esse campo ao criar ou atualizar a chave.
- Conta de serviço vinculada
- As chaves de autorização incluem o endereço de e-mail da conta de serviço.
Antes de começar
Conclua as tarefas a seguir para usar as amostras nesta página.
Configurar a autenticação
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console Google Cloud para acessar serviços Google Cloud e APIs, não é necessário configurar a autenticação.
gcloud
No console do Google Cloud , ative o Cloud Shell.
Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
C++
Para usar os exemplos de C++ nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Java
Para usar os exemplos em Java desta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Python
Para usar os exemplos do Python nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para CLI gcloud.
Instale a CLI do Google Cloud.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .
Funções exigidas
Para receber as permissões necessárias para gerenciar chaves de API, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
- Administrador de chaves de API (
roles/serviceusage.apiKeysAdmin) -
Restrinja uma chave de API a APIs específicas usando o console Google Cloud :
Leitor do uso de serviços (
roles/serviceusage.serviceUsageViewer)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Ativar chaves de autorização
Antes de criar uma chave de autorização, faça uma das seguintes ações:
Atualize a restrição da política da organização
constraints/iam.managed.disableServiceAccountApiKeyCreationpara restringir os serviços em que os usuários podem criar chaves de autorização. Ao criar uma chave de autorização, os usuários precisam adicionar uma restrição de API que corresponda a um serviço permitido pela restrição.Desative a restrição de política da organização
constraints/iam.managed.disableServiceAccountApiKeyCreation.
Para mudar a política da organização, é necessário um recurso da organização. Não há suporte para projetos sem uma organização.
Para mudar a restrição de política, siga estas instruções.
Console
No console do Google Cloud , acesse a página Políticas da organização.
Mude para a organização, pasta ou projeto em que você quer alterar as políticas.
Na caixa Filtro, insira
Block servicee clique no nome da política Bloquear vinculações de chaves de API conta de serviço serviço.Clique em Gerenciar política.
Na seção Origem da política, selecione Substituir política principal.
Clique em Adicionar regra.
Para desativar a restrição, defina Aplicação como Desativada.
Para adicionar um serviço à lista de permissões, defina Aplicação como Ativada.
Clique em Editar.
Na seção Tipo de valor, selecione Definido pelo usuário.
Insira o serviço para o qual você quer permitir a criação de chaves de API.
Clique em Concluído.
Opcional: clique em Testar alterações para ter insights sobre como a política proposta pode causar violações ou interrupções de compliance.
Clique em Definir política.
gcloud
Para adicionar um serviço à lista de permissões, faça o seguinte:
Crie um arquivo chamado
spec.yamlcom o conteúdo a seguir:name: SCOPE/SCOPE_ID/policies/iam.managed.disableServiceAccountApiKeyCreation spec: rules: - enforce: true parameters: allowedServices: - SERVICE_NAMEForneça os valores a seguir:
SCOPE:organizations,foldersouprojects.SCOPE_ID: dependendo de SCOPE, o ID da organização, pasta ou projeto a que a política da organização se aplica.SERVICE_NAME: o nome do serviço que você quer permitir. Por exemplo,compute.googleapis.com.
Execute o comando
gclouda seguir para permitir a vinculação de chaves de API a contas de serviço para o serviço especificado:gcloud org-policies set-policy spec.yaml \ --update-mask spec
Para desativar a restrição, faça o seguinte:
Crie um arquivo chamado
spec.yamlcom o conteúdo a seguir:name: SCOPE/SCOPE_ID/policies/iam.managed.disableServiceAccountApiKeyCreation spec: rules: - enforce: falseExecute o seguinte comando
gcloudpara desativar a restrição:gcloud org-policies set-policy spec.yaml \ --update-mask spec
Criar uma chave de API
Para criar uma chave de API, use uma das seguintes opções:
Console
No console Google Cloud , acesse a página Credenciais:
Clique em Criar credenciais e selecione Chave de API no menu.
Adicione pelo menos uma restrição de chave de API. Para mais informações, consulte Aplicar restrições de chave de API.
Opcional: para vincular a chave de API a uma conta de serviço e criar uma chave de autorização, marque a caixa de seleção Autenticar chamadas de API por uma conta de serviço e clique em Selecionar uma conta de serviço para escolher a conta que você quer vincular à chave.
Para mais informações, consulte Chaves de autorização.
Clique em Criar. A caixa de diálogo Chave de API criada mostra a string da chave recém-criada.
gcloud
Use o
comando gcloud services api-keys create
para criar uma chave de API.
gcloud services api-keys create \
--display-name=DISPLAY_NAME \
--api-target=service=SERVICE_1 \
--api-target=service=SERVICE_2
Substitua os seguintes valores:
DISPLAY_NAME: um nome descritivo para a chave.SERVICE_1,SERVICE_2...: os nomes de serviço das APIs que poderão usar a chave para serem acessadas.Para encontrar o nome do serviço, pesquise a API no Painel de APIs. Os nomes de serviço são strings como
bigquery.googleapis.com.Para vincular a chave de API a uma conta de serviço e criar uma chave de autorização para serviços como a Vertex AI e a API Gemini, use
gcloud betacom a flag--service-account:gcloud beta services api-keys create \ --display-name=DISPLAY_NAME \ --api-target=service=SERVICE_1 \ --api-target=service=SERVICE_2 \ --service-account=SERVICE_ACCOUNT_EMAIL_ADDRESSPara mais informações, consulte Chaves de autorização.
C++
Para executar esta amostra, você precisa instalar a biblioteca de cliente de chaves de API.
Java
Para executar essa amostra, instale a
biblioteca de cliente google-cloud-apikeys.
Python
Para executar esta amostra, você precisa instalar a biblioteca de cliente de chaves de API.
REST
Use o
método keys.create
para criar uma chave de API. Essa solicitação retorna uma operação de longa duração.
Você precisa pesquisar a operação para receber as informações da nova chave.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"displayName" : "DISPLAY_NAME",
"restrictions" : {
"apiTargets": [
{
"service": "SERVICE_1"
},
{
"service" : "SERVICE_2"
},
]
}
}' \
"https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys"
Substitua os seguintes valores:
DISPLAY_NAME: um nome descritivo para a chave.PROJECT_ID: o ID ou nome do projeto Google Cloud .SERVICE_1,SERVICE_2...: os nomes de serviço das APIs que poderão usar a chave para serem acessadas.
Para encontrar o nome do serviço, pesquise a API no
Painel de APIs. Os nomes de serviço são strings
como bigquery.googleapis.com.
Opcional: para vincular a chave de API a uma conta de serviço e criar uma chave de autorização, use o seguinte comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"displayName" : "DISPLAY_NAME",
"restrictions" : {
"apiTargets": [
{
"service": "SERVICE_1"
},
{
"service" : "SERVICE_2"
},
]
},
"serviceAccountEmail" : "SERVICE_ACCOUNT_EMAIL_ADDRESS"
}' \
"https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys"
Para mais informações, consulte Chaves de autorização.
Para mais informações sobre como criar chaves de API usando a API REST, consulte Como criar uma chave de API, na documentação de API de chaves de API.
Aplicar restrições de chave API
As chaves de API sem restrições não são seguras. Para reduzir os riscos de segurança, é possível restringir as chaves de API das seguintes maneiras:
Restrições de API: limitam uma chave de API para que ela só possa ser usada com um conjunto específico de APIs. As chaves de API sem restrições podem ser usadas com todas as APIs que aceitam chaves geradas por Google Cloud.
Restrições de aplicativo: limite uma chave de API para que ela só possa ser usada por sites, endereços IP ou aplicativos específicos. As chaves de API sem restrições de aplicativo podem ser usadas de qualquer lugar.
Recomendamos definir restrições de API e de aplicativo.
No console do Google Cloud , adicione pelo menos uma restrição de API para criar uma chave de API. No entanto, quando você cria chaves de API usando a CLI gcloud ou a API REST, elas não têm restrições, a menos que você especifique uma restrição. Para isso, adicione o seguinte ao criar uma chave de API:
A CLI gcloud: a flag
--api-targete as restrições de API que você quer adicionar.REST: o objeto
restrictionspara o corpo da solicitação, contendo uma matrizapiTargetsque especifica as restrições que você quer adicionar.
Adicionar restrições à API
Essas restrições especificam quais APIs podem ser chamadas com a chave de API.
Para adicionar restrições de API, use uma das seguintes opções:
Console
No console Google Cloud , acesse a página Credenciais:
Clique no nome da chave de API que você quer restringir.
Na seção Restrições de API, clique em Restringir chave.
Selecione todas as APIs que usarão a chave de API para serem acessadas.
Clique em Salvar para salvar as mudanças e retornar à lista de chaves de API..
gcloud
Encontre o ID da chave que você quer restringir.
O ID não é igual ao nome de exibição ou à string de chave. Para conseguir o ID, use o comando
gcloud services api-keys listpara listar as chaves do projeto.Use o comando
gcloud services api-keys updatepara especificar em quais serviços uma chave de API pode ser usada para acesso.Substitua os seguintes valores:
KEY_ID: o ID da chave que você quer restringir.SERVICE_1,SERVICE_2...: os nomes de serviço das APIs que poderão usar a chave para serem acessadas.É necessário fornecer todos os nomes de serviço com o comando update; os nomes de serviço fornecidos substituem todos os serviços existentes na chave.
Para encontrar o nome do serviço, pesquise a API no Painel de APIs. Os nomes de serviço são strings como
bigquery.googleapis.com.gcloud services api-keys update KEY_ID \ --api-target=service=SERVICE_1 --api-target=service=SERVICE_2
Java
Para executar essa amostra, instale a
biblioteca de cliente google-cloud-apikeys.
Python
Para executar esta amostra, você precisa instalar a biblioteca de cliente de chaves de API.
REST
Encontre o ID da chave que você quer restringir.
O ID não é igual ao nome de exibição ou à string de chave. Você pode conseguir o ID usando o método keys.list. O ID é listado no campo
uidda resposta.Substitua
PROJECT_IDpelo Google Cloud ID ou nome do projeto.curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
Use o método keys.patch para especificar em quais serviços uma chave de API pode ser usada para acesso.
Essa solicitação retorna uma operação de longa duração. Você precisa pesquisar a operação para saber quando ela é concluída e conferir o status dela.
Substitua os seguintes valores:
SERVICE_1,SERVICE_2...: os nomes de serviço das APIs que poderão usar a chave para serem acessadas.É necessário fornecer a solicitação a todos os nomes de serviço; os nomes de serviço fornecidos substituem todos os serviços existentes na chave.
Para encontrar o nome do serviço, pesquise a API no Painel de APIs. Os nomes de serviço são strings como
bigquery.googleapis.com.PROJECT_ID: o ID ou nome do projeto do Google Cloud .KEY_ID: o ID da chave que você quer restringir.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "restrictions" : { "apiTargets": [ { "service": "SERVICE_1" }, { "service" : "SERVICE_2" }, ] } }' \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"
Para mais informações sobre como adicionar restrições de API a uma chave usando a API REST, consulte Como adicionar restrições de API, na documentação de API de chaves de API.
Adicionar restrições ao aplicativo
As restrições de aplicativo especificam quais sites, endereços IP ou apps podem usar uma chave de API.
Só é possível aplicar um tipo de restrição de aplicativo por vez. Escolha o tipo de restrição com base no tipo de aplicativo:
| Opção | Tipo de aplicativo | Observações |
|---|---|---|
| Websites | Aplicativos da Web | Especifica os sites que podem usar a chave. |
| Endereços IP | Aplicativos chamados por servidores específicos | Especifica os servidores ou cron jobs que podem usar a chave. Essa é a única restrição disponível para chaves de autorização. |
| Apps Android | Aplicativos Android | Especifica o app Android que pode usar a chave. |
| Apps iOS | Aplicativos iOS | Especifica os pacotes do iOS que podem usar a chave. |
Sites
Para controlar quais sites podem usar suas chaves de API, adicione um ou mais referenciadores HTTP como restrições de site. Por exemplo, adicionar https://example.com às restrições de site de uma chave de API significa que apenas chamadas de https://example.com podem usar essa chave.
Os referenciadores HTTP usados em restrições de sites têm suporte limitado para caracteres curinga.
É possível substituir um caractere curinga (*) por um subdomínio ou caminho, mas não é possível usar um caractere curinga no meio de um URL. Por exemplo,
*.example.com é válido e aceita todos os sites que terminam em .example.com.
No entanto, mysubdomain*.example.com não é uma restrição válida.
Os números de porta podem ser incluídos em restrições de sites. Se você incluir um número de porta, apenas as solicitações que usam essa porta serão correspondidas. Se você não especificar um número de porta, as solicitações de qualquer número de porta serão correspondidas.
A tabela a seguir mostra alguns exemplos de cenários e restrições do navegador:
| Cenário | Restrições |
|---|---|
| Permitir um URL específico | Adicione um URL com um caminho exato. Por exemplo:www.example.com/pathwww.example.com/path/pathAlguns navegadores implementam uma política de referenciador que envia somente o URL de origem para solicitações entre origens. Os usuários desses navegadores não podem usar chaves com restrições de URL específicas da página. |
| Permitir qualquer URL no site | É preciso definir dois URLs na lista allowedReferers.
|
| Permitir qualquer URL em um único subdomínio ou domínio sem "www". |
É preciso definir dois URLs na lista
|
Para restringir sua chave de API a sites específicos, use uma das seguintes opções:
Console
No console Google Cloud , acesse a página Credenciais:
Clique no nome da chave de API que você quer restringir.
Na seção Restrições de aplicativo, selecione Sites.
Para cada restrição que você quiser adicionar, clique em Adicionar, insira a restrição e clique em Concluído.
Clique em Salvar para salvar as mudanças e retornar à lista de chaves de API..
gcloud
Encontre o ID da chave que você quer restringir.
O ID não é igual ao nome de exibição ou à string de chave. Para conseguir o ID, use o comando
gcloud services api-keys listpara listar as chaves do projeto.Use o comando
gcloud services api-keys updatepara adicionar restrições de site a uma chave de API.Substitua os seguintes valores:
KEY_ID: o ID da chave que você quer restringir.ALLOWED_REFERRER_1: sua restrição de site.Você pode adicionar quantas restrições forem necessárias. use vírgulas para separar as restrições. É necessário fornecer todas as restrições do referenciador com o comando update. As restrições de referenciadores fornecidas substituem todas as restrições de referenciadores atuais na chave.
gcloud services api-keys update KEY_ID \ --allowed-referrers="ALLOWED_REFERRER_1"
Java
Para executar essa amostra, instale a
biblioteca de cliente google-cloud-apikeys.