Nesta página, explicamos como criar credenciais de curta duração para uma conta de serviço, que podem ser usadas para representar a conta de serviço. Dependendo do tipo de token criado, o token de curta duração fornece a identidade (para tokens de ID) ou permissões (para tokens de acesso) associada à conta de serviço.
Se a arquitetura do sistema exigir que você use uma série de chamadas de geração de tokens, use uma cadeia de delegação com várias contas de serviço. Na maioria dos casos, o método direto, conforme explicado nesta página, é suficiente.
Antes de começar
-
Enable the IAM and Service Account Credentials APIs:
gcloud services enable iam.googleapis.com
iamcredentials.googleapis.com Configure a autenticação.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Go
Para usar os exemplos Go desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.
Java
Para usar os exemplos Java desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.
Node.js
Para usar os exemplos Node.js desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.
Python
Para usar os exemplos Python desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação 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 gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Entenda as contas de serviço do IAM.
Entenda a representação de uma conta de serviço.
Entenda que tipo de token é necessário e siga as etapas apropriadas nas seções abaixo:
Criar um token de acesso de curta duração
Os tokens de acesso são aceitos para autenticação pela maioria das APIs do Google. Quando você gera um token de acesso usando a representação da conta de serviço, ele não vem com um token de atualização. Isso significa que, quando o token expirar, você precisará repetir o processo de representação para gerar um novo.
Para mais informações, consulte Tokens de acesso.
Para criar um token de acesso de curta duração, conclua estas tarefas:
Fornecer as permissões necessárias
Uma solicitação direta envolve duas identidades: o autor da chamada que solicita a credencial e a conta de serviço para a qual a credencial é criada. A configuração das permissões depende se o autor da chamada está se autenticando como uma conta de serviço ou como uma conta de usuário.
Se você quiser executar um comando REST ou a CLI gcloud nesta página em um ambiente de desenvolvimento local, o autor da chamada poderá ser representado por credenciais de usuário. Para cargas de trabalho automatizadas, como um aplicativo em execução no Compute Engine, o autor da chamada precisa ser representado por uma conta de serviço.
Conta de serviço
Quando o aplicativo de chamada usa uma conta de serviço como identidade, os principais a seguir estão envolvidos:
Conta de serviço de chamadas (
CALLER_SA
)Essa conta de serviço representa o aplicativo de chamada, que emite a solicitação para as credenciais de curta duração.
-
Conta de serviço com privilégios (
PRIV_SA
)Essa conta de serviço recebe os papéis do IAM necessários para o token de curta duração. Essa é a conta de serviço para a qual o token de curta duração é criado.
Para fornecer permissões
CALLER_SA
para criar credenciais de curta duração paraPRIV_SA
, você concedeCALLER_SA
o papel "Criador de token de conta de serviço" (roles/iam.serviceAccountTokenCreator
) emPRIV_SA
.Conceda o papel necessário em
PRIV_SA
:Console
-
No Console do Google Cloud, acesse a página Contas de serviço.
- Selecione um projeto.
- Clique no endereço de e-mail da conta de serviço com privilégios,
PRIV_SA
. - Clique na guia Permissões..
- Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.
-
Insira o endereço de e-mail da conta de serviço do autor da chamada,
CALLER_SA
.Por exemplo,
demo@my-project.iam.gserviceaccount.com
. -
Selecione o papel Criador do token da conta de serviço
(
roles/iam.serviceAccountTokenCreator
). - Clique em Salvar para conceder o papel à conta de serviço.
gcloud
O comando
gcloud iam service-accounts add-iam-policy-binding
concede um papel em uma conta de serviço.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token é gerado. -
CALLER_SA
: o endereço de e-mail da conta de serviço que representa o aplicativo que está solicitando o token de curta duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Você receberá uma resposta semelhante a esta:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Leia a política de permissão para
PRIV_SA
:O método
serviceAccounts.getIamPolicy
recebe a política do IAM de uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor
etag
. Inclua esse valoretag
na próxima etapa. -
Modifique a política de autorização para atribuir a
CALLER_SA
o papel "Criador de token da conta de serviço" (roles/iam.serviceAccountTokenCreator
).Por exemplo, para modificar a resposta de amostra da etapa anterior, adicione o seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Grave a política de permissão atualizada:
O método
serviceAccounts.setIamPolicy
define uma política de permissão atualizada para a conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.-
POLICY
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.Por exemplo, para definir a política de permissão mostrada na etapa anterior, substitua
POLICY
pela seguinte, em queCALLER_SA
é a conta de serviço que cria o token de curta duração:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON da solicitação:
{ "policy": POLICY }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Credenciais do usuário
Quando você quiser usar a Google Cloud CLI para gerar tokens de curta duração ou gerar tokens de curta duração a partir de um ambiente de desenvolvimento local, é possível usar uma conta de usuário para gerar os tokens. Muitas vezes, é possível usar sua própria conta de usuário.
Quando você usa uma conta de usuário para gerar tokens de curta duração, as seguintes identidades são envolvidas:
Conta do autor da chamada (
CALLER_ACCOUNT
)Essa conta de usuário é usada para gerar credenciais de curta duração para a conta de serviço com privilégios.
Conta de serviço com privilégios (
PRIV_SA
)Essa conta de serviço recebe os papéis do IAM necessários para o token de curta duração. Essa é a conta de serviço para a qual o token de curta duração é criado.
Para permitir que
CALLER_ACCOUNT
crie credenciais de curta duração paraPRIV_SA
, conceda aCALLER_ACCOUNT
o papel de criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator
) emPRIV_SA
.Conceda o papel necessário em
PRIV_SA
:Console
-
No Console do Google Cloud, acesse a página Contas de serviço.
- Selecione um projeto.
- Clique no endereço de e-mail da conta de serviço com privilégios,
PRIV_SA
. - Clique na guia Permissões..
- Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.
-
Insira o identificador principal da conta do autor da chamada,
CALLER_ACCOUNT
.Por exemplo,
example-user@example.com
-
Selecione o papel Criador do token da conta de serviço
(
roles/iam.serviceAccountTokenCreator
). - Clique em Salvar para conceder o papel à conta de usuário.
gcloud
O comando
gcloud iam service-accounts add-iam-policy-binding
concede um papel em uma conta de serviço.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token é gerado. -
CALLER_ACCOUNT
: o endereço de e-mail da conta de usuário que está sendo usada para solicitar o token de curta duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Você receberá uma resposta semelhante a esta:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Leia a política de permissão para
PRIV_SA
:O método
serviceAccounts.getIamPolicy
recebe a política do IAM de uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor
etag
. Inclua esse valoretag
na próxima etapa. -
Em seguida, modifique a política de autorização para atribuir a
CALLER_ACCOUNT
o papel "Criador de token da conta de serviço" (roles/iam.serviceAccountTokenCreator
).Por exemplo, para modificar a resposta de amostra da etapa anterior, adicione o seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
Grave a política de permissão atualizada:
O método
serviceAccounts.setIamPolicy
define uma política de permissão atualizada para a conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.-
POLICY
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.Por exemplo, para definir a política de permissão mostrada na etapa anterior, substitua
POLICY
pela seguinte, em queCALLER_ACCOUNT
é a conta de usuário que cria o token de curta duração:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON da solicitação:
{ "policy": POLICY }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Gerar o token de acesso
É possível gerar um token de acesso OAuth 2.0 usando a CLI gcloud, a API REST ou as bibliotecas de cliente do Cloud e de APIs do Google.
Se você usa a API REST e o sistema está configurado para permitir ciclos de vida estendidos do token, é possível criar um token com vida útil maior que o padrão. A Google Cloud CLi não é compatível com a configuração de um ciclo de vida para o token.
As amostras abaixo foram projetadas para serem usadas em um ambiente de desenvolvimento local. O autor da chamada precisa ser representado por uma conta de usuário, não uma conta de serviço.
Para gerar um token de acesso do OAuth 2.0 para uma conta de serviço, faça o seguinte:
gcloud
Verifique se você fez login na gcloud CLI com a conta de usuário do autor da chamada.
Gere um token para a conta de serviço usando o comando
gcloud auth print-access-token
.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (PowerShell)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (cmd.exe)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Você receberá uma resposta semelhante a esta:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. ya29.c.b0AXv0zTPnzTnDV8F8Aj5Fgy46Yf2v_v8eZIoKq7xGpfbpXuy23aQ1693m3gAuE8AZga7w6kdagN7a9bfdDYbdeoGY0CMHOClsCwIdutL7k_RFC672lOCbUgF5hS8Iu2nCA8hle-11LJXBLmaxFmH08ZTBJLuDrWSNd8cYqGYFunSC1K1qLIPBF18tsa0hxVgKPucI8b1A9L8_MK1JGLGcr0n7-zY77_lmbcdODG3NmIbLOGWOutjJgqSO_YoeCKK2QTUZIp5PG7RkKlXWnmYJA9pEahzNoQrs5sWZctc2bia9af_ITzqqlXC9h1Kj5-me6e8rd734MJvpagqYazRk0gGWpMb03XmMGpgPc_FBp4pnX9rGOzW83SNpcDz8zeFO1Q0Bo3N7CuZougjRce0y8I2_4rtw5ME_nV3wrCWa..................................................................................................................................................................................................................................................................................................
-
REST
O método
serviceAccounts.generateAccessToken
da API Service Account Credentials gera um token de acesso do OAuth 2.0 para uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. -
LIFETIME
: o tempo até o token de acesso expirar, em segundos. Por exemplo,300s
.Por padrão, o ciclo de vida máximo do token é de uma hora (3,600 segundos). Para aumentar o ciclo de vida máximo desses tokens para 12 horas (43.200 segundos), adicione a conta de serviço a uma política da organização que inclua a restrição de lista
constraints/iam.allowServiceAccountCredentialLifetimeExtension
.
Método HTTP e URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateAccessToken
Corpo JSON da solicitação:
{ "scope": [ "https://www.googleapis.com/auth/cloud-platform" ], "lifetime": "LIFETIME" }
Para enviar a solicitação, expanda uma destas opções:
Se a solicitação
generateAccessToken
for bem-sucedida, o corpo da resposta conterá um token de acesso do OAuth 2.0 e um prazo de validade. OaccessToken
poderá ser usado para autenticar uma solicitação em nome da conta de serviço até que oexpireTime
seja atingido.{ "accessToken": "eyJ0eXAi...NiJ9", "expireTime": "2020-04-07T15:01:23.045123456Z" }
Go
Java
Node.js
Python
Criar um token de ID do OpenID Connect (OIDC)
Os tokens de ID seguem a especificação OpenID Connect (OIDC). Os tokens de ID são aceitos por um número limitado de serviços e aplicativos.
Para mais informações, consulte Tokens de ID e Autenticação para aplicativos hospedados no Cloud Run ou Cloud Run functions.
Para criar um token de ID, conclua estas tarefas:
Conceder as permissões necessárias ao autor da chamada.
Use o papel Criador de token de identidade do OpenID Connect da conta de serviço (
roles/iam.serviceAccountOpenIdTokenCreator
) para criar um token de ID. Esse papel é diferente do usado para outros tipos de token.
Fornecer as permissões necessárias
Uma solicitação direta envolve duas identidades: o autor da chamada que solicita a credencial e a conta de serviço para a qual a credencial é criada. A configuração das permissões depende se o autor da chamada está se autenticando como uma conta de serviço ou como uma conta de usuário.
Se você quiser executar um comando REST ou a CLI gcloud nesta página em um ambiente de desenvolvimento local, o autor da chamada poderá ser representado por credenciais de usuário. Para cargas de trabalho automatizadas, como um aplicativo em execução no Compute Engine, o autor da chamada precisa ser representado por uma conta de serviço.
Conta de serviço
Quando o aplicativo de chamada usa uma conta de serviço como identidade, os principais a seguir estão envolvidos:
Conta de serviço de chamadas (
CALLER_SA
)Essa conta de serviço representa o aplicativo de chamada, que emite a solicitação para as credenciais de curta duração.
-
Conta de serviço com privilégios (
PRIV_SA
)Essa conta de serviço recebe os papéis do IAM necessários para o token de curta duração. Essa é a conta de serviço para a qual o token de curta duração é criado.
Para conceder permissões a
CALLER_SA
para criar credenciais de curta duração paraPRIV_SA
, conceda aCALLER_SA
o papel de Criador de token de identidade do OpenID Connect da conta de serviço (roles/iam.serviceAccountOpenIdTokenCreator
) emPRIV_SA
Conceda o papel necessário em
PRIV_SA
:Console
-
No Console do Google Cloud, acesse a página Contas de serviço.
- Selecione um projeto.
- Clique no endereço de e-mail da conta de serviço com privilégios,
PRIV_SA
. - Clique na guia Permissões..
- Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.
-
Insira o endereço de e-mail da conta de serviço do autor da chamada,
CALLER_SA
.Por exemplo,
demo@my-project.iam.gserviceaccount.com
. -
Selecione o papel de Criador do token de identidade do OpenID Connect da conta de serviço
(
roles/iam.serviceAccountOpenIdTokenCreator
). - Clique em Salvar para conceder o papel à conta de serviço.
gcloud
O comando
gcloud iam service-accounts add-iam-policy-binding
concede um papel em uma conta de serviço.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token é gerado. -
CALLER_SA
: o endereço de e-mail da conta de serviço que representa o aplicativo que está solicitando o token de curta duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Você receberá uma resposta semelhante a esta:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Leia a política de permissão para
PRIV_SA
:O método
serviceAccounts.getIamPolicy
recebe a política do IAM de uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor
etag
. Inclua esse valoretag
na próxima etapa. -
Modifique a política de permissão para conceder a
CALLER_SA
o papel de Criador de token de identidade do OpenID Connect da conta de serviço (roles/iam.serviceAccountOpenIdTokenCreator
).Por exemplo, para modificar a resposta de amostra da etapa anterior, adicione o seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Grave a política de permissão atualizada:
O método
serviceAccounts.setIamPolicy
define uma política de permissão atualizada para a conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.-
POLICY
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.Por exemplo, para definir a política de permissão mostrada na etapa anterior, substitua
POLICY
pela seguinte, em queCALLER_SA
é a conta de serviço que cria o token de curta duração:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON da solicitação:
{ "policy": POLICY }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Credenciais do usuário
Quando você quiser usar a Google Cloud CLI para gerar tokens de curta duração ou gerar tokens de curta duração a partir de um ambiente de desenvolvimento local, é possível usar uma conta de usuário para gerar os tokens. Muitas vezes, é possível usar sua própria conta de usuário.
Quando você usa uma conta de usuário para gerar tokens de curta duração, as seguintes identidades são envolvidas:
Conta do autor da chamada (
CALLER_ACCOUNT
)Essa conta de usuário é usada para gerar credenciais de curta duração para a conta de serviço com privilégios.
Conta de serviço com privilégios (
PRIV_SA
)Essa conta de serviço recebe os papéis do IAM necessários para o token de curta duração. Essa é a conta de serviço para a qual o token de curta duração é criado.
Para permitir que
CALLER_ACCOUNT
crie credenciais de curta duração paraPRIV_SA
, conceda aCALLER_ACCOUNT
o papel de Criador de token de identidade do OpenID Connect da conta de serviço (roles/iam.serviceAccountOpenIdTokenCreator
) emPRIV_SA
.Conceda o papel necessário em
PRIV_SA
:Console
-
No Console do Google Cloud, acesse a página Contas de serviço.
- Selecione um projeto.
- Clique no endereço de e-mail da conta de serviço com privilégios,
PRIV_SA
. - Clique na guia Permissões..
- Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.
-
Insira o identificador principal da conta do autor da chamada,
CALLER_ACCOUNT
.Por exemplo,
example-user@example.com
-
Selecione o papel de Criador do token de identidade do OpenID Connect da conta de serviço
(
roles/iam.serviceAccountOpenIdTokenCreator
). - Clique em Salvar para conceder o papel à conta de usuário.
gcloud
O comando
gcloud iam service-accounts add-iam-policy-binding
concede um papel em uma conta de serviço.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token é gerado. -
CALLER_ACCOUNT
: o endereço de e-mail da conta de usuário que está sendo usada para solicitar o token de curta duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Você receberá uma resposta semelhante a esta:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Leia a política de permissão para
PRIV_SA
:O método
serviceAccounts.getIamPolicy
recebe a política do IAM de uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor
etag
. Inclua esse valoretag
na próxima etapa. -
Modifique a política de permissão para conceder a
CALLER_ACCOUNT
o papel de Criador de token de identidade do OpenID Connect da conta de serviço (roles/iam.serviceAccountOpenIdTokenCreator
).Por exemplo, para modificar a resposta de amostra da etapa anterior, adicione o seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
Grave a política de permissão atualizada:
O método
serviceAccounts.setIamPolicy
define uma política de permissão atualizada para a conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.-
POLICY
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.Por exemplo, para definir a política de permissão mostrada na etapa anterior, substitua
POLICY
pela seguinte, em queCALLER_ACCOUNT
é a conta de usuário que cria o token de curta duração:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON da solicitação:
{ "policy": POLICY }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Gerar o token de ID
É possível gerar um token de ID do OpenID Connect (OIDC) usando a CLI gcloud, a API REST ou as bibliotecas de cliente do Google Cloud e da API do Google.
As amostras abaixo foram projetadas para serem usadas em um ambiente de desenvolvimento local. O autor da chamada precisa ser representado por uma conta de usuário, não uma conta de serviço.
Os tokens de ID do OIDC são válidos por 1 hora (3.600 segundos).
Gere um token de ID OIDC assinado pelo Google para uma conta de serviço:
gcloud
Verifique se você fez login na gcloud CLI com a conta de usuário do autor da chamada.
Gere um token para a conta de serviço usando o comando
gcloud auth print-identity-token
.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. -
AUDIENCE_NAME
: o público-alvo do token, geralmente o URL do aplicativo ou serviço que o token será usado para acessar.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (PowerShell)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (cmd.exe)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Você receberá uma resposta semelhante a esta:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. eyJhbGciOiJSUzI1NiIsImtpZDNhMDg4ZDRmZmMjJkYTVmZTM5MDZjY2MiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ3d3cuZXhhbXBsJhenAiOiIxMTYzwNDYyMDk0ODIiLCJleHAiOjE2NTQ4ODU0MzEsImlhdCI6MTY1NDg4MTgzMSwiaXN6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViIMDQ2MjA5NDgyIn0.F7mu8IHj5VQdu7ItFrnYAKyGd7YqXuOP_rFLc98q8BaFBycAF1zAQnSnwqnSUXba0UK9PDT_-IOry68qLwBObz4XlX9lk0ehpN0O0W9FcFToKLB6wefXXPd4h7xtuPe5KzmpSOqj2Qqv34HriGw00Nqd-oGSgNY_lZ4wGEf4rT4oQa_kEcrY57Q2G6pwd769BhgeFwoLi5aK_Cv2kvf_zfMszC-xlkP9zwWQ8XinJBwe-qcQBa4NTgrbueNtXsEjccBS366zmw
-
REST
O método
serviceAccounts.generateIdToken
da API Service Account Credentials gera um token de ID do OIDC para uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. -
AUDIENCE_NAME
: o público-alvo do token, geralmente o URL do aplicativo ou serviço que o token será usado para acessar.
Método HTTP e URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateIdToken
Corpo JSON da solicitação:
{ "audience": "AUDIENCE_NAME", "includeEmail": "true" }
Para enviar a solicitação, expanda uma destas opções:
Se a solicitação
generateId
for bem-sucedida, o corpo da resposta conterá um token de ID válido por 1 hora: Otoken
pode ser usado para autenticar uma solicitação em nome da conta de serviço:{ "token": "eyJ0eXAi...NiJ9" }
Criar um JSON Web Token (JWT) autoassinado
Os JSON Web Tokens (JWTs) autoassinados são úteis em várias situações:
- Comunicação segura entre seus próprios aplicativos. Nesse cenário, um aplicativo pode assinar um token a ser verificado por outro aplicativo para fins de autenticação.
- Autenticar uma chamada para uma API Google, conforme descrito em Autorização de conta de serviço sem OAuth.
- Autenticação em uma API implantada com o gateway de API.
- Tratar uma conta de serviço como provedor de identidade assinando um JWT que contenha declarações arbitrárias sobre um usuário, uma conta ou um dispositivo.
Para criar um JWT, conclua estas tarefas:
Fornecer as permissões necessárias
Uma solicitação direta envolve duas identidades: o autor da chamada que solicita a credencial e a conta de serviço para a qual a credencial é criada. A configuração das permissões depende se o autor da chamada está se autenticando como uma conta de serviço ou como uma conta de usuário.
Se você quiser executar um comando REST ou a CLI gcloud nesta página em um ambiente de desenvolvimento local, o autor da chamada poderá ser representado por credenciais de usuário. Para cargas de trabalho automatizadas, como um aplicativo em execução no Compute Engine, o autor da chamada precisa ser representado por uma conta de serviço.
Conta de serviço
Quando o aplicativo de chamada usa uma conta de serviço como identidade, os principais a seguir estão envolvidos:
Conta de serviço de chamadas (
CALLER_SA
)Essa conta de serviço representa o aplicativo de chamada, que emite a solicitação para as credenciais de curta duração.
-
Conta de serviço com privilégios (
PRIV_SA
)Essa conta de serviço recebe os papéis do IAM necessários para o token de curta duração. Essa é a conta de serviço para a qual o token de curta duração é criado.
Para fornecer permissões
CALLER_SA
para criar credenciais de curta duração paraPRIV_SA
, você concedeCALLER_SA
o papel "Criador de token de conta de serviço" (roles/iam.serviceAccountTokenCreator
) emPRIV_SA
.Conceda o papel necessário em
PRIV_SA
:Console
-
No Console do Google Cloud, acesse a página Contas de serviço.
- Selecione um projeto.
- Clique no endereço de e-mail da conta de serviço com privilégios,
PRIV_SA
. - Clique na guia Permissões..
- Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.
-
Insira o endereço de e-mail da conta de serviço do autor da chamada,
CALLER_SA
.Por exemplo,
demo@my-project.iam.gserviceaccount.com
. -
Selecione o papel Criador do token da conta de serviço
(
roles/iam.serviceAccountTokenCreator
). - Clique em Salvar para conceder o papel à conta de serviço.
gcloud
O comando
gcloud iam service-accounts add-iam-policy-binding
concede um papel em uma conta de serviço.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token é gerado. -
CALLER_SA
: o endereço de e-mail da conta de serviço que representa o aplicativo que está solicitando o token de curta duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Você receberá uma resposta semelhante a esta:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Leia a política de permissão para
PRIV_SA
:O método
serviceAccounts.getIamPolicy
recebe a política do IAM de uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor
etag
. Inclua esse valoretag
na próxima etapa. -
Modifique a política de autorização para atribuir a
CALLER_SA
o papel "Criador de token da conta de serviço" (roles/iam.serviceAccountTokenCreator
).Por exemplo, para modificar a resposta de amostra da etapa anterior, adicione o seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Grave a política de permissão atualizada:
O método
serviceAccounts.setIamPolicy
define uma política de permissão atualizada para a conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.-
POLICY
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.Por exemplo, para definir a política de permissão mostrada na etapa anterior, substitua
POLICY
pela seguinte, em queCALLER_SA
é a conta de serviço que cria o token de curta duração:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON da solicitação:
{ "policy": POLICY }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Credenciais do usuário
Quando você quiser usar a Google Cloud CLI para gerar tokens de curta duração ou gerar tokens de curta duração a partir de um ambiente de desenvolvimento local, é possível usar uma conta de usuário para gerar os tokens. Muitas vezes, é possível usar sua própria conta de usuário.
Quando você usa uma conta de usuário para gerar tokens de curta duração, as seguintes identidades são envolvidas:
Conta do autor da chamada (
CALLER_ACCOUNT
)Essa conta de usuário é usada para gerar credenciais de curta duração para a conta de serviço com privilégios.
Conta de serviço com privilégios (
PRIV_SA
)Essa conta de serviço recebe os papéis do IAM necessários para o token de curta duração. Essa é a conta de serviço para a qual o token de curta duração é criado.
Para permitir que
CALLER_ACCOUNT
crie credenciais de curta duração paraPRIV_SA
, conceda aCALLER_ACCOUNT
o papel de criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator
) emPRIV_SA
.Conceda o papel necessário em
PRIV_SA
:Console
-
No Console do Google Cloud, acesse a página Contas de serviço.
- Selecione um projeto.
- Clique no endereço de e-mail da conta de serviço com privilégios,
PRIV_SA
. - Clique na guia Permissões..
- Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.
-
Insira o identificador principal da conta do autor da chamada,
CALLER_ACCOUNT
.Por exemplo,
example-user@example.com
-
Selecione o papel Criador do token da conta de serviço
(
roles/iam.serviceAccountTokenCreator
). - Clique em Salvar para conceder o papel à conta de usuário.
gcloud
O comando
gcloud iam service-accounts add-iam-policy-binding
concede um papel em uma conta de serviço.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token é gerado. -
CALLER_ACCOUNT
: o endereço de e-mail da conta de usuário que está sendo usada para solicitar o token de curta duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Você receberá uma resposta semelhante a esta:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Leia a política de permissão para
PRIV_SA
:O método
serviceAccounts.getIamPolicy
recebe a política do IAM de uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor
etag
. Inclua esse valoretag
na próxima etapa. -
Em seguida, modifique a política de autorização para atribuir a
CALLER_ACCOUNT
o papel "Criador de token da conta de serviço" (roles/iam.serviceAccountTokenCreator
).Por exemplo, para modificar a resposta de amostra da etapa anterior, adicione o seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
Grave a política de permissão atualizada:
O método
serviceAccounts.setIamPolicy
define uma política de permissão atualizada para a conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.-
POLICY
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.Por exemplo, para definir a política de permissão mostrada na etapa anterior, substitua
POLICY
pela seguinte, em queCALLER_ACCOUNT
é a conta de usuário que cria o token de curta duração:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON da solicitação:
{ "policy": POLICY }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Gerar o JWT
Gere um JWT autoassinado:
REST
O método
serviceAccounts.signJwt
da API Service Account Credentials assina um JWT usando uma chave privada da conta de serviço gerenciada pelo sistema.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. -
JWT_PAYLOAD
: o payload de JWT a ser assinado, que é um objeto JSON contendo um conjunto de declarações do JWT. Inclua as declarações necessárias para o caso de uso pretendido e para atender aos requisitos de validação do serviço que você está chamando. Se você estiver chamando uma API do Google, consulte o Guia de autenticação do Google para conhecer os requisitos da declaração.A declaração
exp
(prazo de validade) precisa ser definida como, no máximo, 12 horas no futuro. Se você estiver chamando uma API do Google, a declaraçãoexp
precisará ser definida como, no máximo, uma hora.O payload de exemplo a seguir contém declarações para chamar uma API do Google, em que
EXP
é um carimbo de data/hora inteiro que representa o prazo de validade:{ \"iss\": \"PRIV_SA\", \"sub\": \"PRIV_SA\", \"aud\": \"https://firestore.googleapis.com/\", \"iat\": 1529350000, \"exp\": EXP }
Método HTTP e URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signJwt
Corpo JSON da solicitação:
{ "payload": "JWT_PAYLOAD" }
Para enviar a solicitação, expanda uma destas opções:
Se a solicitação
signJwt
for bem-sucedida, o corpo da resposta conterá um blob assinado e o ID da chave de assinatura que foi usada para assiná-lo. Use o valorsignedJwt
como um token do portador para autenticar diretamente uma solicitação em nome da conta de serviço. O token será válido até o prazo de validade especificado na solicitação:{ "keyId": "42ba1e...fc0a", "signedJwt": "eyJ0eXAi...NiJ9" }
Criar um objeto binário autoassinado (blob)
Objetos binários autoassinados, ou blobs, são usados para transmitir dados binários de maneira que o criador dos dados seja conhecido (porque o blob é autoassinado). Os blobs podem ser usados para criar assinaturas, um objeto do Cloud Storage necessário para vários fluxos de autenticação, incluindo URLs assinados. Para mais informações sobre assinaturas, consulte a documentação do Cloud Storage.
Para criar um objeto binário autoassinado, siga estas etapas:
Fornecer as permissões necessárias
Uma solicitação direta envolve duas identidades: o autor da chamada que solicita a credencial e a conta de serviço para a qual a credencial é criada. A configuração das permissões depende se o autor da chamada está se autenticando como uma conta de serviço ou como uma conta de usuário.
Se você quiser executar um comando REST ou a CLI gcloud nesta página em um ambiente de desenvolvimento local, o autor da chamada poderá ser representado por credenciais de usuário. Para cargas de trabalho automatizadas, como um aplicativo em execução no Compute Engine, o autor da chamada precisa ser representado por uma conta de serviço.
Conta de serviço
Quando o aplicativo de chamada usa uma conta de serviço como identidade, os principais a seguir estão envolvidos:
Conta de serviço de chamadas (
CALLER_SA
)Essa conta de serviço representa o aplicativo de chamada, que emite a solicitação para as credenciais de curta duração.
-
Conta de serviço com privilégios (
PRIV_SA
)Essa conta de serviço recebe os papéis do IAM necessários para o token de curta duração. Essa é a conta de serviço para a qual o token de curta duração é criado.
Para fornecer permissões
CALLER_SA
para criar credenciais de curta duração paraPRIV_SA
, você concedeCALLER_SA
o papel "Criador de token de conta de serviço" (roles/iam.serviceAccountTokenCreator
) emPRIV_SA
.Conceda o papel necessário em
PRIV_SA
:Console
-
No Console do Google Cloud, acesse a página Contas de serviço.
- Selecione um projeto.
- Clique no endereço de e-mail da conta de serviço com privilégios,
PRIV_SA
. - Clique na guia Permissões..
- Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.
-
Insira o endereço de e-mail da conta de serviço do autor da chamada,
CALLER_SA
.Por exemplo,
demo@my-project.iam.gserviceaccount.com
. -
Selecione o papel Criador do token da conta de serviço
(
roles/iam.serviceAccountTokenCreator
). - Clique em Salvar para conceder o papel à conta de serviço.
gcloud
O comando
gcloud iam service-accounts add-iam-policy-binding
concede um papel em uma conta de serviço.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token é gerado. -
CALLER_SA
: o endereço de e-mail da conta de serviço que representa o aplicativo que está solicitando o token de curta duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Você receberá uma resposta semelhante a esta:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Leia a política de permissão para
PRIV_SA
:O método
serviceAccounts.getIamPolicy
recebe a política do IAM de uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor
etag
. Inclua esse valoretag
na próxima etapa. -
Modifique a política de autorização para atribuir a
CALLER_SA
o papel "Criador de token da conta de serviço" (roles/iam.serviceAccountTokenCreator
).Por exemplo, para modificar a resposta de amostra da etapa anterior, adicione o seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Grave a política de permissão atualizada:
O método
serviceAccounts.setIamPolicy
define uma política de permissão atualizada para a conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.-
POLICY
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.Por exemplo, para definir a política de permissão mostrada na etapa anterior, substitua
POLICY
pela seguinte, em queCALLER_SA
é a conta de serviço que cria o token de curta duração:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON da solicitação:
{ "policy": POLICY }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Credenciais do usuário
Quando você quiser usar a Google Cloud CLI para gerar tokens de curta duração ou gerar tokens de curta duração a partir de um ambiente de desenvolvimento local, é possível usar uma conta de usuário para gerar os tokens. Muitas vezes, é possível usar sua própria conta de usuário.
Quando você usa uma conta de usuário para gerar tokens de curta duração, as seguintes identidades são envolvidas:
Conta do autor da chamada (
CALLER_ACCOUNT
)Essa conta de usuário é usada para gerar credenciais de curta duração para a conta de serviço com privilégios.
Conta de serviço com privilégios (
PRIV_SA
)Essa conta de serviço recebe os papéis do IAM necessários para o token de curta duração. Essa é a conta de serviço para a qual o token de curta duração é criado.
Para permitir que
CALLER_ACCOUNT
crie credenciais de curta duração paraPRIV_SA
, conceda aCALLER_ACCOUNT
o papel de criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator
) emPRIV_SA
.Conceda o papel necessário em
PRIV_SA
:Console
-
No Console do Google Cloud, acesse a página Contas de serviço.
- Selecione um projeto.
- Clique no endereço de e-mail da conta de serviço com privilégios,
PRIV_SA
. - Clique na guia Permissões..
- Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.
-
Insira o identificador principal da conta do autor da chamada,
CALLER_ACCOUNT
.Por exemplo,
example-user@example.com
-
Selecione o papel Criador do token da conta de serviço
(
roles/iam.serviceAccountTokenCreator
). - Clique em Salvar para conceder o papel à conta de usuário.
gcloud
O comando
gcloud iam service-accounts add-iam-policy-binding
concede um papel em uma conta de serviço.Antes de usar os dados do comando abaixo, faça estas substituições:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token é gerado. -
CALLER_ACCOUNT
: o endereço de e-mail da conta de usuário que está sendo usada para solicitar o token de curta duração.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Você receberá uma resposta semelhante a esta:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Leia a política de permissão para
PRIV_SA
:O método
serviceAccounts.getIamPolicy
recebe a política do IAM de uma conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Corpo JSON da solicitação:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor
etag
. Inclua esse valoretag
na próxima etapa. -
Em seguida, modifique a política de autorização para atribuir a
CALLER_ACCOUNT
o papel "Criador de token da conta de serviço" (roles/iam.serviceAccountTokenCreator
).Por exemplo, para modificar a resposta de amostra da etapa anterior, adicione o seguinte:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
Grave a política de permissão atualizada:
O método
serviceAccounts.setIamPolicy
define uma política de permissão atualizada para a conta de serviço.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud. Os IDs do projeto são strings alfanuméricas, comomy-project
.-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. POLICY_VERSION
: a versão da política a ser retornada. As solicitações precisam especificar a versão mais recente da política, que é a versão 3 da política. Para saber mais detalhes, consulte Como especificar uma versão da política ao receber uma política.-
POLICY
: uma representação JSON da política que você quer definir. Para mais informações sobre o formato de uma política, consulte a referência da política.Por exemplo, para definir a política de permissão mostrada na etapa anterior, substitua
POLICY
pela seguinte, em queCALLER_ACCOUNT
é a conta de usuário que cria o token de curta duração:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
Método HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Corpo JSON da solicitação:
{ "policy": POLICY }
Para enviar a solicitação, expanda uma destas opções:
A resposta contém a política de permissão atualizada.
Gerar o blob autoassinado
Gere um blob autoassinado para a conta de serviço:
REST
O método
serviceAccounts.signBlob
da API Service Account Credentials assina um blob usando uma chave privada da conta de serviço gerenciada pelo sistema.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
PRIV_SA
: o endereço de e-mail da conta de serviço com privilégios para o qual o token de curta duração foi criado. -
BLOB_PAYLOAD
: uma string de bytes codificada em base64. Por exemplo,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu
.
Método HTTP e URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signBlob
Corpo JSON da solicitação:
{ "payload": "BLOB_PAYLOAD" }
Para enviar a solicitação, expanda uma destas opções:
Se a solicitação
signBlob
for bem-sucedida, o corpo da resposta conterá um blob assinado e o ID da chave de assinatura que foi usada para assiná-lo. Use o valorsignedBlob
como um token do portador para autenticar diretamente uma solicitação em nome da conta de serviço. O token será válido até que a chave privada da conta de serviço gerenciada pelo sistema expire. O ID dessa chave é o valor do campokeyId
na resposta.{ "keyId": "42ba1e...fc0a", "signedBlob": "eyJ0eXAi...NiJ9" }
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-11-23 UTC.