Configurar contas de serviço do App Engine

Os aplicativos do App Engine exigem uma conta de serviço para acessar outros serviços do Google Cloud e executar tarefas.

Há dois tipos de contas de serviço no App Engine, e qualquer conta de serviço no seu projeto do Cloud pode ser atribuída para atuar como padrão ou por versão no nível do aplicativo:

  • Conta de serviço padrão no nível do aplicativo: é usada para todos os serviços implantados quando você não configura uma "conta de serviço por versão". É possível atribuir uma conta de serviço que você criou ou usar a conta de serviço padrão criada automaticamente que é criada quando você implanta inicialmente um serviço no projeto do Cloud. Por exemplo, a conta de serviço padrão do App Engine (PROJECT_ID@appspot.gserviceaccount.com).

  • Conta de serviço por versão: é uma conta de serviço configurada como identidade de uma versão específica do serviço implantado. Ao implantar uma versão atual ou uma nova versão, é possível especificar uma conta de serviço para atuar como a identidade dessa versão. Por exemplo, se uma versão exigir permissões diferentes da conta de serviço padrão no nível do aplicativo, atribua uma conta de serviço específica para essa versão.

Ver as contas de serviço configuradas

Para ver a conta de serviço padrão atual do aplicativo, execute o comando gcloud app describe.

Para ver a conta de serviço usada por uma versão implantada:

gcloud

Execute o comando gcloud app versions describe:

  gcloud app versions describe VERSION_ID --service=SERVICE_NAME

Substitua:

  • VERSION_ID pelo ID da versão.
  • SERVICE_NAME pelo nome do serviço que você criou.

Console

  1. Acesse a guia Versões do App Engine no console. Acessar Versões
  2. Localize o endereço de e-mail da sua conta de serviço específica do App Engine. Exemplo: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Atribuir uma conta de serviço padrão no nível do aplicativo

Por padrão, a conta de serviço padrão no nível do aplicativo é a conta de serviço PROJECT_ID@appspot.gserviceaccount.com criada automaticamente. É possível atribuir outra conta de serviço para atuar como a conta de serviço padrão no nível do aplicativo usando a Google Cloud CLI, o Console do Google Cloud ou a API Admin.

Especificar uma conta de serviço padrão no nível do aplicativo durante a criação

Durante o processo de criação inicial do aplicativo do App Engine, é possível atribuir uma conta de serviço que foi criada ou use a conta de serviço PROJECT_ID@appspot.gserviceaccount.com como padrão.

Para criar um aplicativo do App Engine e atribuir uma conta de serviço padrão no nível do aplicativo, use uma das seguintes opções:

gcloud

Execute o comando gcloud app create:

gcloud app create --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você criou.
  • PROJECT_ID pelo ID do projeto do Google Cloud em que você quer atribuir a conta de serviço.

Console

  1. Acesse a página do App Engine:

    Acessar o App Engine

  2. Criar um projeto do Google Cloud.

  3. Na seção Criar aplicativo, selecione uma conta de serviço em Identidade e acesso à API.

Atualizar a conta de serviço padrão no nível do aplicativo

Para atualizar a conta de serviço padrão no seu aplicativo, use uma das seguintes opções para atribuir uma nova conta de serviço:

gcloud

Execute o comando gcloud app update.

    gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você criou.
  • PROJECT_ID pelo ID do projeto do Google Cloud em que você quer atribuir a conta de serviço.

Cada nova versão implantada a partir de agora usa a nova conta de serviço padrão no nível do aplicativo, a menos que você atribua explicitamente uma conta de serviço específica da versão.

Console

  1. Acesse a guia Configurações do aplicativo do App Engine no console e clique em Editar configurações do aplicativo.

    Acesse as configurações do aplicativo

  2. Escolha uma conta de serviço padrão no nível do aplicativo em Selecionar uma conta de serviço e clique em Salvar.

    Você será redirecionado para a guia Configurações do aplicativo, em que poderá ver o endereço de e-mail da sua conta de serviço padrão atualizada no nível do app. Por exemplo: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

    Cada nova versão implantada a partir de agora usa a nova conta de serviço padrão no nível do aplicativo, a menos que você atribua explicitamente uma conta de serviço específica da versão.

Implantar com uma conta de serviço específica da versão

Só é possível definir uma conta de serviço específica da versão durante a implantação de novas versões. O uso de uma conta de serviço específica de versão permite que você conceda privilégios diferentes a cada versão do aplicativo, com base nas tarefas específicas que ele realiza, e evita conceder mais privilégios do que o necessário.

É necessário ter uma conta de serviço atual antes de implantar o aplicativo. A conta de serviço específica da versão precisa estar no mesmo projeto em que você implanta o aplicativo.

Definir uma conta de serviço específica para a versão

gcloud

Execute o comando gcloud app deploy:

  gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você criou.
  • PROJECT_ID pelo ID do projeto do Google Cloud em que você quer atribuir a conta de serviço. Sua conta de serviço específica da versão precisa estar no mesmo projeto em que você implanta o aplicativo.

app.yaml

No arquivo app.yaml, especifique a conta de serviço adicionando o elemento service_account:

service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Substitua:

  • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você criou.
  • PROJECT_ID pelo ID do projeto do Google Cloud em que você quer atribuir a conta de serviço. Sua conta de serviço específica da versão precisa estar no mesmo projeto em que você implanta o aplicativo.

appengine-web.xml

Se você usar os ambientes de execução do Java e incluir os serviços agrupados legados do App Engine, especifique sua conta de serviço adicionando o elemento <service-account> no arquivo appengine-web.xml:

<service-account>SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com</service-account>

Substitua:

  • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você criou.
  • PROJECT_ID pelo ID do projeto do Google Cloud em que você quer atribuir a conta de serviço. Sua conta de serviço específica da versão precisa estar no mesmo projeto em que você implanta o aplicativo.

Conta de serviço padrão do App Engine

A conta de serviço padrão do App Engine é criada automaticamente quando você usa o App Engine.

Dependendo da configuração da política da organização, a conta de serviço padrão pode receber automaticamente o papel de Editor no projeto. É altamente recomendável desativar a concessão automática de papéis aplicando a restrição da política da organização iam.automaticIamGrantsForDefaultServiceAccounts. Se você criou a organização após 3 de maio de 2024, essa restrição será aplicada por padrão.

Se você desativar a concessão automática de papéis, precisará decidir quais papéis conceder às contas de serviço padrão e, em seguida, conceder esses papéis por conta própria.

Se a conta de serviço padrão já tiver o papel de Editor, recomendamos que você o substitua por papéis menos permissivos.Para modificar com segurança os papéis da conta de serviço, use o Simulador de política para conferir o impacto da mudança e, em seguida, conceda e revogue os papéis apropriados.

Para saber como conceder papéis a contas de serviço e outros principais, consulte Gerenciar o acesso a projetos, pastas e organizações.

Para modificar permissões, excluir e restaurar suas contas de serviço, consulte Como criar e gerenciar contas de serviço.