Pode controlar o acesso aos recursos do Vertex AI Feature Store (antigo) através da definição de políticas de IAM em diferentes níveis da hierarquia de recursos. Por exemplo:
Uma política de IAM ao nível do projeto aplica-se a todos os recursos num projeto. Pode definir uma política ao nível do projeto para conceder autorizações aos utilizadores para ler todas as featurestores no seu projeto.
Uma política de IAM ao nível do recurso permite-lhe especificar que utilizadores podem aceder a recursos específicos. Para um subconjunto de utilizadores, pode definir uma política ao nível do recurso para conceder autorizações de escrita a featurestores específicas no seu projeto.
Pode definir políticas de gestão de identidade e de acesso (IAM) ao nível do recurso nos seguintes recursos do Vertex AI Feature Store (antigo):
Featurestore: quando define uma política de Identity and Access Management num featurestore, a política aplica-se ao featurestore e a todos os tipos de entidades criados nesse featurestore.
Tipo de entidade: quando define uma política de gestão de identidades e acessos num tipo de entidade, a política aplica-se apenas ao tipo de entidade e ao Feature Store onde o tipo de entidade é criado.
Uma política do IAM inclui uma ou mais associações de funções que definem que funções do IAM estão associadas a que principais. Uma função é um conjunto de autorizações que concede a um principal. O Vertex AI oferece funções predefinidas que pode usar nas suas políticas. Em alternativa, pode criar as suas próprias funções personalizadas.
Considerações
Não é possível definir políticas de recursos condicionais. Por exemplo, não pode criar uma política que conceda acesso a qualquer recurso que tenha ou venha a ter um nome que comece por uma determinada string, como testing
.
Exemplo de utilização
Por exemplo, imagine que a sua organização tem dois conjuntos de utilizadores. Um conjunto gere a sua infraestrutura principal numa função de administrador de DevOps. Outro conjunto gere tipos de entidades específicos e as respetivas funcionalidades, como um engenheiro de dados.
Um administrador de DevOps gere os featurestores e os tipos de entidades ao nível do projeto. Quando os engenheiros de dados pedem 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 gerir livremente as funcionalidades nos tipos de entidades que detêm, mas não podem operar no Feature Store nem noutros tipos de entidades. Este controlo, por exemplo, permite que os administradores de DevOps limitem o acesso a tipos de entidades que contêm informações confidenciais.
Neste cenário, o administrador de DevOps tem a função de aiplatform.featurestoreAdmin
ao nível do projeto. Em seguida, quando um engenheiro de dados pede um novo tipo de entidade, o administrador cria um novo tipo de entidade e, em seguida, atribui a função aiplatform.entityTypeOwner
ao engenheiro de dados ao nível do tipo de entidade (como uma política ao nível do recurso).
Obtenha a política IAM
Pode ver a política de IAM atual num featurestore ou num tipo de entidade através da Google Cloud consola ou da API.
IU da Web
- Na secção Vertex AI da Google Cloud consola, aceda à página Funcionalidades.
- Selecione uma região na lista pendente Região.
- Na tabela de funcionalidades, selecione um Feature Store ou um tipo de entidade na coluna Feature Store ou Tipo de entidade.
- Clique em Autorizações.
- Para mostrar as autorizações ao nível do recurso, desative a opção Mostrar autorizações
herdadas.
Os principais que têm acesso ao recurso selecionado são agrupados por função.
- Expanda uma função para ver que responsáveis estão atribuídos a essa função.
REST
Para obter a política IAM de um recurso, envie um pedido POST que use o método getIamPolicy
. O exemplo seguinte obtém uma política de tipo de entidade.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde o Feature Store está localizado, como
us-central1
. - PROJECT_ID: o seu ID do projeto.
- FEATURESTORE_ID: ID da Feature Store.
- 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 o seu pedido, 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
Deve receber uma resposta JSON semelhante à seguinte:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.entityTypeOwner", "members": [ "user:example@example.com" ] } ] }
Defina uma Política IAM
Pode definir uma Política IAM num Feature Store ou num tipo de entidade.
IU da Web
- Na secção Vertex AI da Google Cloud consola, aceda à página Funcionalidades.
- Selecione uma região na lista pendente Região.
- Na tabela de funcionalidades, selecione um Feature Store ou um tipo de entidade na coluna Feature Store ou Tipo de entidade.
- Clique em Autorizações.
- Clique em Adicionar principal.
- Especifique um principal e uma ou mais funções a associar ao principal.
- Clique em Guardar.
REST
Para definir a política IAM num recurso, envie um pedido POST que use o método setIamPolicy
. O exemplo seguinte define uma política num tipo de entidade.
A definição de uma política IAM substitui qualquer política existente (as alterações não são anexadas). Se quiser modificar a política existente de um recurso, use o método getIamPolicy
para obter a respetiva política existente e, em seguida, faça modificações. Inclua a política modificada juntamente com o etag
no
seu pedido setIamPolicy
.
Se receber um código de erro 409
, significa que houve um pedido SetIamPolicy
em simultâneo que atualizou a política. Faça um pedido GetIamPolicy
para obter o etag atualizado da política e, em seguida, volte a tentar o pedido SetIamPolicy
incluindo o novo etag.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde o Feature Store está localizado, como
us-central1
. - PROJECT_ID: o seu ID do projeto.
- FEATURESTORE_ID: ID da Feature Store.
- ENTITY_TYPE_ID: ID do tipo de entidade.
- ROLE: uma função de IAM que inclui as autorizações
a conceder, como
roles/aiplatform.featurestoreDataViewer
. - PRINCIPAL: o principal ao qual são concedidas as autorizações da função, como
user:myuser@example.com
. - ETAG: um valor de string usado para impedir que as atualizações simultâneas de uma política se substituam mutuamente. Este valor é devolvido como parte da resposta
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 do pedido:
{ "policy": { "bindings": [ { "role": "ROLE", "members": [ "PRINCIPAL" ] }, ... ], "etag": "ETAG" } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "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", ] } ] }
Valide as autorizações de IAM para um recurso
Pode verificar se o utilizador autenticado tem autorizações de IAM específicas para um featurestore ou um tipo de entidade.
REST
Para verificar se um utilizador tem autorizações de IAM específicas para um recurso,
envie um pedido POST que use o método testIamPermissions
.
O exemplo seguinte permite-lhe testar se o utilizador autenticado atualmente tem um conjunto de autorizações do IAM
para um tipo de entidade.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde o Feature Store está localizado, como
us-central1
. - PROJECT_ID: o seu ID do projeto.
- FEATURESTORE_ID: ID da Feature Store.
- 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 do pedido:
{ "permissions": [ "aiplatform.googleapis.com/entityTypes.get", "aiplatform.googleapis.com/entityTypes.readFeatureValues", "aiplatform.googleapis.com/entityTypes.writeFeatureValues" ] }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
{ "permissions": [ "aiplatform.googleapis.com/entityTypes.get", "aiplatform.googleapis.com/entityTypes.readFeatureValues", "aiplatform.googleapis.com/entityTypes.writeFeatureValues" ] }