Controlar o acesso aos recursos da Vertex AI Feature Store

Para controlar o acesso aos recursos do Vertex AI Feature Store, defina as políticas do IAM em diferentes níveis da hierarquia de recursos. Exemplo:

  • Uma política no nível do projeto que o IAM aplica a todos os recursos em um projeto. É possível definir uma política para envolvidos no projeto a fim de conceder permissões aos usuários para ler todos os featurestores do projeto.

  • Uma política de IAM no nível de recurso permite que você especifique quais usuários podem acessar recursos específicos. Para um subconjunto de usuários, é possível definir uma política no nível do recurso para conceder permissões de gravação a featurestores específicos no projeto.

É possível definir políticas de gerenciamento de identidade e acesso (IAM) no nível do recurso nos seguintes recursos da Vertex AI Feature Store:

  • Featurestore: quando você define uma política de gerenciamento de identidade e acesso em um featurestore, a política se aplica ao featurestore e a todos os tipos de entidade criados nesse featurestore.

  • Tipo de entidade: quando você define uma política de gerenciamento de identidade e acesso em um tipo de entidade, a política se aplica apenas ao tipo de entidade e ao featurestore em que o tipo de entidade é criado.

Uma política do IAM inclui uma ou mais vinculações de papel que definem quais papéis do IAM são associados a quais principais. Um papel é um conjunto de permissões concedidas a um principal. A Vertex AI fornece papéis predefinidos que podem ser usados nas suas políticas. Também é possível criar papéis personalizados.

Considerações

Não é possível definir políticas de recursos condicionais. Por exemplo, não é possível criar uma política que conceda acesso a qualquer recurso que tenha ou tenha um nome que comece com uma string específica como testing.

Amostra de caso de uso

Por exemplo, imagine que sua organização tenha dois conjuntos de usuários. Um conjunto gerencia a infraestrutura principal em um papel de administrador de DevOps. Outro conjunto gerencia determinados tipos de entidades e os respectivos recursos, como um engenheiro de dados.

Um administrador de DevOps gerencia os featurestores e os tipos de entidade no nível do projeto. Quando os engenheiros de dados solicitam um novo tipo de entidade, um administrador de DevOps pode criar e delegar a propriedade desse tipo de entidade aos engenheiros de dados. Os engenheiros de dados podem gerenciar livremente atributos nos tipos de entidade que têm, mas não podem operar no featurestore ou em outros tipos de entidades. Esse controle, por exemplo, permite que os administradores de DevOps limitem o acesso a tipos de entidades que contêm informações confidenciais.

Nesse cenário, o administrador de DevOps tem o papel aiplatform.featurestoreAdmin para envolvidos no projeto. Então, quando um engenheiro de dados solicita um novo tipo de entidade, o administrador cria um novo tipo de entidade e atribui o papel aiplatform.entityTypeOwner do engenheiro de dados no nível do tipo de entidade (como uma política no nível do recurso).

Receber política IAM

É possível ver a política atual do IAM em um tipo de recurso ou entidade usando o console do Google Cloud ou a API.

IU da Web

  1. Na seção "Vertex AI" do Console do Google Cloud, acesse a página Recursos.

    Acessar a página Recursos

  2. Selecione uma região na lista suspensa Região.
  3. Na tabela de atributos, selecione um tipo de entidade ou featurestore na coluna Featurestore ou Tipo de entidade.
  4. Clique em Permissões.
  5. Para mostrar permissões no nível do recurso, desative Mostrar permissões herdadas.

    Os participantes com acesso ao recurso selecionado são agrupados por papel.

  6. Expanda um papel para ver quais principais estão atribuídos a ele.

REST

Para receber a política do IAM de um recurso, envie uma solicitação POST que use o método getIamPolicy. O exemplo a seguir recebe uma política de tipo de entidade.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION_ID: região em que featurestore está localizada, como us-central1.
  • PROJECT_ID: o ID do projeto.
  • FEATURESTORE_ID: ID do featurestore.
  • ENTITY_TYPE_ID: ID do tipo de entidade.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy

Para enviar a solicitação, escolha uma destas opções:

curl

execute o seguinte comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy"

PowerShell

execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

Definir uma política do IAM.

É possível definir uma política do IAM em um tipo de recurso ou entidade.

IU da Web

  1. Na seção "Vertex AI" do Console do Google Cloud, acesse a página Recursos.

    Acessar a página Recursos

  2. Selecione uma região na lista suspensa Região.
  3. Na tabela de atributos, selecione um tipo de entidade ou featurestore na coluna Featurestore ou Tipo de entidade.
  4. Clique em Permissões.
  5. Clique em Adicionar principal.
  6. Especifique um principal e um ou mais papéis a serem associados a ele.
  7. Clique em Save.

REST

Para definir a política do IAM em um recurso, envie uma solicitação POST que use o método setIamPolicy. O exemplo a seguir define uma política em um tipo de entidade.

A definição de uma política do IAM modifica qualquer política atual (as alterações não são anexadas). Se você quiser modificar a política existente de um recurso, use o método getIamPolicy para ver a política existente e faça modificações. Inclua a política modificada com etag na solicitação setIamPolicy.

Se você receber um código de erro 409, haverá uma solicitação SetIamPolicy simultânea que atualizou a política. Faça uma GetIamPolicy para receber a etag atualizada da política e, em seguida, inclua novamente a nova etag para fazer uma nova solicitação de SetIamPolicy.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION_ID: região em que featurestore está localizada, como us-central1.
  • PROJECT_ID: o ID do projeto.
  • FEATURESTORE_ID: ID do featurestore.
  • ENTITY_TYPE_ID: ID do tipo de entidade.
  • ROLE: um papel do IAM que inclui as permissões a serem concedidas, como roles/aiplatform.featurestoreDataViewer.
  • PRINCIPAL: o principal que tem as permissões do papel, como user:myuser@example.com.
  • ETAG: um valor de string usado para evitar que atualizações simultâneas de uma política sejam substituídas. Esse valor é retornado como parte da resposta de getIamPolicy.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy

Corpo JSON da solicitação:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "PRINCIPAL"
        ]
      },
      ...
    ],
    "etag": "ETAG"
  }
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a esta:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:user1@example.com"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataViewer",
      "members": [
        "user:user2@example.com",
        "user:user3@example.com"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataWriter",
      "members": [
        "user:user4@example.com",
      ]
    }
  ]
}

Verificar as permissões do IAM para um recurso

É possível verificar se o usuário atualmente autenticado tem permissões específicas do IAM para um tipo de featurestore ou de entidade.

REST

Para verificar se um usuário tem permissões específicas do IAM para um recurso, envie uma solicitação que use o método testIamPermissions. O exemplo a seguir permite testar se o usuário autenticado no momento tem um conjunto de permissões do IAM para um tipo de entidade.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION_ID: região em que featurestore está localizada, como us-central1.
  • PROJECT_ID: o ID do projeto.
  • FEATURESTORE_ID: ID do featurestore.
  • ENTITY_TYPE_ID: ID do tipo de entidade.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d

Corpo JSON da solicitação:

{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a seguinte. A resposta inclui apenas as permissões do corpo JSON da solicitação que estão disponíveis para o usuário autenticado no momento.
{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}