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: esta conta é usada para todos os serviços implantados ao não configurar 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.

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.

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.

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.

Conta de serviço padrão do App Engine

Por padrão, a conta de serviço PROJECT_ID@appspot.gserviceaccount.com criada automaticamente tem o papel de Editor no projeto. Se você implantar o aplicativo do App Engine usando a conta de serviço PROJECT_ID@appspot.gserviceaccount.com criada automaticamente, ele poderá acessar todos os recursos no projeto.

Para a conta de serviço PROJECT_ID@appspot.gserviceaccount.com criada automaticamente, ao usar uma restrição de política da organização para impedir que o papel padrão do Editor seja concedido automaticamente, será preciso atualizar os papéis manualmente. Os papéis concedidos à conta de serviço padrão do App Engine precisam permitir que o aplicativo acesse os recursos necessários. Para saber como conceder papéis a contas de serviço e outros principais, consulte Gerenciar o acesso a contas de serviço.

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