Utilice las API para gestionar la seguridad de las API

Puede acceder a las API para crear, configurar e implementar una seguridad de API.

Nota:

Para saber cómo usar las API de seguridad de las API para configurar la función, consulta la documentación de la API de Nitro.

Pasos URL del recurso
  1 Crear una definición de API https://adm.cloud.com/{customerid}/apisec/nitro/v1/config/apidefs
  2 Agregar un proxy de API https://adm.cloud.com/apiproxies
  3 Implementar una instancia de API mediante el proxy de la API https://adm.cloud.com/apiproxies/{customerid}/deployments
  4 Agregar directivas de API https://adm.cloud.com/{customerid}/apisec/nitro/v1/config/policies/{id}

Cada directiva de API tiene un objeto config_spec diferente. Es un objeto opaco que contiene un diccionario JSON para configurar un policytype con valores específicos.

En este objeto, puede seleccionar un recurso de API y sus métodos mediante las siguientes opciones:

  • api-resource-paths - Especifique las rutas y los métodos de los recursos de la API que se definen en una definición de API.

    Ejemplo:

     { "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": true, "post": false, "put": false, "delete": false } <!--NeedCopy--> 
  • custom-rules - Especifique las rutas y los métodos de los recursos de la API personalizados que pueden no existir en una definición de API.

    Ejemplo:

     { "endpoints": ["/pet/categories", "/pet/findByName"], "get": true, "post": false, "put": false, "delete": false } <!--NeedCopy--> 

Con esta configuración, la directiva filtra las solicitudes de tráfico entrantes que coinciden con las rutas de recursos de API especificadas.

Para obtener información sobre cada tipo de directiva config_spec, consulte los ejemplos de API para los tipos de directivas.

Ejemplos de API para tipos de directivas

En esta sección se describen los tipos de directivas de API compatibles y su configuración:

Límite de tarifa

A continuación se muestra un ejemplo de configuración para el tipo de directiva Ratelimit. Especifique la siguiente configuración en el objeto config_spec:

{ "policytype": "Ratelimit", "config_spec": { "api-resource-paths": { "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": true, "post": false, "put": false, "delete": false }, "custom-rules": {}, "threshold": "10", "timeslice": "20000", "limittype": "BURSTY", "api-respondertype": "DROP", "header_name": "x-api-key", "per_client_ip": true }, "order_index": 1, "policy_name": "ratelimit_policy" } <!--NeedCopy--> 

Para obtener más información sobre cada atributo, consulte Directiva de límites de tarifas.

OAuth

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva JWT Auth validation. Especifique la siguiente configuración en el objeto config_spec:

{ "policytype": "JWT Auth Validation", "config_spec": { "api-resource-paths": { "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": true, "post": true, "put": false, "delete": false }, "custom-rules": {}, "jwks-uri": "https://uri.petstore.com", "issuer": "https://issuer.petstore.com", "audience": "petstore", "introspect-uri": "https://introspect.uri.com", "clientid": "client", "clientsecret": "clientsecret", "claims-to-save": ["scope", "scope2"], "allowed-algorithms": { "hs256": true, "rs256": true, "rs512": true } }, "order_index": 2, "policy_name": "Jwt_auth_policy" } <!--NeedCopy--> 

Para obtener más información sobre cada atributo, consulta la directiva de OAuth

Autenticación

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva BasicAuth:

{ "config_spec": { "api-resource-paths": { "delete": false, "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": true, "post": true, "put": false }, "custom-rules": {} }, "order_index": 3, "policy_name": "Auth_BaSIC", "policytype": "BasicAuth" } <!--NeedCopy--> 

Para obtener más información sobre cada atributo, consulte Directiva de autenticación básica.

Sin autenticación

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva NoAuth:

{ "config_spec": { "api-resource-paths": { "delete": false, "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": true, "post": false, "put": false }, "custom-rules": {} }, "order_index": 4, "policy_name": "no_auth_policy", "policytype": "NoAuth" } <!--NeedCopy--> 

Bot

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva Bot:

{ "config_spec": { "api-resource-paths": { "delete": false, "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": false, "post": false, "put": false }, "bot-prof-name": "apisec_test_profile", "custom-rules": {} }, "order_index": 5, "policy_name": "bot_policy", "policytype": "Bot" } <!--NeedCopy--> 

Para obtener más información sobre cada atributo, consulte Directiva de bots.

WAF

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva WAF:

{ "config_spec": { "api-resource-paths": { "delete": false, "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": false, "post": false, "put": false }, "waf-prof-name": "apisec_waf_profile", "custom-rules": {} }, "order_index": 6, "policy_name": "waf_policy", "policytype": "WAF" } <!--NeedCopy--> 

Para obtener más información sobre cada atributo, consulte la directiva de WAF.

Reescritura de encabezado

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva de reescritura de encabezados. Especifique esta configuración en el objeto config_spec:

{ "policytype": "Header Rewrite", "config_spec": { "api-resource-paths": { "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": true, "post": true, "put": false, "delete": false }, "custom-rules": {}, "rewrite-policy-header-field-name": "org", "rewrite-policy-header-field-val": "Citrix", "rewrite-policy-header-field-new-val": "Citrite" }, "order_index": 7, "policy_name": "header_rewrite_pol" } <!--NeedCopy--> 

Para obtener más información sobre cada atributo, consulte Directiva de reescritura de encabezados.

Reescritura de ruta de URI

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva de reescritura de rutas de URI:

{ "config_spec": { "api-resource-paths": { "endpoints": ["/store/order", "/store/inventory"], "delete": false, "get": true, "post": true, "patch": false, "put": false }, "custom-rules": { "delete": false, "endpoints": [], "get": false, "post": false, "patch": false, "put": true }, "path-rewrite-params": [ { "insert-segment-position": "beginning", "new-path-value": "v3", "old-path-value": "v2", "action-type": "replace path segment" }, { "insert-segment-position": "beginning", "new-path-value": "begin", "action-type": "insert path segment" }, { "insert-segment-position": "end", "new-path-value": "end", "action-type": "insert path segment" }, { "insert-segment-position": "before", "new-path-value": "before", "old-path-value": "store", "action-type": "insert path segment" }, { "insert-segment-position": "after", "new-path-value": "after", "old-path-value": "store", "action-type": "insert path segment" } ] }, "order_index": 24, "policy_name": "eats_uripathrewrite", "policytype": "URI Path Rewrite” } <!--NeedCopy--> 

Para obtener más información sobre cada atributo, consulte la directiva de reescritura de rutas de URI.

Autorización

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva Authorization. Especifique la siguiente configuración en el objeto config_spec:

{ "policytype": "Authorization", "config_spec": { "api-resource-paths": { "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": true, "post": true, "put": false, "delete": false }, "custom-rules": {}, "claims": [{ "name": "scope", "values": ["value1", "value2"] }] }, "order_index": 8, "policy_name": "authorization" } <!--NeedCopy--> 

Para obtener más información sobre cada atributo, consulte Directiva de autorización.

Negar

A continuación se muestra un ejemplo de configuración de API para el tipo de directiva Deny. Especifique la siguiente configuración en el objeto config_spec:

{ "policytype": "Deny", "config_spec": { "api-resource-paths": { "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"], "get": true, "post": true, "put": false, "delete": false }, "custom-rules": {}, "api-denytype": "RESPONDWITH" }, "order_index": 9, "policy_name": "deny_policy" } <!--NeedCopy--> 

En api-denytype, puede especificar uno de los siguientes valores:

  • RESPONDWITH
  • RESET

Para obtener más información sobre cada atributo, consulte Regla de denegación.

Utilice las API para gestionar la seguridad de las API