Como criar papéis com a API

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Este tópico discute como criar papéis personalizados e atribuir papéis aos usuários por meio da API de gerenciamento. Também mostramos como testar atribuições de função por meio da API. Para ter uma visão geral dos papéis personalizados, consulte Como criar papéis personalizados na IU.

Sobre a configuração de permissão

As permissões de papel são definidas nos URIs da API de gerenciamento (não nos URIs da interface de gerenciamento). Por exemplo, se você quiser definir permissões PUT, GET e/ou DELETE nas entidades de desenvolvedor de apps na organização do Edge, precisará definir permissões no recurso /developers, porque o caminho da API de gerenciamento para desenvolvedores é https://api.enterprise.apigee.com/v1/organizations/{org_name}/developers. Não é preciso incluir a parte da organização no caminho ao definir permissões, porque elas têm como escopo uma organização específica, como ilustra as chamadas de API de gerenciamento neste tópico.

Também é possível definir permissões em entidades específicas. Exemplo:

  • Se você quiser definir permissões para um único desenvolvedor, faça isso em /developers/steve@example.com
  • Defina em /apiproducts/free-api-product um produto de API específico, como free-api-product.
  • Para um mapa de chave-valor em um ambiente específico, a permissão é definida em algo como /environments/test/keyvaluemaps/fooMap ou /environments/test/keyvaluemaps/* para todos os mapas de chave-valor no ambiente de teste.

As permissões que você define usando a API:

  • Permita que os usuários com uma função personalizada façam chamadas de API de gerenciamento de acordo com as permissões. Por exemplo, se um papel permitir acesso somente leitura a todos os proxies da API, um usuário nesse papel poderá usar a API List API Proxies, mas não a Create an API Proxy.
  • Determinar o que os usuários em uma função personalizada podem ver e fazer na interface de gerenciamento. Por exemplo, o acesso somente leitura a proxies de API desativa o acesso aos botões "+ Proxy de API" e "Excluir" na página "Proxies de API".

Para ver os recursos e caminhos em que você pode definir permissões, consulte a referência da API de gerenciamento nos URLs de recursos diferentes.

Consulte a API Funções de usuário para informações de referência completas sobre gerenciamento de funções.

Sintaxe e precedência

Você pode usar o asterisco curinga (*) para indicar "tudo depois" em uma configuração de permissão. No entanto, se você definir permissões apenas em um recurso pai (como em /developers) sem definir permissões mais específicas (como /developers/*), a permissão será aplicada a tudo, desde /developers e depois.

O método PUT também serve como POST nas permissões.

É possível misturar permissões gerais com permissões mais granulares nos recursos. As configurações mais granulares têm precedência quando há uma sobreposição de permissões. Por exemplo, suponha que as permissões a seguir estejam definidas no papel "developeradmin":

  • PUT em /developers
  • GET em /developers/*

Isso significa que o developeradmin pode:

  • Crie um desenvolvedor, mas não atualize nenhum desenvolvedor específico ou subentidade (devido à permissão GET mais específica nesse caminho).
  • Recebe qualquer desenvolvedor ou subentidade, mas não uma lista de todos os desenvolvedores.

Consulte Referência de permissões para conferir a lista completa das permissões que podem ser definidas com a API.

Crie um papel personalizado chamado "desenvolvimento"

Crie um papel de "desenvolvimento" para permitir que os desenvolvedores visualizem, criem e atualizem proxies de API.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "development" } ] }'

Adicionar permissões ao papel de desenvolvimento

As permissões que podem ser definidas em um grupo inteiro de artefatos Edge (como todos os /apps, /apis, /apiproducts e assim por diante), bem como em artefatos individuais (como um app específico, proxy de API ou produto de API) são GET, PUT e DELETE.

O GET permite que os usuários visualizem qualquer API, incluindo arquivos de configuração de proxy de API, políticas associadas, JavaScript, arquivos WebP e assim por diante. Com a permissão PUT nas APIs, os desenvolvedores podem criar, modificar, importar, exportar, implantar e cancelar a implantação de proxies de API.

O atributo path especifica o artefato em que você define as permissões. Por exemplo, /applications, /apps, /apiproducts, /developers ou /reports.

curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/development/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "put", "get" ]}'

Criar um papel: teste

Crie um papel de "teste" para permitir que engenheiros de qualidade vejam os proxies de API e o conteúdo deles (incluindo, por exemplo, políticas).

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "testing" } ] }'

Adicionar permissões ao papel de teste

O GET permite que os usuários visualizem qualquer API, incluindo os arquivos de configuração, e todas as políticas associadas, arquivos JavaScript, WebP e assim por diante. Ao adicionar essa permissão ao papel "teste", permitimos que os engenheiros de qualidade visualizem o conteúdo das APIs que estão testando. No entanto, os usuários nessa função não poderão criar, modificar, importar, exportar, implantar e cancelar a implantação de proxies de API.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/testing/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "get" ]}'

Para uma instalação local do Edge, o conjunto mínimo de permissões que precisam ser definidos para permitir que o usuário faça login na IU do Edge é:

{"path" : "/","permissions" : [ "get" ]}
{"path" : "/*","permissions" : [ ]}
{"path" : "/environments","permissions" : [ "get" ]}
{"path" : "/userroles","permissions" : [ "get" ]}

Use o seguinte comando cURL para definir essas permissões:

curl -H "Content-Type:application/json" -u email:password \
-X POST \
http://<ms-IP>:8080/v1/organizations/{org_name}/userroles/testing/resourcepermissions  \
-d '{
 "resourcePermission" : [ 
   {
    "path" : "/",
    "permissions" : [ "get" ]
   }, 
{
    "path" : "/*",
    "permissions" : []
   },
{
    "path" : "/environments",
    "permissions" : [ "get" ]
   },
   {
    "path" : "/userroles",
    "permissions" : [ "get"]
   }
  ]
}'

em que <ms-IP> é o endereço IP ou nome DNS do servidor de gerenciamento de borda.

Adicionar usuário à função de teste

Para provisionar um usuário com uma função do usuário:

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "testing"} ] }'

Ver APIs como usuário

Representar o usuário e fazer uma solicitação aos serviços de API para ver os proxies. O usuário precisa ter acesso às APIs e ao conteúdo delas.
$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis
$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/policies

Criar API como usuário na função de teste

Represente o usuário e faça uma solicitação aos serviços de API para criar um proxy de API. A solicitação será rejeitada pelos serviços da API porque o papel "testing" não permite que o usuário crie APIs.

$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'

Adicionar usuário ao papel de desenvolvimento

Agora, provisione ao usuário o papel de "desenvolvimento".

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "development"} ] }'

Criar API como usuário em função de desenvolvimento

Represente o usuário e repita a solicitação à plataforma de API para criar um proxy de API. A solicitação será bem-sucedida, já que o papel "development" permite que o usuário crie APIs.

$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'

Extrair funções do usuário para um usuário

Como administrador da organização, você pode verificar a lista de funções de um usuário (em todas as organizações) a qualquer momento:

$ curl -u email:password -X GET https://api.enterprise.apigee.com/v1/users/justauser@apigee.com/userroles