Utiliser les API pour gérer la sécurité des API

Vous pouvez accéder aux API pour créer, configurer et déployer une sécurité d’API.

Remarque :

pour comprendre comment utiliser les API de sécurité des API pour configurer la fonctionnalité, consultez la documentation de l’API Nitro.

Étapes URL de la ressource
  1 Création d’une définition d’API https://adm.cloud.com/{customerid}/apisec/nitro/v1/config/apidefs
  2 Ajouter un proxy d’API https://adm.cloud.com/apiproxies
  3 Déployer une instance d’API à l’aide du proxy d’API https://adm.cloud.com/apiproxies/{customerid}/deployments
  4 Ajouter des stratégies d’API https://adm.cloud.com/{customerid}/apisec/nitro/v1/config/policies/{id}

Chaque stratégie d’API possède un objet différent config_spec. Il s’agit d’un objet opaque qui contient un dictionnaire JSON permettant de configurer un policytype avec des valeurs spécifiques.

Dans cet objet, vous pouvez sélectionner une ressource d’API et ses méthodes à l’aide des options suivantes :

  • api-resource-paths - Spécifiez les chemins de ressources d’API et les méthodes qui sont définis dans une définition d’API.

    Exemple :

     {
    "endpoints": ["/pet", "/pet/findByStatus", "/pet/findByTags"],
        "get": true,
        "post": false,
        "put": false,
        "delete": false
     }
     <!--NeedCopy-->
    
  • custom-rules - Spécifiez les chemins de ressources d’API personnalisés et les méthodes qui peuvent ne pas exister dans une définition d’API.

    Exemple :

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

Avec cette configuration, la stratégie filtre les demandes de trafic entrant qui correspondent aux chemins de ressources d’API spécifiés.

Pour plus d’informations sur config_spec de chaque type de stratégie, consultez des exemples d’API pour les types de stratégie.

Exemples d’API pour les types de stratégies

Cette section décrit les types de stratégies d’API pris en charge et leur configuration :

Limite de taux

Voici un exemple de configuration pour le type de stratégie Ratelimit. Spécifiez la configuration suivante dans l’objet 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-->

Pour plus d’informations sur chaque attribut, consultez la section Stratégie de limite de débit.

OAuth

Voici un exemple de configuration d’API pour le type de stratégie JWT Auth validation. Spécifiez la configuration suivante dans l’objet 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-->

Pour plus d’informations sur chaque attribut, consultez la stratégie OAuth

Authentification basique

Voici un exemple de configuration d’API pour le type de stratégie 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-->

Pour plus d’informations sur chaque attribut, consultez la section Stratégie d’authentification de base.

Aucune authentification

Voici un exemple de configuration d’API pour le type de stratégie 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

Voici un exemple de configuration d’API pour le type de stratégie 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-->

Pour plus d’informations sur chaque attribut, consultez la section Stratégie relative aux robots.

WAF

Voici un exemple de configuration d’API pour le type de stratégie 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-->

Pour plus d’informations sur chaque attribut, consultez la stratégie WAF.

Réécriture de l’en-tête

Voici un exemple de configuration d’API pour le type de stratégie de réécriture d’en-tête. Spécifiez cette configuration dans l’objet 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-->

Pour plus d’informations sur chaque attribut, consultez la stratégie de réécriture des en-têtes.

Réécriture du chemin URI

Voici un exemple de configuration d’API pour le type de stratégie de réécriture des chemins d’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-->

Pour plus d’informations sur chaque attribut, consultez la stratégie de réécriture des chemins d’URI.

Authorization

Voici un exemple de configuration d’API pour le type de stratégie Authorization. Spécifiez la configuration suivante dans l’objet 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-->

Pour plus d’informations sur chaque attribut, consultez la section Stratégie d’autorisation.

Deny

Voici un exemple de configuration d’API pour le type de stratégie Deny. Spécifiez la configuration suivante dans l’objet 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-->

Dans api-denytype, vous pouvez spécifier l’une des valeurs suivantes :

  • RESPONDWITH
  • RESET

Pour plus d’informations sur chaque attribut, consultez la section Règle de refus.

Utiliser les API pour gérer la sécurité des API