Ativar a aplicação de segurança e cotas

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

Nesta página, descrevemos como ativar as opções padrão de segurança e aplicação de cota disponíveis com o operador do Apigee para Kubernetes.

Antes de começar

Antes de começar esta tarefa, siga estas etapas:

  • Instale o operador da Apigee para Kubernetes. Consulte Instalar o operador do Apigee para Kubernetes para instruções de instalação.
  • Crie uma extensão de serviço de tráfego. Para concluir esta etapa, use o ApigeeBackendService ou o APIMExtensionPolicy. Consulte Criar uma APIMExtensionPolicy para mais informações sobre como criar uma extensão de tráfego usando o APIMExtensionPolicy. Consulte Criar um ApigeeBackendService para mais informações sobre como criar uma extensão de tráfego usando o ApigeeBackendService.

Se você criou uma extensão de serviço de tráfego para seu gateway do GKE usando ApigeeBackendService ou APIMExtensionPolicy, conclua as etapas deste tutorial para ativar a chave de API padrão e as políticas de cota adicionadas ao APIMExtensionPolicy de suporte.

Funções exigidas

Se você atribuiu os papéis necessários à sua conta de serviço, conforme descrito em Instalar o operador do Apigee para Kubernetes, não são necessários outros papéis ou permissões do IAM para concluir essas tarefas.

É possível autorizar ações em recursos no cluster do Google Kubernetes Engine usando o mecanismo integrado de controle de acesso baseado em papéis (RBAC) no Kubernetes. Para mais informações, consulte Autorizar ações em clusters usando o controle de acesso baseado em papéis.

Visão geral

As seções a seguir descrevem como ativar as opções padrão de segurança e aplicação de cota disponíveis com o operador do Apigee para Kubernetes. Neste tutorial, você vai:

  1. Defina o produto de API.
  2. Defina o conjunto de operações da API.
  3. Teste a extensão de serviço da Apigee.
  4. Confira a análise de APIs da Apigee no console Google Cloud .

As etapas necessárias para definir o produto de API e o conjunto de operações de API variam um pouco dependendo se você criou uma extensão de tráfego para o gateway do GKE usando ApigeeBackendService ou APIMExtensionPolicy.

Definir o produto da API

Nesta etapa, você vai definir o produto de API que será usado para gerenciar a aplicação da chave de API e as políticas de cota.

Como usar o APIMExtensionPolicy

Defina o produto de API:

  1. Crie um novo arquivo chamado api-product.yaml no namespace apim.
  2. Copie o conteúdo a seguir no novo arquivo:
    # 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 arquivo ao gateway usando o seguinte comando:
    kubectl -n apim apply -f api-product.yaml

Como usar o ApigeeBackendService

Defina o produto de API:

  1. Crie um novo arquivo chamado api-product.yaml no namespace apim.
  2. Copie o conteúdo a seguir no novo arquivo:
    # 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 arquivo ao gateway usando o seguinte comando:
    kubectl -n default apply -f api-product.yaml

Definir o conjunto de operações da API

Nesta etapa, você vai definir o conjunto de operações da API que será usado para gerenciar a aplicação das operações REST.

Como usar o APIMExtensionPolicy

Defina o conjunto de operações de API para o produto de API criado na etapa anterior:

  1. Crie um novo arquivo chamado apim-policies.yaml no namespace apim.
  2. Copie o conteúdo a seguir no novo arquivo. Esse arquivo define uma política de cotas e as operações REST disponíveis para o produto da API definido na etapa 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 arquivo ao gateway:
    kubectl -n apim apply -f apim-policies.yaml

Como usar o ApigeeBackendService

Defina o conjunto de operações de API para o produto de API criado na etapa anterior:

  1. Crie um novo arquivo chamado apim-policies.yaml no namespace default.
  2. Copie o conteúdo a seguir no novo arquivo. Esse arquivo define uma política de cotas e as operações REST disponíveis para o produto da API definido na etapa 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 arquivo ao gateway:
    kubectl -n default apply -f apim-policies.yaml

Testar a extensão de serviço da Apigee

Nesta etapa, você vai usar a interface da Apigee no console Google Cloud para testar a extensão de serviço da Apigee e a política de extensão da Apigee aplicada ao seu gateway.

Configuração de teste

Configure os recursos de API necessários para o teste:

  1. Acesse a página Gerenciamento de APIs do Apigee no console do Google Cloud :

    Gerenciamento de APIs da Apigee

  2. Selecione a organização da Apigee em que você instalou o operador da Apigee para Kubernetes.
  3. Crie um desenvolvedor:
    1. Selecione Distribuição > Desenvolvedores.
    2. Na página Desenvolvedores, clique em + Criar.
    3. Na página Adicionar desenvolvedor, preencha os campos obrigatórios com os valores que quiser.
    4. Clique em Adicionar.
  4. Crie um 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 seção Detalhes do app usando os seguintes valores:
      • Nome do app: demo-app
      • Desenvolvedor: selecione o desenvolvedor que você criou na etapa anterior ou outro desenvolvedor na lista.
    4. Na seção Credenciais do app, clique em + Adicionar credencial.
    5. Na seção Credencial, preencha os campos obrigatórios em Detalhes da credencial com os seguintes valores:
      • Nome da credencial: demo-credential
      • Tipo de credencial: selecione Chave de API.
    6. Clique em Criar.
    7. Na seção Produtos, clique em + Adicionar produtos.
    8. Selecione o api-product-1 criado na etapa anterior.
    9. Clique em Adicionar.
    10. Clique em Criar.
  5. Na página Detalhes do app, na seção Credencial, clique em para mostrar o valor da Chave.

    Copie o valor de Key. Você vai usar essa chave para fazer chamadas de API ao seu serviço em uma etapa posterior.

  6. Na página Detalhes do app, na seção Credencial, clique em para mostrar o valor do Secret do app.

    Copie o valor de App secret. Você vai usar esse valor para gerar um token de acesso em uma etapa posterior.

Testar a aplicação da chave de API

Use o comando a seguir para enviar uma solicitação ao gateway usando a chave de API obtida em uma etapa anterior:

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

Em que:

  • GATEWAY_IP_ADDRESS é o endereço IP do gateway. É possível recuperar o endereço IP do gateway usando o 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 do host definido no HTTPRoute do gateway.
  • API_KEY é o valor da chave de API obtido em Configuração de teste.

A solicitação precisa ser bem-sucedida e retornar uma resposta semelhante a esta:

{
  "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"
}

Testar a aplicação de cota

Para testar a aplicação de cota definida no seu APIMExtensionPolicy, envie a solicitação da etapa anterior para o gateway dez vezes em um minuto.

Você pode executar o script a seguir para gerar as solicitações:

#!/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

Em que:

  • GATEWAY_IP_ADDRESS é o endereço IP do gateway. É possível recuperar o endereço IP do gateway usando o 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 do host definido no HTTPRoute do gateway.
  • API_KEY é o valor da chave de API obtido em Configuração de teste.

Essa ação vai acionar uma violação de cota e gerar uma falha semelhante a esta:

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

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

Para testar a aplicação das operações REST, use o comando a seguir para enviar uma solicitação ao gateway usando um URL que não está no conjunto de operações da API:

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

Em que:

  • GATEWAY_IP_ADDRESS é o endereço IP do gateway. É possível recuperar o endereço IP do gateway usando o 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 do host definido no HTTPRoute do gateway.
  • API_KEY é o valor da chave de API obtido em Configuração de teste.

A solicitação vai falhar com uma resposta semelhante a esta:

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

Ver a análise de APIs da Apigee no Google Cloud console

É possível conferir o tráfego de API processado pelo gateway do GKE e o APIMExtensionPolicy usando a análise da API do Apigee no console do Google Cloud :

  1. Acesse a página Gerenciamento de APIs do Apigee no console Google Cloud :

    Gerenciamento de APIs da Apigee

  2. Selecione a organização da Apigee em que você instalou o operador da Apigee para Kubernetes.
  3. Selecione Analytics > Métricas da API no menu de navegação lateral.
  4. Na guia Performance do proxy de API, escolha o ambiente que você criou na etapa de instalação opcional Criar um ambiente da Apigee ou o ambiente criado pelo operador da Apigee para Kubernetes durante a instalação. O nome do ambiente vai começar com o prefixo apigee-ext-proc-enabled-env.
  5. Observe o tráfego da API registrado.

Resolver problemas

Se você encontrar problemas ao usar políticas de gerenciamento de API com o operador do Apigee para Kubernetes, consulte Resolver problemas do operador do Apigee para Kubernetes para encontrar soluções para erros comuns.

Próximas etapas

Para adicionar mais políticas, consulte Adicionar políticas ao gateway do GKE.