Criar credenciais de curta duração para uma conta de serviço

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, explicamos como simular uma conta de serviço criando credenciais de curta duração para ela.

Algumas arquiteturas de sistema foram projetadas em torno de contas de serviço com privilégios, que são projetadas para serem usadas juntas. Nesse caso, talvez você precise criar suas credenciais para várias contas de serviço.

Sobre a criação de credenciais de curta duração

As contas de serviço podem usar credenciais de curta duração para autenticar chamadas a APIs do Google Cloud, outras APIs do Google e APIs de terceiros. As credenciais de curta duração têm uma vida útil limitada, com duração de apenas algumas horas ou menos. As credenciais de curta duração para contas de serviço são úteis quando você precisa atribuir acesso limitado a recursos para contas de serviço confiáveis. Elas também oferecem menos risco do que as credenciais de longa duração, como as chaves de conta de serviço.

É possível criar os seguintes tipos de credenciais de curta duração usando uma conta de serviço:

  • Tokens de acesso do OAuth 2.0

    Os tokens de acesso são os tokens de curta duração mais usados.

  • Tokens de ID

    Os tokens de ID seguem a especificação OpenID Connect (OIDC) e são compatíveis com um número limitado de serviços e aplicativos.

  • JSON Web Tokens (JWTs) autoassinados

    É possível usar JWTs autoassinados para autenticar algumas APIs do Google sem receber um token de acesso do servidor de autorização. As APIs implantadas com a API Gateway exigem isso.

  • Blobs binários autoassinados

    Os blobs autoassinados são úteis em cenários em que você precisa transmitir com segurança dados binários arbitrários, geralmente para fins de autenticação.

Fluxo de solicitação direta

Quando você cria credenciais de curta duração para uma conta de serviço usando um fluxo de solicitação direta, o autor da chamada faz uma solicitação direta para criar credenciais de curta duração. Duas identidades estão envolvidas nesse fluxo: o autor da chamada e a conta de serviço por que a credencial é criada.

Se a arquitetura do sistema for projetada em níveis de contas de serviço com privilégios limitados, consulte Criar credenciais de curta duração para várias contas de serviço.

Antes de começar

Fornecer as permissões necessárias

Uma solicitação direta envolve duas identidades: o autor da chamada e a conta de serviço por que a credencial é criada. A configuração das permissões depende de o autor da chamada estar usando uma conta de serviço ou credenciais do usuário.

Se quiser executar as amostras nesta página em um ambiente de desenvolvimento local, você usará as credenciais do usuário. Para uso em produção, como um aplicativo em execução no Compute Engine, use uma conta de serviço para representar o autor da chamada.

Conceder as permissões necessárias para uma conta de 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 do Google.

Quando você usa uma conta de usuário para gerar tokens de curta duração, as seguintes identidades são envolvidas:

  • Conta do Google 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 para PRIV_SA, conceda a CALLER_ACCOUNT o papel de criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) em PRIV_SA.

Console

  1. No Console do Google Cloud, acesse a página Contas de serviço.

    Acessar "Contas de serviço"

  2. Selecione um projeto.

  3. Clique no endereço de e-mail da conta de serviço com privilégios, PRIV_SA.

  4. Clique na guia Permissões..

  5. Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.

  6. Insira o endereço de e-mail da Conta do Google do autor da chamada, CALLER_ACCOUNT.

    Por exemplo, username@google.com

  7. Selecione o papel Criador do token da conta de serviço (roles/iam.serviceAccountTokenCreator).

  8. Clique em Salvar para conceder o papel à conta de usuário.

gcloud

Conceda o papel necessário em PRIV_SA:

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 este comando:

Linux, macOS ou Cloud Shell

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Windows (PowerShell)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Windows (cmd.exe)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Você receberá uma resposta semelhante a esta:

Updated IAM policy for serviceAccount [PRIV_SA].
bindings:
- members:
  - user:CALLER_ACCOUNT
  role: roles/iam.serviceAccountTokenCreator
etag: BwXhCB4eyjY=
version: 1

REST

Primeiro, leia a política de permissão para PRIV_SA:

O método serviceAccounts.getIamPolicy recebe a política de permissão 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, como my-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:admin@example.com"
      ]
    }
  ]
}

Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor etag. Inclua esse valor etag 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:admin@example.com"
      ]
    },
    {
      "role": "roles/iam.serviceAccountTokenCreator",
      "members": [
        "user:CALLER_ACCOUNT"
      ]
    }
  ]
}

Por fim, escreva 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, como my-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 que CALLER_ACCOUNT é a conta de usuário que cria o token de curta duração:

    {
      "version": 1,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "role": "roles/serviceAccountAdmin",
          "members": [
            "user:admin@example.com"
          ]
        },
        {
          "role": "roles/iam.serviceAccountTokenCreator",
          "members": [
            "user: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.

Fornecer as permissões necessárias para uma 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 para PRIV_SA, você concede CALLER_SA o papel "Criador de token de conta de serviço" (roles/iam.serviceAccountTokenCreator) emPRIV_SA.

Console

  1. No Console do Google Cloud, acesse a página Contas de serviço.

    Acessar "Contas de serviço"

  2. Selecione um projeto.

  3. Clique no endereço de e-mail da conta de serviço com privilégios, PRIV_SA.

  4. Clique na guia Permissões..

  5. Em Principais com acesso a esta conta de serviço, clique em Conceder acesso.

  6. 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

  7. Selecione o papel Criador do token da conta de serviço (roles/iam.serviceAccountTokenCreator).

  8. Clique em Salvar para conceder o papel à conta de serviço.

gcloud

Conceda o papel necessário em PRIV_SA:

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 este comando:

Linux, macOS ou Cloud Shell

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

Windows (PowerShell)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

Windows (cmd.exe)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

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

Primeiro, leia a política de permissão para PRIV_SA:

O método serviceAccounts.getIamPolicy recebe a política de permissão 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, como my-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:admin@example.com"
      ]
    }
  ]
}

Se você não tiver concedido aos papéis à conta de serviço, a resposta conterá apenas um valor etag. Inclua esse valor etag na próxima etapa.

Em seguida, modifique a política 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:admin@example.com"
      ]
    },
    {
      "role": "roles/iam.serviceAccountTokenCreator",
      "members": [
        "serviceAccount:CALLER_SA"
      ]
    }
  ]
}

Por fim, escreva 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, como my-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 que CALLER_SA é a conta de serviço que cria o token de curta duração:

    {
      "version": 1,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "role": "roles/serviceAccountAdmin",
          "members": [
            "user:admin@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.

Como solicitar credenciais de curta duração

Depois de conceder os papéis apropriados a cada identidade, solicite credenciais de curta duração para a conta de serviço pretendida. Os seguintes tipos de credenciais são aceitos:

As amostras nesta seção exigem que você use uma conta de usuário.

Como gerar um token de acesso do OAuth 2.0

É 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 a conta de serviço com privilégios:

gcloud

  1. Faça login na Google Cloud CLI como a Conta do Google do autor da chamada.

    gcloud auth login CALLER_ACCOUNT
    
  2. Personificar a conta de serviço com privilégios para gerar o token.

    O comando gcloud auth print-access-token gera um token de acesso do OAuth 2.0 para 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 de curta duração foi criado.
      • Execute o este 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. O accessToken poderá ser usado para autenticar uma solicitação em nome da conta de serviço até que o expireTime seja atingido.

{
  "accessToken": "eyJ0eXAi...NiJ9",
  "expireTime": "2020-04-07T15:01:23.045123456Z"
}

Como gerar tokens Connect ID do OpenID

É 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).

Para gerar um token de ID do OIDC assinado para o Google para a conta de serviço com privilégios:

gcloud

  1. Faça login na Google Cloud CLI como a Conta do Google do autor da chamada.

    gcloud auth login CALLER_ACCOUNT
    
  2. Personificar a conta de serviço com privilégios para gerar o token.

    O comando gcloud auth print-identity-token gera um token de ID do OIDC para 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 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 este 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: O token pode ser usado para autenticar uma solicitação em nome da conta de serviço:

{
  "token": "eyJ0eXAi...NiJ9"
}

Como criar um JSON Web Token (JWT) autoassinado

Os JSON Web Tokens (JWTs) autoassinados são úteis em vários cenários, como:

  • Autenticar uma chamada para uma API Google, conforme descrito no Guia de autenticação do Google.
  • Comunicação segura entre o Google Cloud ou serviços de terceiros, como um aplicativo em execução no App Engine. Nesse cenário, um aplicativo pode assinar um token a ser verificado por outro aplicativo para fins de autenticação.
  • 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 executar o exemplo abaixo, é necessário usar uma conta de usuário como credenciais de autor da chamada.

Para gerar um JWT autoassinado para a conta de serviço de privilégios:

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ção exp 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 valor signedJwt 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"
}

Como criar um blob autoassinado

Para executar o exemplo abaixo, é necessário usar uma conta de usuário como credenciais de autor da chamada.

Para gerar um blob autoassinado para a conta de serviço com privilégios:

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 valor signedBlob 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 campo keyId na resposta.

{
  "keyId": "42ba1e...fc0a",
  "signedBlob": "eyJ0eXAi...NiJ9"
}