Crie contas de serviço

Esta página explica como criar contas de serviço através da API Identity and Access Management (IAM), da Google Cloud consola e da ferramenta de linha de comandosgcloud.

Por predefinição, cada projeto pode ter até 100 contas de serviço que controlam o acesso aos seus recursos. Pode pedir um aumento da quota se necessário. Saiba mais acerca das quotas e dos limites.

Antes de começar

  • Enable the IAM API.

    Enable the API

  • Configurar 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.

    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.

    C#

    Para usar os .NET exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na Google Cloud documentação de autenticação.

    C++

    Para usar os C++ exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na Google Cloud documentação de autenticação.

    Ir

    Para usar os Go exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na Google Cloud documentação de autenticação.

    Java

    Para usar os Java exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na Google Cloud documentação de autenticação.

    Python

    Para usar os Python exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na Google Cloud documentação de autenticação.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud.

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

  • Compreenda as contas de serviço do IAM

Funções necessárias

Para receber as autorizações de que precisa para criar contas de serviço, peça ao seu administrador para lhe conceder a função de IAM Criar contas de serviço (roles/iam.serviceAccountCreator) no projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Se quiser conceder às contas de serviço recém-criadas acesso ao seu projeto, também precisa da função de administrador de IAM do projeto (roles/resourcemanager.projectIamAdmin).

Criar uma conta de serviço

Quando cria uma conta de serviço, tem de facultar um ID alfanumérico (SERVICE_ACCOUNT_NAME nos exemplos abaixo), como my-service-account. O ID tem de ter entre 6 e 30 carateres e pode conter carateres alfanuméricos em minúsculas e traços. Depois de criar uma conta de serviço, não pode alterar o respetivo nome.

O nome da conta de serviço é apresentado no endereço de email aprovisionado durante a criação, no formato SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

Cada conta de serviço também tem um ID numérico exclusivo e permanente, que é gerado automaticamente.

Também fornece as seguintes informações quando cria uma conta de serviço:

  • DESCRIPTION é uma descrição opcional da conta de serviço.
  • DISPLAY_NAME é um nome intuitivo para a conta de serviço.
  • PROJECT_ID é o ID do seu Google Cloud projeto.

Depois de criar uma conta de serviço, pode ter de aguardar 60 segundos ou mais antes de a usar. Este comportamento ocorre porque as operações de leitura são eventualmente consistentes. Pode demorar algum tempo até que a nova conta de serviço fique visível. Se tentar ler ou usar uma conta de serviço imediatamente após a sua criação e receber um erro, pode tentar novamente o pedido com recuo exponencial.

Consola

  1. Na Google Cloud consola, aceda à página Criar conta de serviço.

    Aceda a Criar conta de serviço

    Os passos restantes aparecem na Google Cloud consola.

  2. Selecione um Google Cloud projeto.
  3. Introduza um nome da conta de serviço a apresentar na Google Cloud consola.

    A Google Cloud consola gera um ID da conta de serviço com base neste nome. Edite o ID, se necessário. Não pode alterar o ID posteriormente.

  4. Opcional: introduza uma descrição da conta de serviço.
  5. Se não quiser definir controlos de acesso agora, clique em Concluído para terminar a criação da conta de serviço. Para definir os controlos de acesso agora, clique em Criar e continuar e avance para o passo seguinte.
  6. Opcional: escolha uma ou mais funções do IAM para conceder à conta de serviço no projeto.
  7. Quando terminar de adicionar funções, clique em Continuar.
  8. Opcional: no campo Função de utilizadores da conta de serviço, adicione membros que precisem de associar a conta de serviço a outros recursos.
  9. Opcional: no campo Função de administrador da conta de serviço, adicione membros que precisem de gerir a conta de serviço.
  10. Clique em Concluído para terminar de criar a conta de serviço.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Para criar a conta de serviço, execute o comando gcloud iam service-accounts create:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --description="DESCRIPTION" \
      --display-name="DISPLAY_NAME"

    Substitua os seguintes valores:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço

    • DESCRIPTION: uma descrição opcional da conta de serviço

    • DISPLAY_NAME: um nome de conta de serviço a apresentar na consola Google Cloud

  3. Opcional: para conceder à sua conta de serviço uma função do IAM no seu projeto, execute o comando gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --role="ROLE_NAME"

    Substitua os seguintes valores:

    • PROJECT_ID: o ID do projeto

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço

    • ROLE_NAME: um nome de função, como roles/compute.osLogin

  4. Opcional: para permitir que os utilizadores anexem a conta de serviço a outros recursos, execute o comando gcloud iam service-accounts add-iam-policy-binding para conceder a um utilizador a função de utilizador da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço:

    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --member="user:USER_EMAIL" \
      --role="roles/iam.serviceAccountUser"

    Substitua os seguintes valores:

    • PROJECT_ID: o ID do projeto

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço

    • USER_EMAIL: o endereço de email do utilizador

  5. C++

    Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API C++ IAM.

    Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    namespace iam = ::google::cloud::iam_admin_v1;
    [](std::string const& project_id, std::string const& account_id,
       std::string const& display_name, std::string const& description) {
      iam::IAMClient client(iam::MakeIAMConnection());
      google::iam::admin::v1::ServiceAccount service_account;
      service_account.set_display_name(display_name);
      service_account.set_description(description);
      auto response = client.CreateServiceAccount("projects/" + project_id,
                                                  account_id, service_account);
      if (!response) throw std::move(response).status();
      std::cout << "ServiceAccount successfully created: "
                << response->DebugString() << "\n";
    }

    C#

    Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API C# IAM.

    Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    
    using System;
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.Iam.v1;
    using Google.Apis.Iam.v1.Data;
    
    public partial class ServiceAccounts
    {
        public static ServiceAccount CreateServiceAccount(string projectId,
            string name, string displayName)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(IamService.Scope.CloudPlatform);
            var service = new IamService(new IamService.Initializer
            {
                HttpClientInitializer = credential
            });
    
            var request = new CreateServiceAccountRequest
            {
                AccountId = name,
                ServiceAccount = new ServiceAccount
                {
                    DisplayName = displayName
                }
            };
            var serviceAccount = service.Projects.ServiceAccounts.Create(
                request, "projects/" + projectId).Execute();
            Console.WriteLine("Created service account: " + serviceAccount.Email);
            return serviceAccount;
        }
    }
    

    Go

    Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Go IAM.

    Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	iam "google.golang.org/api/iam/v1"
    )
    
    // createServiceAccount creates a service account.
    func createServiceAccount(w io.Writer, projectID, name, displayName string) (*iam.ServiceAccount, error) {
    	ctx := context.Background()
    	service, err := iam.NewService(ctx)
    	if err != nil {
    		return nil, fmt.Errorf("iam.NewService: %w", err)
    	}
    
    	request := &iam.CreateServiceAccountRequest{
    		AccountId: name,
    		ServiceAccount: &iam.ServiceAccount{
    			DisplayName: displayName,
    		},
    	}
    	account, err := service.Projects.ServiceAccounts.Create("projects/"+projectID, request).Do()
    	if err != nil {
    		return nil, fmt.Errorf("Projects.ServiceAccounts.Create: %w", err)
    	}
    	fmt.Fprintf(w, "Created service account: %v", account)
    	return account, nil
    }
    

    Java

    Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Java IAM.

    Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    
    import com.google.cloud.iam.admin.v1.IAMClient;
    import com.google.iam.admin.v1.CreateServiceAccountRequest;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.admin.v1.ServiceAccount;
    import java.io.IOException;
    
    public class CreateServiceAccount {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        String projectId = "your-project-id";
        String serviceAccountName = "my-service-account-name";
    
        createServiceAccount(projectId, serviceAccountName);
      }
    
      // Creates a service account.
      public static ServiceAccount createServiceAccount(String projectId, String serviceAccountName)
              throws IOException {
        ServiceAccount serviceAccount = ServiceAccount
                .newBuilder()
                .setDisplayName("your-display-name")
                .build();
        CreateServiceAccountRequest request = CreateServiceAccountRequest.newBuilder()
                .setName(ProjectName.of(projectId).toString())
                .setAccountId(serviceAccountName)
                .setServiceAccount(serviceAccount)
                .build();
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (IAMClient iamClient = IAMClient.create()) {
          serviceAccount = iamClient.createServiceAccount(request);
          System.out.println("Created service account: " + serviceAccount.getEmail());
        }
        return serviceAccount;
      }
    }

    Python

    Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Python IAM.

    Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    from typing import Optional
    
    from google.cloud import iam_admin_v1
    from google.cloud.iam_admin_v1 import types
    
    
    def create_service_account(
        project_id: str, account_id: str, display_name: Optional[str] = None
    ) -> types.ServiceAccount:
        """Creates a service account.
    
        project_id: ID or number of the Google Cloud project you want to use.
        account_id: ID which will be unique identifier of the service account
        display_name (optional): human-readable name, which will be assigned
            to the service account
    
        return: ServiceAccount
        """
    
        iam_admin_client = iam_admin_v1.IAMClient()
        request = types.CreateServiceAccountRequest()
    
        request.account_id = account_id
        request.name = f"projects/{project_id}"
    
        service_account = types.ServiceAccount()
        service_account.display_name = display_name
        request.service_account = service_account
    
        account = iam_admin_client.create_service_account(request=request)
    
        print(f"Created a service account: {account.email}")
        return account

    REST

    O método serviceAccounts.create cria uma conta de serviço.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • PROJECT_ID: O ID do seu Google Cloud projeto. Os IDs dos projetos são strings alfanuméricas, como my-project.
    • SA_NAME: o ID alfanumérico da sua conta de serviço. Este nome tem de ter entre 6 e 30 carateres e pode conter carateres alfanuméricos em minúsculas e travessões.
    • SA_DESCRIPTION: opcional. Uma descrição para a conta de serviço.
    • SA_DISPLAY_NAME: um nome legível para humanos para a conta de serviço.

    Método HTTP e URL:

    POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts

    Corpo JSON do pedido:

    {
      "accountId": "SA_NAME",
      "serviceAccount": {
        "description": "SA_DESCRIPTION",
        "displayName": "SA_DISPLAY_NAME"
      }
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    Deve receber uma resposta JSON semelhante à seguinte:

    {
      "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com",
      "projectId": "my-project",
      "uniqueId": "123456789012345678901",
      "email": "my-service-account@my-project.iam.gserviceaccount.com",
      "displayName": "My service account",
      "etag": "BwUp3rVlzes=",
      "description": "A service account for running jobs in my project",
      "oauth2ClientId": "987654321098765432109"
    }
    

Depois de criar uma conta de serviço, conceda uma ou mais funções à conta de serviço para que possa agir em seu nome.

Além disso, se a conta de serviço precisar de aceder a recursos noutros projetos, normalmente, tem de ativar as APIs para esses recursos no projeto onde criou a conta de serviço.

O que se segue?

Experimente

Se for um novo utilizador do Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Os novos clientes também recebem 300 USD em créditos gratuitos para executar, testar e implementar cargas de trabalho.

Comece gratuitamente