Ative a aplicação de segurança e quotas

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

Esta página descreve como ativar as opções de segurança e aplicação de quotas predefinidas disponíveis com o Apigee Operator para Kubernetes.

Antes de começar

Antes de começar esta tarefa, certifique-se de que conclui os seguintes passos:

  • Instale o operador do Apigee para Kubernetes. Consulte o artigo Instale o Apigee Operator para Kubernetes para ver instruções de instalação.
  • Crie uma extensão de serviço de trânsito. Para concluir este passo, pode usar o ApigeeBackendService ou o APIMExtensionPolicy. Consulte o artigo Crie uma APIMExtensionPolicy para mais informações sobre como criar uma extensão de tráfego através da APIMExtensionPolicy. Consulte o artigo Crie um ApigeeBackendService para mais informações sobre como criar uma extensão de tráfego através da ApigeeBackendService.

Quer tenha criado uma extensão de serviço de tráfego para o seu GKE Gateway através do ApigeeBackendService ou do APIMExtensionPolicy, tem de concluir os passos neste guia passo a passo para ativar a chave de API predefinida e as políticas de quota adicionadas ao APIMExtensionPolicy de apoio.

Funções necessárias

Se atribuiu as funções necessárias à sua conta de serviço, conforme descrito no artigo Instale o operador do Apigee para Kubernetes, não são necessárias funções nem autorizações de IAM adicionais para concluir estas tarefas.

Pode optar por autorizar ações em recursos no seu cluster do Google Kubernetes Engine através do mecanismo de controlo de acesso baseado em funções (RBAC) integrado no Kubernetes. Para mais informações, consulte o artigo Autorize ações em clusters através do controlo de acesso baseado em funções.

Vista geral

As secções seguintes descrevem como ativar as opções de segurança e aplicação de quotas predefinidas disponíveis com o Apigee Operator para Kubernetes. Neste tutorial, vai:

  1. Defina o produto da API.
  2. Defina o conjunto de operações da API.
  3. Teste a extensão de serviço Apigee.
  4. Veja a API Apigee do Analytics na Google Cloud consola.

Os passos necessários para definir o produto API e o conjunto de operações da API variam ligeiramente consoante tenha criado uma extensão de tráfego para o seu GKE Gateway através do ApigeeBackendService ou do APIMExtensionPolicy.

Defina o produto API

Neste passo, vai definir o produto da API que vai ser usado para gerir a aplicação das políticas de quotas e da chave da API.

Usar o APIMExtensionPolicy

Defina o produto API:

  1. Crie um novo ficheiro com o nome api-product.yaml no espaço de nomes apim.
  2. Copie o seguinte conteúdo para o novo ficheiro:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: APIMExtensionPolicy
            group: apim.googleapis.com
            namespace: apim
        attributes:
          - name: access
            value: private
  3. Aplique o ficheiro ao gateway através do seguinte comando:
    kubectl -n apim apply -f api-product.yaml

Usar o ApigeeBackendService

Defina o produto API:

  1. Crie um novo ficheiro com o nome api-product.yaml no espaço de nomes apim.
  2. Copie o seguinte conteúdo para o novo ficheiro:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: ApigeeBackendService
            group: apim.googleapis.com
            namespace: default
        attributes:
          - name: access
            value: private
  3. Aplique o ficheiro ao gateway através do seguinte comando:
    kubectl -n default apply -f api-product.yaml

Defina o conjunto de operações da API

Neste passo, vai definir o conjunto de operações da API que vai ser usado para gerir a aplicação das operações REST.

Usar o APIMExtensionPolicy

Defina o conjunto de operações da API para o produto de API criado no passo anterior:

  1. Crie um novo ficheiro com o nome apim-policies.yaml no espaço de nomes apim.
  2. Copie o seguinte conteúdo para o novo ficheiro. Este ficheiro define uma política de quotas e as operações REST disponíveis para o produto API definido no passo anterior:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: apim
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: apim
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Aplique o ficheiro ao gateway:
    kubectl -n apim apply -f apim-policies.yaml

Usar o ApigeeBackendService

Defina o conjunto de operações da API para o produto de API criado no passo anterior:

  1. Crie um novo ficheiro com o nome apim-policies.yaml no espaço de nomes default.
  2. Copie o seguinte conteúdo para o novo ficheiro. Este ficheiro define uma política de quotas e as operações REST disponíveis para o produto API definido no passo anterior:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: default
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: default
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Aplique o ficheiro ao gateway:
    kubectl -n default apply -f apim-policies.yaml

Teste a extensão de serviço do Apigee

Neste passo, vai usar a IU do Apigee na Google Cloud consola para testar a extensão de serviço do Apigee e a política de extensão do Apigee aplicada ao seu gateway.

Configuração de testes

Configure os recursos da API de que precisa para os testes:

  1. Aceda à página Gestão de APIs da Apigee na Google Cloud consola:

    Gestão de APIs da Apigee

  2. Selecione a organização do Apigee onde instalou o operador do Apigee para Kubernetes.
  3. Crie um programador:
    1. Selecione Distribuição > Programadores.
    2. Na página Programadores, clique em + Criar.
    3. Na página Adicionar programador, preencha os campos obrigatórios com os valores que quiser.
    4. Clique em Adicionar.
  4. Crie uma app:
    1. Selecione Distribuição> Apps.
    2. Na página Apps, clique em + Criar
    3. Na página Criar app, preencha os campos obrigatórios na secção Detalhes da app com os seguintes valores:
      • Nome da app: demo-app
      • Programador: selecione o programador que criou no passo anterior ou outro programador da lista.
    4. Na secção Credenciais da app, clique em + Adicionar credencial.
    5. Na secção Credencial, preencha os campos obrigatórios na secção Detalhes da credencial com os seguintes valores:
      • Nome da credencial: demo-credential
      • Tipo de credencial: selecione Chave da API.
    6. Clique em Criar.
    7. Na secção Produtos, clique em + Adicionar produtos.
    8. Selecione o api-product-1 criado no passo anterior.
    9. Clique em Adicionar.
    10. Clique em Criar.
  5. Na página Detalhes da app, na secção Credencial, clique em para apresentar o valor da Chave.

    Copie o valor Key. Vai usar esta chave para fazer chamadas API ao seu serviço num passo posterior.

  6. Na página Detalhes da app, na secção Credencial, clique em para apresentar o valor do segredo da app.

    Copie o valor do segredo da app. Vai usar este valor para gerar um token de acesso num passo posterior.

Teste a aplicação da chave da API

Use o seguinte comando para enviar um pedido ao seu gateway através da chave da API obtida num passo anterior:

curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Onde:

  • GATEWAY_IP_ADDRESS é o endereço IP do gateway. Pode obter o endereço IP do gateway através do seguinte comando, em que GATEWAY_NAME é o nome do gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME é o nome de anfitrião definido no HTTPRoute do gateway.
  • API_KEY é o valor da chave da API obtido em Testar configuração.

O pedido deve ser bem-sucedido e devolver uma resposta semelhante à seguinte:

{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "apigee-apim-operator-test.apigee.net",
    "User-Agent": "curl/8.7.1",
    "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt",
    "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739"
  },
  "origin": "34.54.193.72",
  "url": "https://34.54.193.72/get"
}

Teste a aplicação de quotas

Para testar a aplicação da quota definida no seu APIMExtensionPolicy, envie o pedido do passo anterior para o gateway dez vezes no espaço de um minuto.

Pode executar o seguinte script para gerar os pedidos:

#!/bin/sh
for i in $(seq 1 11); do
    curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
    sleep 1
done

Onde:

  • GATEWAY_IP_ADDRESS é o endereço IP do gateway. Pode obter o endereço IP do gateway através do seguinte comando, em que GATEWAY_NAME é o nome do gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME é o nome de anfitrião definido no HTTPRoute do gateway.
  • API_KEY é o valor da chave da API obtido em Testar configuração.

Esta ação deve acionar uma violação de quota e gerar uma falha semelhante à seguinte:

{"fault":{"faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}

Teste a aplicação de operações REST

Para testar a aplicação das operações REST, use o seguinte comando para enviar um pedido para o gateway através de um URL que não esteja no conjunto de operações da API:

curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Onde:

  • GATEWAY_IP_ADDRESS é o endereço IP do gateway. Pode obter o endereço IP do gateway através do seguinte comando, em que GATEWAY_NAME é o nome do gateway:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME é o nome de anfitrião definido no HTTPRoute do gateway.
  • API_KEY é o valor da chave da API obtido em Testar configuração.

O pedido deve falhar com uma resposta semelhante à seguinte:

{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}

Veja a API Apigee do Analytics na Google Cloud consola

Pode ver o tráfego da API processado pelo GKE Gateway e o APIMExtensionPolicy através da Apigee API Analytics na Google Cloud consola:

  1. Aceda à página Gestão de APIs da Apigee na Google Cloud consola:

    Gestão de APIs da Apigee

  2. Selecione a organização do Apigee onde instalou o operador do Apigee para Kubernetes.
  3. Selecione Analytics > Métricas da API no menu de navegação lateral.
  4. No separador Desempenho do proxy de API, escolha o ambiente que criou no passo de instalação opcional Crie um ambiente do Apigee ou o ambiente criado pelo operador do Apigee para Kubernetes durante a instalação. O nome do ambiente começa com o prefixo apigee-ext-proc-enabled-env.
  5. Observe o tráfego da API registado.

Resolver problemas

Se tiver problemas ao usar políticas de gestão de APIs com o Apigee Operator para Kubernetes, consulte o artigo Resolva problemas do Apigee Operator para Kubernetes para ver soluções para erros comuns.

Passos seguintes

Para adicionar políticas adicionais, consulte o artigo Adicione políticas ao GKE Gateway.