Como usar uma conta de serviço personalizada

É possível configurar o AI Platform Prediction para usar uma conta de serviço de sua escolha ao executar um código personalizado para exibir previsões. Especificamente, é possível determinar uma conta de serviço personalizada ao realizar uma das seguintes ações:

Com uma conta de serviço personalizada, é possível personalizar quais recursos do Google Cloud seu código de exibição personalizado pode acessar sem conceder permissões excessivamente amplas à conta de serviço que o AI Platform Prediction usa por padrão.

O guia se concentra nas permissões dos recursos do AI Platform Prediction para acessar outros recursos do Google Cloud. Para saber mais sobre as permissões necessárias para acessar os recursos do AI Platform Prediction, leia Controle de acesso.

Noções básicas sobre o agente de serviço

Por padrão, o AI Platform Prediction usa um agente de serviço para exibir previsões on-line de versões de modelo que não usam contêineres personalizados. Esse agente de serviço é identificado por um endereço de e-mail com o seguinte formato:

service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

PROJECT_NUMBER é substituído pelo número do projeto do seu projeto do Google Cloud.

Encontre a conta de serviço correspondente ao seu projeto no console do Google Cloud ou usando a Google Cloud CLI:

Console do Google Cloud

Acesse a página IAM no console Google do Cloud, selecione Incluir concessões de papéis fornecidas pelo Google e encontre o principal que corresponde ao endereço de e-mail descrito anteriormente nesta seção. A conta de serviço também tem o nome Google Cloud ML Engine Service Agent.

Acessar a página "IAM"

gcloud

Execute o seguinte comando em um ambiente Shell em que você inicializou a CLI gcloud:

gcloud projects get-iam-policy PROJECT_ID \
  --flatten="bindings[].members" \
  --format="table(bindings.members)" \
  --filter="bindings.role:roles/ml.serviceAgent" \
  | grep serviceAccount:

Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

Esse comando gera o seguinte:

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT é o endereço de e-mail do agente de serviço do AI Platform do projeto.

Esse agente de serviço tem permissões apropriadas para a maioria das versões do modelo. Por exemplo, é possível ler buckets do Cloud Storage no mesmo projeto do Google Cloud.

Se você precisar que suas rotinas de previsão personalizadas sejam executadas com permissões adicionais, atribua outros papéis de gerenciamento de identidade e acesso (IAM, na sigla em inglês) a essa conta de serviço. Por exemplo, é possível conceder acesso a buckets do Cloud Storage em outros projetos do Google Cloud.

Conta de serviço usada por padrão em contêineres personalizados

Se a versão do modelo usar um contêiner personalizado, por padrão, o contêiner não será executado com o agente de serviço do AI Platform. Em vez disso, ele é executado usando uma conta de serviço gerenciada pelo AI Platform Prediction. Esta conta de serviço tem permissão para ler artefatos do modelo que o AI Platform Prediction disponibiliza em um URI armazenado no AIP_STORAGE_URI variável de ambiente para criar um anexo da VLAN de monitoramento.

Não é possível personalizar as permissões dessa conta de serviço usada por padrão em contêineres personalizados. Se você quiser personalizar as permissões disponíveis para o contêiner personalizado, leia as seções a seguir para usar uma conta de serviço personalizada com a versão do modelo.

Como usar uma conta de serviço personalizada

Se você quiser conceder ou limitar as permissões do Google Cloud para uma versão de modelo específica, use uma conta de serviço personalizada em vez do agente de serviço.

Para fazer isso, primeiro configure uma conta de serviço personalizada. Em seguida, especifique a conta de serviço personalizada ao criar uma versão de modelo.

Configurar uma conta de serviço personalizada

Para configurar uma conta de serviço personalizada, faça o seguinte:

  1. Crie uma conta de serviço gerenciada pelo usuário.

  2. Conceda os novos papéis do IAM da conta de serviço para fornecer ao código de exibição de previsão as permissões necessárias para a execução.

  3. Se a conta de serviço gerenciada pelo usuário estiver em um projeto diferente das versões do modelo, configure a conta de serviço gerenciada pelo usuário para ser anexada à versões de modelo.

  1. Conceda ao agente de serviço do AI Platform do seu projeto o papel de administrador da conta de serviço (roles/iam.serviceAccountAdmin) para a nova conta de serviço personalizada. Para isso, use a CLI gcloud para executar o seguinte comando:

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \
      CUSTOM_SERVICE_ACCOUNT
    

    Nesse comando, substitua os seguintes marcadores:

    • GOOGLE_MANAGED_SERVICE_ACCOUNT: o endereço de e-mail do Google Cloud ML Engine Service Agent do projeto. Saiba como encontrar esse endereço de e-mail em uma seção anterior deste guia.

    • CUSTOM_SERVICE_ACCOUNT: o endereço de e-mail da nova conta de serviço gerenciada pelo usuário que você acabou de criar em uma etapa anterior desta seção.

Especificar a conta de serviço personalizada para a versão do modelo

Para dar acesso ao código de exibição de previsão a uma conta de serviço personalizada, especifique o campo serviceAccount ao criar uma versão do modelo. Lembre-se de que a versão do modelo precisa usar um contêiner personalizado ou uma rotina de previsão personalizada.

Se você usar a CLI gcloud para criar uma versão de modelo, use a sinalização --service-account com o componente gcloud beta. Exemplo:

gcloud beta ai-platform versions create VERSION \
  --service-account CUSTOM_SERVICE_ACCOUNT \
  ...

Substitua:

A seguir