Como criar papéis com a API

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Neste tópico, discutimos como criar papéis personalizados e atribuir papéis a usuários por meio da API Management. Também mostramos como testar as atribuições de função usando a API. Para uma visão geral dos papéis personalizados, consulte Como criar papéis personalizados na interface.

Sobre a configuração de permissão

As permissões de papel são definidas em URIs da API Management (não em 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 sua organização do Edge, defina 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 é necessário incluir a parte da organização no caminho ao definir permissões, porque elas têm como escopo uma organização específica, como ilustram as chamadas da API Management 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, defina-as em /developers/steve@example.com.
  • Para um produto de API específico, como free-api-product, defina-os em /apiproducts/free-api-product.
  • Para um mapa de chave-valor em um ambiente específico, defina a permissão 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:

  • Permitir que os usuários em um papel personalizado façam chamadas de API Management de acordo com as permissões deles. Por exemplo, se um papel permitir acesso somente leitura a todos os proxies de API, um usuário com esse papel poderá usar a API Listar proxies de API, mas não a API Criar um proxy de API.
  • Determine o que os usuários em uma função personalizada podem ver e fazer na interface de gerenciamento. Por exemplo, o acesso somente leitura aos 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 é possível definir permissões, consulte a referência da API Management nos diferentes URLs de recursos.

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

Sintaxe e precedência

Você pode usar o caractere curinga de asterisco (*) 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 em /developers e depois.

PUT também serve como POST em permissões.

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

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

Isso significa que o developeradmin pode:

  • Criar um desenvolvedor, mas não atualizar desenvolvedores específicos ou subentidades (devido à permissão GET mais específica nesse caminho).
  • Acessar qualquer desenvolvedor ou subentidade, mas não uma lista de todos os desenvolvedores.

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

Crie um papel personalizado chamado "development"

Criar um papel de "desenvolvimento" para que os desenvolvedores possam visualizar, criar e atualizar 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 do Edge (como todos os /apps, /apis, /apiproducts etc.), bem como em artefatos individuais (como um app, proxy de API ou produto de API específico) são GET, PUT e DELETE.

O GET permite que os usuários visualizem todas as APIs, incluindo arquivos de configuração de proxy de API, políticas associadas, JavaScript, arquivos XSLT etc. A permissão PUT em APIs permite que os desenvolvedores criem, modifiquem, importem, exportem, implantem e cancelem a implantação de proxies de API.

O atributo de caminho 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 os engenheiros de qualidade visualizem 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

GET permite que os usuários visualizem todas as APIs, incluindo os arquivos de configuração, bem como as políticas, o JavaScript, os arquivos XSLT associados etc. Ao adicionar essa permissão ao papel "testing", permitimos que os engenheiros de qualidade visualizem o conteúdo das APIs que estão testando. No entanto, os usuários com essa 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 definidas para permitir que o usuário faça login na interface 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 o nome DNS do servidor de gerenciamento do Edge.

Adicionar usuário ao papel de teste

Para provisionar um usuário com uma função de 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 visualizar proxies de API. O usuário precisa conseguir visualizar as APIs e o 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

Personificar o usuário e fazer uma solicitação aos serviços de API para criar um proxy de API. A solicitação será rejeitada pelos serviços de API, já que 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 à função de desenvolvimento

Agora provisione o usuário com o papel "development".

$ 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 na função de desenvolvimento

Represente o usuário e repita a solicitação para a plataforma de API para criar um proxy de API. A solicitação será bem-sucedida, já que o papel "desenvolvimento" 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"}'

Receber funções de 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