Configurar o ADC para um recurso com uma conta de serviço anexada

Alguns serviços do Google Cloud , como o Compute Engine, o App Engine e o Cloud Run functions, permitem anexar uma conta de serviço gerenciada pelo usuário a alguns tipos de recursos. Em geral, a anexação de uma conta de serviço acontece quando os recursos do serviço podem executar ou incluir códigos de aplicativo. Quando você anexa uma conta de serviço a um recurso, o código em execução no recurso pode usar essa conta de serviço como a própria identidade.

Anexar uma conta de serviço gerenciada pelo usuário é a maneira preferencial de fornecer credenciais ao ADC para códigos de produção em execução no Google Cloud.

Para receber ajuda ao determinar os papéis que você precisa fornecer à conta de serviço, consulte Escolher papéis predefinidos.

Para informações sobre quais recursos podem ser anexados a uma conta de serviço e ajuda para anexar a conta de serviço ao recurso, consulte a documentação do IAM sobre como anexar uma conta de serviço.

Configure a autenticação:

  1. Verifique se você tem o papel do IAM de criação de contas de serviço (roles/iam.serviceAccountCreator) e o papel de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin). Saiba como conceder papéis.
  2. Crie a conta de serviço:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Substitua SERVICE_ACCOUNT_NAME por um nome para a conta de serviço.

  3. Para conceder acesso ao projeto e aos recursos, conceda um papel à conta de serviço:

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

    Substitua:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
    • PROJECT_ID: o ID do projeto em que você criou a conta de serviço
    • ROLE: o papel a ser concedido
  4. Para conceder outro papel à conta de serviço, execute o comando que você fez na etapa anterior.
  5. Conceda ao principal o papel necessário para anexar a conta de serviço a outros recursos.

    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:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
    • PROJECT_ID: o ID do projeto em que você criou a conta de serviço
    • USER_EMAIL: o endereço de e-mail de uma Conta do Google

A seguir