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
- OAuth
- Autenticación
- Sin autenticación
- Bot
- WAF
- Reescritura de encabezado
- Reescritura de ruta de URI
- Autorización
- Negar
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.