É 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:
- Crie uma versão de modelo que use um contêiner personalizado.
- Crie uma versão de modelo que use uma rotina de previsão personalizada.
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
.
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:
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.
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.
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:
- VERSION: um nome para a versão do modelo.
- CUSTOM_SERVICE_ACCOUNT: o endereço de e-mail da conta de serviço gerenciada pelo usuário que você configurou em uma seção anterior deste guia.
- ...: outras opções para a versão do modelo.
A seguir
Saiba como criar uma versão de modelo que usa um contêiner personalizado.
Saiba como criar uma versão de modelo que usa uma rotina de previsão personalizada.
Saiba mais sobre as contas de serviço.