Προστασία ενός API με keys και rate limits στο Boomi Cloud API Management
Πώς ταυτοποιείτε κάθε χρήστη ενός API, περιορίζετε την κίνησή του με throttles και quotas και τα στήνετε με packages, plans και keys στο Boomi Cloud API Management.
Το API σας δουλεύει και ο πρώτος συνεργάτης ζητά πρόσβαση. Μετά κι ένας δεύτερος. Πριν έρθει ο τρίτος, χρειάζεστε απαντήσεις σε τρεις ερωτήσεις: ποιος καλεί, πόσες κλήσεις του επιτρέπονται και τι γίνεται όταν τις ξεπεράσει. Σε αυτό το άρθρο εξηγούμε το pattern πίσω από αυτές τις απαντήσεις και το στήνουμε στο Boomi Cloud API Management.
Το pattern: πρώτα ταυτοποίηση, μετά όρια
Ταυτοποιήστε κάθε χρήστη
Κάθε εφαρμογή που καλεί το API παίρνει το δικό της API key. Όχι ένα ανά εταιρεία, και σίγουρα όχι ένα κοινό για όλους: ένα ανά εφαρμογή και ανά περιβάλλον. Έτσι κερδίζετε τρία πράγματα:
- βλέπετε ποιος δημιουργεί ποια κίνηση,
- δίνετε διαφορετικά όρια σε διαφορετικούς χρήστες,
- ανακαλείτε την πρόσβαση ενός χρήστη χωρίς να επηρεάσετε τους άλλους.
Ένα API key ταυτοποιεί μια εφαρμογή, όχι έναν χρήστη. Αν το API σας επιστρέφει δεδομένα που ανήκουν σε μεμονωμένους χρήστες, χρειάζεστε και OAuth 2.0, ώστε η κλήση να γίνεται για λογαριασμό συγκεκριμένου χρήστη. Για integrations ανάμεσα σε συστήματα, δηλαδή το μεγαλύτερο μέρος της B2B κίνησης, ένα key μαζί με ασφαλή μεταφορά συνήθως αρκεί.
Όρια με throttles και quotas
Δύο διαφορετικά όρια λύνουν δύο διαφορετικά προβλήματα:
| Όριο | Παράδειγμα | Προστατεύει από |
|---|---|---|
| Throttle | 5 κλήσεις το δευτερόλεπτο | Αιχμές που γονατίζουν το backend (ένα loop που ξέφυγε) |
| Quota | 20.000 κλήσεις την ημέρα | Συνολικό όγκο πέρα από όσα συμφωνήθηκαν ή πληρώθηκαν |
Χρησιμοποιήστε και τα δύο. Ένας client μπορεί να μένει μέσα στο ημερήσιο quota και παρ’ όλα αυτά να σας στείλει 500 κλήσεις σε ένα δευτερόλεπτο.
Ομαδοποιήστε τους χρήστες σε plans
Δεν θέλετε να ορίζετε όρια με το χέρι για κάθε χρήστη. Ορίστε λίγα plans και αντιστοιχίστε κάθε χρήστη σε ένα:
| Plan | Throttle | Quota | Για |
|---|---|---|---|
| Trial | 1 / sec | 1.000 / ημέρα | Συνεργάτες που φτιάχνουν το integration |
| Partner standard | 5 / sec | 20.000 / ημέρα | Integrations συνεργατών σε παραγωγή |
| Internal | 20 / sec | Χωρίς quota | Τις δικές σας εφαρμογές |
Ξεκινήστε με νούμερα που το backend σας αντέχει πραγματικά και αυξήστε τα όταν έχετε δεδομένα από την παρακολούθηση.
Υλοποίηση στο Boomi Cloud API Management
Το Boomi Cloud API Management χρησιμοποιεί τις ίδιες έννοιες: ορίζετε το API και τα endpoints του, τα ομαδοποιείτε σε packages με plans που φέρουν τα όρια, και εκδίδετε keys σε εφαρμογές για ένα plan. Οι ακριβείς ονομασίες στα μενού μπορεί να αλλάζουν από έκδοση σε έκδοση, οπότε δείτε τα παρακάτω βήματα ως οδηγό για τη σειρά της δουλειάς.
Βήμα 1: Ορίστε το API και το endpoint
- Δημιουργήστε έναν ορισμό API για την υπηρεσία σας, για παράδειγμα
ERP API. - Προσθέστε ένα endpoint. Η public πλευρά είναι η διεύθυνση που θα καλούν οι χρήστες. Η πλευρά target (backend) είναι η πραγματική υπηρεσία σας, για παράδειγμα το Boomi API Service από το Το ERP σας ως REST API με το Boomi. Αν το API σας είναι API Service στο Boomi integration, μπορείτε να το κάνετε import στο Cloud API Management αντί να το ορίσετε με το χέρι.
- Ρυθμίστε το key του endpoint: απαιτήστε API key και επιλέξτε πού θα το στέλνουν οι χρήστες (ένα header όπως
X-API-Keyείναι καλύτερο από query parameter, γιατί τα query strings καταλήγουν σε logs).
Βήμα 2: Δημιουργήστε package με plans
- Δημιουργήστε ένα package, για παράδειγμα
ERP for partners, και προσθέστε το API του βήματος 1. - Μέσα στο package, δημιουργήστε ένα plan για κάθε γραμμή του πίνακα plans. Σε κάθε plan ορίστε το throttle (κλήσεις ανά δευτερόλεπτο) και το quota (κλήσεις ανά ημέρα ή μήνα).
- Επιλέξτε ποια endpoints και methods περιλαμβάνει κάθε plan. Ένα trial plan μπορεί να έχει μόνο endpoints ανάγνωσης.
- Αποφασίστε αν τα keys ενός plan εκδίδονται αυτόματα ή χρειάζονται έγκριση. Για plans συνεργατών, η έγκριση είναι λογική προεπιλογή.
Βήμα 3: Ένταξη χρηστών
Υπάρχουν δύο τρόποι να δώσετε key σε έναν χρήστη:
- Μέσω developer portal. Ο συνεργάτης εγγράφεται, δημιουργεί μια εφαρμογή, επιλέγει plan και παίρνει key (αμέσως ή μετά από έγκρισή σας). Κλιμακώνεται καλά και κρατά αρχείο για το ποιος ζήτησε τι.
- Χειροκίνητα. Δημιουργείτε εσείς την εφαρμογή και το key στο dashboard και το στέλνετε με ασφαλή τρόπο. Αρκεί για εσωτερικές εφαρμογές ή τους πρώτους έναν-δύο συνεργάτες.
Σε κάθε περίπτωση, δημιουργήστε ξεχωριστά keys για το test και το production περιβάλλον του συνεργάτη.
Βήμα 4: Κλείστε την πίσω πόρτα
Αυτό το βήμα ξεχνιέται εύκολα και είναι απαραίτητο: το backend πρέπει να δέχεται κίνηση μόνο από το gateway. Αν ένας συνεργάτης μπορεί να καλέσει απευθείας το Boomi runtime σας, το key και τα όρια γίνονται προαιρετικά.
Συνηθισμένες επιλογές είναι ένα IP allowlist στο backend για τις διευθύνσεις του gateway, διαπιστευτήρια που ξέρει μόνο το gateway (ρυθμισμένα στην πλευρά target του endpoint) ή mutual TLS ανάμεσα σε gateway και backend.
Βήμα 5: Δοκιμάστε τους κανόνες
# Χωρίς key: πρέπει να απορριφθεί
curl -i https://api.example.com/erp/v1/customers/C-1042/balance
# Με trial key: πρέπει να πετύχει
curl -i -H "X-API-Key: <trial-key>" https://api.example.com/erp/v1/customers/C-1042/balance
# Σειρά κλήσεων: πρέπει να αρχίσουν να απορρίπτονται μόλις ξεπεραστεί το throttle
for i in $(seq 1 10); do curl -s -o /dev/null -w "%{http_code}\n" -H "X-API-Key: <trial-key>" https://api.example.com/erp/v1/customers/C-1042/balance; done
Σημειώστε ποιο status code και ποιο μήνυμα σφάλματος επιστρέφει το gateway όταν ξεπερνιέται ένα όριο, και τεκμηριώστε το για τους χρήστες, ώστε ο κώδικάς τους να περιμένει και να ξαναδοκιμάζει αντί να αποτυγχάνει.
Βήμα 6: Παρακολουθήστε τα reports
Μετά την έναρξη λειτουργίας, τα reports ανά key και ανά plan δείχνουν ποιος πλησιάζει τα όριά του, ποιος έχει σφάλματα και ποια endpoints χρησιμοποιούνται. Χρησιμοποιήστε τα για να προσαρμόσετε τα plans και για να μιλήσετε με έναν συνεργάτη πριν εξαντληθεί το quota του, όχι μετά.
Checklist
- Ένα key ανά εφαρμογή και ανά περιβάλλον
- Κάθε plan έχει και throttle και quota
- Τα keys στέλνονται σε header, όχι στο URL
- Το backend είναι προσβάσιμο μόνο μέσω του gateway
- Τα σφάλματα ορίων είναι τεκμηριωμένα για τους χρήστες
- Κάποιος ελέγχει τακτικά τα reports χρήσης
Για τη συνολική εικόνα, και για το πώς συγκρίνεται το Boomi με άλλα εργαλεία API management, δείτε τον οδηγό Διαχείριση APIs: τι είναι και πότε τη χρειάζεστε.