Como compartilhar modelos

O AI Platform Prediction usa o gerenciamento de identidade e acesso (IAM) para gerenciar o acesso aos recursos. Para conceder acesso a um recurso, atribua um ou mais papéis a um usuário, um grupo ou uma conta de serviço. Para compartilhar um modelo, conceda um papel que dê acesso ao seu modelo e às versões dele.

Este guia se concentra em dois papéis predefinidos do AI Platform Prediction usados para conceder acesso aos recursos de modelo:

  • Proprietário do modelo do AI Platform Prediction
  • Usuário do modelo do AI Platform Prediction

Para detalhes sobre outros papéis, consulte a explicação completa de todos os papéis de IAM disponíveis para uso com o AI Platform Prediction.

Antes de começar

Papéis do modelo

Os papéis Proprietário do modelo e Usuário do modelo do AI Platform Prediction concedem permissões variáveis a um recurso de modelo específico.

Compartilhe modelos com indivíduos ou serviços concedendo a eles o papel de usuário do modelo.

Título do papel Nome do papel Recursos
Proprietário do modelo do AI Platform Prediction

roles/ml.modelOwner

Acesso total ao modelo e às respectivas versões. Este papel é concedido automaticamente ao usuário que cria o modelo.

Usuário do modelo do AI Platform Prediction

roles/ml.modelUser

Permissões para ler o modelo e as respectivas versões e usá-los para predição. Esse papel facilita o compartilhamento de modelos específicos.

Como conceder acesso a um modelo a indivíduos e contas de serviço

Neste exemplo, você aprenderá a conceder os papéis de proprietário ou usuário do modelo a indivíduos e contas de serviço para editar a política de IAM de um modelo específico. É possível editar o arquivo de política usando a API, gcloud ou no console do Google Cloud.

Console

Compartilhar um modelo com um usuário ou conta de serviço

  1. Abra a página "Modelos" do AI Platform Prediction

    Abrir a página "Modelos" do AI Platform Prediction

  2. Marque a caixa de seleção de cada modelo que você quer compartilhar.

  3. Clique no botão Mostrar o painel de informações no canto superior direito para exibir a guia Permissões.

  4. No campo Adicionar membros, adicione as contas do Google dos usuários com que você quer compartilhar o modelo. Por exemplo, "email1@gmail.com".

  5. No campo suspenso Selecionar papel, escolha o papel que você quer adicionar aos usuários. Para compartilhar um recurso de modelo, selecione Proprietário do modelo do ML Engine ou Usuário do modelo do ML Engine.

    Se você não tem certeza sobre qual papel selecionar, veja mais detalhes sobre papéis de modelo.

  6. Clique no botão Adicionar ao lado do campo suspenso Selecionar um papel para finalizar suas seleções de papel.

  7. A página do console do Google Cloud é atualizada e exibe os papéis que você atribuiu na guia Permissões com uma lista de membros associados a eles.

Para interromper o compartilhamento de um modelo com um usuário ou conta de serviço, clique no ícone da lixeira ao lado do ID da conta.

gcloud

Como modificar uma política de modelo editando o arquivo de política diretamente

Use arquivos JSON ou YAML com os comandos gcloud. Este exemplo usa JSON.

  1. Acesse a política que você quer modificar e grave-a em um arquivo JSON.

    gcloud ai-platform models get-iam-policy <MODEL_NAME> --format json > iam.json
    
  2. Abra o arquivo de política (iam.json neste exemplo) ou execute cat iam.json para ver a política. Na política de exemplo a seguir, a conta de serviço é atribuída ao papel de proprietário do modelo do AI Platform Prediction para que tenha acesso à previsão on-line.

     {
        "bindings": [
        {
            "role": "roles/ml.modelOwner",
            "members": [
                "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                "user:email1@gmail.com"
            ]
        }
        ],
        "etag": "BwVUJYGz8M4=",
     }
    
  3. Com um editor de texto, atualize seu arquivo iam.json da maneira a seguir. Adicione um novo objeto à matriz bindings que define os membros do grupo e o papel desses membros. Por exemplo, para conceder o papel roles/ml.modelUser ao usuário email2@gmail.com, altere o exemplo mostrado acima da seguinte maneira:

     {
        "bindings": [
        {
            "role": "roles/ml.modelOwner",
            "members": [
                "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                "user:email1@gmail.com"
            ]
        },
        {
            "role": "roles/ml.modelUser",
            "members": [
                "user:email2@gmail.com"
            ]
        }
        ],
        "etag": "BwVUJYGz8M4=",
     }
    
  4. Atualize a política do projeto. Basta executar o seguinte comando:

    gcloud ai-platform models set-iam-policy <MODEL_NAME> iam.json
    
  5. O comando gera a política atualizada no YAML:

    bindings:
    - members:
      - user:email1@gmail.com
      - serviceAccount:otherapp@appspot.gserviceaccount.com
      role: roles/ml.modelOwner
    - members:
      - user:email2@gmail.com
      role: roles/ml.modelUser
    etag: BwVUJYGz8M4=
    

Como modificar uma política com comandos de vinculação de políticas

Use os comandos add-iam-policy-binding e remove-iam-policy-binding para conceder, revogar e atualizar o acesso aos modelos.

Compartilhar um modelo com um usuário

  1. Use o comando add-iam-policy-binding para adicionar um usuário a uma política de modelo atual do AI Platform Prediction da seguinte maneira:

    gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \
        --member user:email3@gmail.com --role roles/ml.modelUser
    

    A política atualizada é exibida:

        bindings:
        - members:
          - user:email1@gmail.com
          - serviceAccount:otherapp@appspot.gserviceaccount.com
          role: roles/ml.modelOwner
        - members:
          - user:email2@gmail.com
          - user:email3@gmail.com
          role: roles/ml.modelUser
        etag: BwVUJYGz8M4=
    

Compartilhar um modelo com um serviço

  1. Use o comando add-iam-policy-binding para adicionar uma conta de serviço a uma política de modelo atual do AI Platform Prediction da seguinte forma:

    gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \
        --member=serviceAccount:newserviceapp@appspot.gserviceaccount.com \
        --role=roles/ml.modelOwner
    

    A política atualizada é exibida:

      bindings:
      - members:
        - user:email1@gmail.com
        - serviceAccount:otherapp@appspot.gserviceaccount.com
        - serviceAccount:newserviceapp@appspot.gserviceaccount.com
        role: roles/ml.modelOwner
      - members:
        - user:email2@gmail.com
        - user:email3@gmail.com
        role: roles/ml.modelUser
      etag: BwVUJYGz8M4=
    

Parar de compartilhar um modelo

  1. Para parar de compartilhar um modelo com um usuário ou serviço, use o comando remove-iam-policy-binding para remover o usuário ou serviço de uma política de modelo atual do AI Platform Prediction. Neste exemplo, removemos o proprietário do modelo email1@gmail.com da política.

    gcloud ai-platform models remove-iam-policy-binding <MODEL_NAME> \
          --member=user:email1@gmail.com \
          --role=roles/ml.modelOwner
    

    A política atualizada é exibida:

      bindings:
      - members:
        - serviceAccount:otherapp@appspot.gserviceaccount.com
        - serviceAccount:newserviceapp@appspot.gserviceaccount.com
        role: roles/ml.modelOwner
      - members:
        - user:email2@gmail.com
        - user:email3@gmail.com
        role: roles/ml.modelUser
      etag: BwVUJYGz8M4=
    

API REST

Como modificar a política por meio da API JSON

  1. Acesse a política existente enviando a seguinte solicitação:

    GET https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy
    

    O comando retorna a política atual na resposta:

       {
          "bindings": [
          {
              "role": "roles/ml.modelOwner",
              "members": [
                  "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                  "user:email1@gmail.com"
              ]
          }
          ]
       }
    
  2. Depois que você tiver modificado a política, atualize-a ao enviar a seguinte solicitação:

    POST https://ml.googleapis.com/v1/projects/<project>/models/<model>:setIamPolicy
    

    O comando retorna a política atualizada na resposta. Neste exemplo, adicionamos o usuário email2@gmail.com como um usuário do modelo:

        {
           "policy": {
               "bindings": [
               {
                   "role": "roles/ml.modelOwner",
                   "members": [
                       "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                       "user:email1@gmail.com"
                   ]
               },
               {
                   "role": "roles/ml.modelUser",
                   "members": [
                       "user:email2@gmail.com"
                   ]
               }
               ]
           }
        }
    
  1. Para conseguir um token de acesso:

    gcloud auth print-access-token
    
  2. Ao chamar a API, transmita o valor do token como um token do portador em um cabeçalho de autorização:

    curl -s -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy