Conceder papéis à conta de serviço

Ao visualizar e implantar aplicativos, os desenvolvedores podem usar uma conta de serviço existente ou o App Design Center pode criar uma automaticamente. Se você quiser que os desenvolvedores usem sua conta de serviço, faça o seguinte:

  • Adicione vinculações de política do IAM à conta de serviço e à conta de usuário.
  • Conceda à conta de serviço as funções necessárias para implantar cada recurso.
  • Adicione permissões à conta de serviço para fazer implantações fora do projeto em que ela foi criada.
  • Atualize as políticas da organização para permitir que as contas de serviço sejam usadas em projetos.

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

  1. Adicione uma vinculação de política do IAM para o papel de roles/iam.serviceAccountUser do 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:

    • SERVICE_ACCOUNT_EMAIL: o e-mail 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 que contém sua conta de serviço.
    • SERVICE_ACCOUNT_PROJECT_NUMBER: o número do projeto que contém sua conta de serviço.
  2. Adicione uma vinculação de política do IAM para a função de roles/iam.serviceAccountUser de um usuário à 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:

    • SERVICE_ACCOUNT_EMAIL: o e-mail da sua conta de serviço. Por exemplo, my-service-account@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com.
    • USER_EMAIL: o e-mail do usuário que realiza a implantação.
  3. No projeto que tem sua conta de serviço, adicione vinculações de política do IAM para os papéis de agente de serviço necessários no projeto de gerenciamento que contém 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:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto que contém sua conta de serviço.
    • MANAGEMENT_PROJECT_NUMBER: o número do projeto de gerenciamento que contém seu espaço.
  4. No projeto que tem sua conta de serviço, verifique se a restrição de política da organização iam.disableCrossProjectServiceAccountUsage não foi aplicada. Essa restrição é aplicada por padrão.

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

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

    Substitua:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto que contém sua conta de serviço.
  5. Conceda à sua conta de serviço os papéis necessários para implantar recursos em projetos. Os papéis necessários são mostrados quando os desenvolvedores implantam aplicativos.

    Por exemplo, para conceder o papel roles/run.admin, adicione a seguinte vinculação de política:

    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:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto que contém sua conta de serviço.
    • DEPLOYMENT_PROJECT_NUMBER: o número do projeto em que você está implantando recursos.
  6. O App Design Center usa o Infrastructure Manager para implantar aplicativos no console. Para usar sua própria conta de serviço para implantação com o Infrastructure Manager, siga as etapas em Conceder acesso a projetos.

  7. Se o aplicativo que você está implantando tiver componentes particulares importados por uma conexão do Developer Connect, faça o seguinte:

    Conceda à conta de serviço o papel roles/iam.serviceAccountTokenCreator no projeto em que ela foi criada.

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

    Substitua:

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

A seguir