Criar contas de serviço

Nesta página, explicamos como criar contas de serviço usando a API Identity and Access Management (IAM), o console do Google Cloud e a ferramenta de linha de comando gcloud.

Por padrão, cada projeto pode ter até 100 contas de serviço que controlam o acesso aos seus recursos. Se necessário, é possível solicitar um aumento de cota. Saiba mais sobre cotas e limites.

Antes de começar

  • Enable the IAM API.

    Enable the API

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

    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 as amostras de C++ nesta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. 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.

    C#

    Para usar os exemplos .NET 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.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. 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.

    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.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. 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.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. 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.

    1. Install the Google Cloud CLI.
    2. To initialize the gcloud CLI, run the following command:

      gcloud init
    3. 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

Funções exigidas

Para conseguir as permissões necessárias para criar contas de serviço, peça ao administrador para conceder a você o papel para Criar contas de serviço (roles/iam.serviceAccountCreator) do IAM projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Se você quer conceder acesso às contas de serviço recém-criadas ao projeto, também precisa do papel de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin).

Crie uma conta de serviço

Ao criar uma conta de serviço, é necessário fornecer um código alfanumérico (SERVICE_ACCOUNT_NAME nos exemplos abaixo), como my-service-account. O código precisa ter entre 6 e 30 caracteres e pode conter caracteres alfanuméricos minúsculos e traços. Depois de criar uma conta de serviço, não é possível alterar o nome dela.

O nome da conta de serviço aparece no endereço de e-mail provisionado durante a criação, no formato SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

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

Você também fornece as seguintes informações ao criar 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 projeto do Google Cloud.

Depois de criar uma conta de serviço, talvez seja necessário aguardar 60 segundos ou mais para usar essa conta. Esse comportamento ocorre porque as operações de leitura têm consistência eventual e pode levar algum tempo para a nova conta de serviço ficar visível. Se você tentar ler ou usar uma conta de serviço imediatamente depois de criá-la e receber um erro, será possível repetir a solicitação com espera exponencial.

Console

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

    Acesse "Criar conta de serviço"

    As etapas restantes serão exibidas automaticamente no console do Google Cloud.

  2. Selecione um projeto do Google Cloud.
  3. Insira um nome de conta de serviço a ser exibido no Console do Google Cloud.

    O console do Google Cloud gerará um ID de conta de serviço com base nesse nome. Edite o ID se for necessário. Não será possível alterar o ID depois.

  4. Opcional: digite uma descrição da conta de serviço.
  5. Se você não quiser definir controles de acesso agora, clique em Concluído para finalizar a criação da conta de serviço. Para definir os controles de acesso agora, clique em Criar e continuar e avance para a próxima etapa.
  6. Opcional: escolha um ou mais papéis do IAM para conceder à conta de serviço no projeto.
  7. Quando você terminar de adicionar papéis, clique em Continuar.
  8. Opcional: no campo Papel de usuários da conta de serviço, adicione participantes que precisam anexar a conta de serviço a outros recursos.
  9. Opcional: no campo Papel de administrador da conta de serviço, adicione membros que precisam gerenciar a conta de serviço.
  10. Clique em Concluído para terminar a criação da 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 ser exibido no Console do Google Cloud

  3. Opcional: para conceder à conta de serviço um papel do IAM no 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 papel, como roles/compute.osLogin

  4. Opcional: para permitir que os usuários anexem a conta de serviço a outros recursos, execute o comando gcloud iam service-accounts add-iam-policy-binding para conceder a um usuário o papel de usuário 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 e-mail do usuário

C++

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

Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte 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 de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API C# do IAM.

Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte 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 de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Go do IAM.

Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte 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 de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Java do IAM.

Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte 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 de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Python do IAM.

Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.

import os

from google.oauth2 import service_account  # type: ignore
import googleapiclient.discovery  # type: ignore

def create_service_account(project_id: str, name: str, display_name: str) -> dict:
    """Creates a service account."""

    credentials = service_account.Credentials.from_service_account_file(
        filename=os.environ["GOOGLE_APPLICATION_CREDENTIALS"],
        scopes=["https://www.googleapis.com/auth/cloud-platform"],
    )

    service = googleapiclient.discovery.build("iam", "v1", credentials=credentials)

    my_service_account = (
        service.projects()
        .serviceAccounts()
        .create(
            name="projects/" + project_id,
            body={"accountId": name, "serviceAccount": {"displayName": display_name}},
        )
        .execute()
    )

    print("Created service account: " + my_service_account["email"])
    return my_service_account

REST

O método serviceAccounts.create cria 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.
  • SA_NAME: o ID alfanumérico da sua conta de serviço. Esse nome precisa ter entre 6 e 30 caracteres e pode conter caracteres alfanuméricos minúsculos e traços.
  • SA_DESCRIPTION: opcional. Uma descrição da conta de serviço.
  • SA_DISPLAY_NAME: um nome legível para a conta de serviço.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "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, atribua a ela um ou mais papéis para que ela possa atuar em seu nome.

Além disso, se a conta de serviço precisar acessar recursos em outros projetos, geralmente é necessário ativar as APIs desses recursos no projeto em que você criou a conta de serviço.

A seguir

Faça um teste

Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.

Comece a usar gratuitamente