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
- OAuth
- Authentification basique
- Aucune authentification
- Bot
- WAF
- Réécriture de l’en-tête
- Réécriture du chemin URI
- Authorization
- Deny
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.