As aplicações do App Engine requerem uma conta de serviço para aceder a outros Google Cloud serviços e executar tarefas.
Existem 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 a conta de serviço predefinida ao nível da app ou por versão:
Conta de serviço predefinida ao nível da app: esta conta de serviço é usada para todos os seus serviços implementados quando não configura uma "conta de serviço por versão". Pode optar por atribuir uma conta de serviço que criou ou usar a conta de serviço predefinida criada automaticamente que é criada quando implementa inicialmente um serviço no seu projeto do Google Cloud. Por exemplo, a conta de serviço predefinida do App Engine (
PROJECT_ID@appspot.gserviceaccount.com
).Conta de serviço por versão: uma conta de serviço configurada como a identidade para uma versão específica do seu serviço implementado. Quando implementa uma versão existente ou uma nova versão, pode especificar uma conta de serviço para atuar como a identidade dessa versão. Por exemplo, se uma versão exigir autorizações diferentes da conta de serviço predefinida ao nível da app, pode atribuir uma conta de serviço específica dessa versão.
Veja as suas contas de serviço configuradas
Para ver a conta de serviço predefinida ao nível da app atual, execute o comando gcloud app describe
.
Para ver a conta de serviço usada por uma versão implementada:
gcloud
Execute o comando gcloud app versions describe
:
gcloud app versions describe VERSION_ID --service=SERVICE_NAME
Substituição:
VERSION_ID
com o ID da versão.SERVICE_NAME
com o nome do serviço que criou.
Consola
- Aceda ao separador Versões do App Engine na consola. Aceda a Versões
- Localize o endereço de email da conta de serviço específica da versão do App Engine. Exemplo:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Atribua uma conta de serviço predefinida ao nível da app
Por predefinição, a conta de serviço predefinida ao nível da app é a conta de serviço PROJECT_ID@appspot.gserviceaccount.com
criada automaticamente. Pode atribuir outra conta de serviço para atuar como a conta de serviço predefinida ao nível da app através da CLI Google Cloud, daGoogle Cloud consola ou da API Admin.
Especifique uma conta de serviço predefinida ao nível da app durante a criação da app
Durante o processo de criação inicial da aplicação App Engine, pode optar por atribuir uma conta de serviço que criou ou usar a conta de serviço PROJECT_ID@appspot.gserviceaccount.com
criada automaticamente para atuar como predefinição.
Para criar a sua aplicação do App Engine e atribuir uma conta de serviço predefinida ao nível da app, pode usar 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
Substituição:
SERVICE_ACCOUNT_NAME
com o nome da conta de serviço que criou.PROJECT_ID
com o ID do Google Cloud projeto no qual quer atribuir a conta de serviço.
Consola
Aceda à página do App Engine:
Crie um Google Cloud projeto.
Na secção Criar app, selecione uma conta de serviço em Identidade e acesso à API.
Atualize a conta de serviço predefinida ao nível da app para a sua app
Para atualizar a conta de serviço predefinida ao nível da app para a sua aplicação, pode usar 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
Substituição:
SERVICE_ACCOUNT_NAME
com o nome da conta de serviço que criou.PROJECT_ID
com o ID do Google Cloud projeto no qual quer atribuir a conta de serviço.
Cada nova versão que implementar a partir deste momento usa a conta de serviço predefinida ao nível da app, a menos que atribua explicitamente uma conta de serviço específica da versão.
Consola
Aceda ao separador Definições da aplicação do App Engine na consola e clique em Editar definições da aplicação.
Escolha uma conta de serviço predefinida ao nível da app em Selecionar uma conta de serviço e clique em Guardar.
É redirecionado para o separador Definições da aplicação, onde pode ver o endereço de email da conta de serviço predefinida ao nível da app atualizada. Exemplo:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
.Cada nova versão que implementar a partir deste momento usa a conta de serviço predefinida ao nível da app, a menos que atribua explicitamente uma conta de serviço específica da versão.
Implemente com uma conta de serviço específica da versão
Só pode definir uma conta de serviço específica da versão durante a implementação de novas versões. A utilização de uma conta de serviço específica da versão permite-lhe conceder diferentes privilégios a cada versão da aplicação, com base nas tarefas específicas que executa, e evitar conceder mais privilégios do que o necessário.
Tem de ter uma conta de serviço existente antes de implementar a sua aplicação. A conta de serviço específica da versão tem de estar no mesmo projeto onde implementa a sua aplicação.
Após 15 de maio de 2024, o Artifact Registry aloja imagens para o domínio gcr.io
em projetos sem utilização anterior do Container Registry.Google Cloud Se implementar uma aplicação existente num novo projeto criado após esta data, a conta de serviço pode não ter as autorizações necessárias para implementar a app. Para conceder as autorizações necessárias, consulte o artigo Implementar no App Engine.
Defina uma conta de serviço específica da versão
gcloud
Execute o comando gcloud app deploy
:
gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Substituição:
SERVICE_ACCOUNT_NAME
com o nome da conta de serviço que criou.PROJECT_ID
com o ID do Google Cloud projeto no qual quer atribuir a conta de serviço. A conta de serviço específica da versão tem de estar no mesmo projeto onde implementa a sua aplicação.
app.yaml
No ficheiro
app.yaml
, especifique a sua conta de serviço adicionando o elemento
service_account
:
service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Substituição:
SERVICE_ACCOUNT_NAME
com o nome da conta de serviço que criou.PROJECT_ID
com o ID do Google Cloud projeto no qual quer atribuir a conta de serviço. A conta de serviço específica da versão tem de estar no mesmo projeto onde implementa a sua aplicação.
Conta de serviço predefinida do App Engine
A conta de serviço predefinida do App Engine é criada automaticamente quando usa o App Engine.
Consoante a configuração da política da organização, a conta de serviço predefinida pode receber automaticamente a função de editor no seu projeto. Recomendamos vivamente que desative a concessão automática de funções
aplicando a restrição da política da organização iam.automaticIamGrantsForDefaultServiceAccounts
. Se tiver criado a sua organização após 3 de maio de 2024, esta restrição é aplicada por predefinição.
Se desativar a concessão automática de funções, tem de decidir que funções conceder às contas de serviço predefinidas e, em seguida, conceder estas funções.
Se a conta de serviço predefinida já tiver a função de editor, recomendamos que substitua a função de editor por funções menos permissivas.Para modificar as funções da conta de serviço em segurança, use o Simulador de políticas para ver o impacto da alteração e, em seguida, conceda e revogue as funções adequadas.
Para saber como conceder funções a contas de serviço e outros responsáveis, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Após 15 de maio de 2024, o Artifact Registry aloja imagens para o domínio gcr.io
em projetos sem utilização anterior do Container Registry.Google Cloud Se implementar uma aplicação existente num novo projeto criado após esta data, a conta de serviço pode não ter as autorizações necessárias para implementar a app. Para conceder as autorizações necessárias, consulte o artigo Implementar no App Engine.
Para modificar autorizações, eliminar e restaurar as suas contas de serviço, consulte o artigo Criar e gerir contas de serviço.