[Hyperdrive] Revisar permissões para uso do BQ ML

Description

Objetivo


  • Revisar permissões necessárias para o uso do BQ ML integrado as pipelines Carol para geração de embeddings.

  • Criar conexão com o Vertex para tenants com a feature habilitada.

Critérios de Aceite


  • Precisamos que as seguintes permissões sem atribuídas durante o processo de habilitação do uso de AI por uma tenant:

  • Deveremos criar um parâmetro na tenant “allowedUsageAI”, e com isso, deverá ser efetuado as habilitações descritas abaixo.

  • Ao habilitar o IAM em uma tenant com o allowedUsageAI ativo:

    • Usuário: conforme aplicado no terraform, somente para usuários IAM da Carol.

    • Role: bigquery.connections.create, bigquery.connections.delete

    • Motivo: permitir criar a conexão, que define o modelo AI (embedding) que será utilizado.

  • Ao habilitar o allowedUsageAI em uma tenant, habilitar os recursos necessários no projeto GCP da tenant para uso do Vertex AI:

    • Recursos:

      • Vertex AI API

      • Cloud Storage

      • Dataform API

    • Motivo: permitir criar a conexão com o Vertex AI.

  • Ao habilitar o allowedUsageAI em uma tenant, devemos criar uma connection e conceder à SA da connection a seguinte role:

    • Vertex AI User

    • Motivo: permitir criar o modelo ML.

  • Ao inativar a flag “allowedUsageAI“ deve ser desativado o recurso abaixo do projeto GCP:

    • Vertex AI.

Comandos executados durante os testes acima:

-- bq mk \--   --connection \--   --location=us \--   --project_id=carol-6f77a449debc4270ac8b \--   --connection_type=CLOUD_RESOURCE \--   vertex_remote_conn  -- ####################################################### CREATE OR REPLACE MODEL  `carol-6f77a449debc4270ac8b.custom_data.embedding_model`REMOTE WITH CONNECTION  `carol-6f77a449debc4270ac8b.us.vertex_remote_conn`OPTIONS (  ENDPOINT = 'text-embedding-004'); -- ####################################################### CREATE TABLE IF NOT EXISTS  `carol-6f77a449debc4270ac8b.custom_data.documentos` (  id        INT64,  titulo    STRING,  conteudo  STRING,  embedding ARRAY<FLOAT64>  -- vetor gerado pelo modelo);