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
- Acesse a guia Versões do App Engine no console. Acessar Versões
- 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
Acesse a página do App Engine:
Criar um projeto do Google Cloud.
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
Acesse a guia Configurações do aplicativo do App Engine no console e clique em Editar configurações do aplicativo.
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
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 ver o impacto da alteração 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.