Conceda funções à sua conta de serviço

Quando os programadores pré-visualizam e implementam aplicações, podem usar uma conta de serviço existente ou o App Design Center pode criar automaticamente uma nova conta de serviço. Se quiser que os programadores usem a sua conta de serviço, tem de fazer o seguinte:

  • Adicione associações de políticas IAM à conta de serviço e à conta de utilizador.
  • Conceda à conta de serviço as funções necessárias para implementar cada recurso.
  • Adicione autorizações à conta de serviço para implementar fora do projeto onde a conta de serviço foi criada.
  • Atualize as políticas da sua organização para permitir a utilização de contas de serviço em vários projetos.

Para configurar as suas contas de serviço, faça o seguinte:

  1. Adicione uma associação de política IAM para a função de roles/iam.serviceAccountUser para o agente de serviço à sua conta de serviço:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --member="serviceAccount:service-SERVICE_ACCOUNT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountUser"
    

    Substitua o seguinte:

    • SERVICE_ACCOUNT_EMAIL: o email da sua conta de serviço. Por exemplo, my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com.
    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do projeto que contém a sua conta de serviço.
    • SERVICE_ACCOUNT_PROJECT_NUMBER: o número do projeto que contém a sua conta de serviço.
  2. Adicione uma associação de política de IAM para a função de roles/iam.serviceAccountUser para um utilizador à sua conta de serviço:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    Substitua o seguinte:

    • SERVICE_ACCOUNT_EMAIL: o email da sua conta de serviço. Por exemplo, my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com.
    • USER_EMAIL: o email do utilizador que faz a implementação.
  3. No projeto que tem a sua conta de serviço, adicione associações de políticas de IAM para as funções de agente de serviço necessárias no projeto de gestão que contém o seu espaço:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/apphub.editor"
    
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/config.agent"
    
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageAdmin"
    

    Substitua o seguinte:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do projeto que contém a sua conta de serviço.
    • MANAGEMENT_PROJECT_NUMBER: O número do projeto de gestão que contém o seu espaço.
  4. No projeto que tem a sua conta de serviço, certifique-se de que a iam.disableCrossProjectServiceAccountUsage restrição da política da organização não é aplicada. Esta restrição é aplicada por predefinição.

    Para desativar a aplicação da restrição da política da organização, execute o seguinte comando:

    gcloud resource-manager org-policies disable-enforce \
       iam.disableCrossProjectServiceAccountUsage \
       --project=SERVICE_ACCOUNT_PROJECT_ID
    

    Substitua o seguinte:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do projeto que contém a sua conta de serviço.
  5. Conceda à sua conta de serviço as funções necessárias para implementar recursos em projetos. As funções necessárias são apresentadas quando os programadores implementam aplicações.

    Por exemplo, para conceder a função roles/run.admin, adicione a seguinte associação de políticas:

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:service-DEPLOYMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
        --role="roles/run.admin"
    

    Substitua o seguinte:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do projeto que contém a sua conta de serviço.
    • DEPLOYMENT_PROJECT_NUMBER: o número do projeto onde está a implementar recursos.
  6. O App Design Center usa o Infrastructure Manager para implementar aplicações na consola. Para usar a sua própria conta de serviço para implementação com o Infrastructure Manager, conclua os passos em Conceda acesso a projetos.

  7. Se a aplicação que está a implementar contiver componentes privados que importou através de uma ligação do Developer Connect, faça o seguinte:

    Conceda à sua conta de serviço a função roles/iam.serviceAccountTokenCreator no projeto onde criou a conta de serviço.

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/iam.serviceAccountTokenCreator"
    

    Substitua o seguinte:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do projeto que contém a sua conta de serviço.
    • SERVICE_ACCOUNT_EMAIL: o email da sua conta de serviço. Por exemplo, my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com.

O que se segue?