Πώς να αποκτήσετε πρόσβαση σε μυστικά API χρησιμοποιώντας το AWS Lambda;

Pos Na Apoktesete Prosbase Se Mystika Api Chresimopoiontas To Aws Lambda



Οι βέλτιστες πρακτικές των Υπηρεσιών AWS περιλαμβάνουν δύο ενέργειες, δηλαδή, Αποθήκευση-Ανάκτηση και Έλεγχος-Εναλλαγή. Συνδυάζοντας αυτές τις δύο πρακτικές σε μία, η AWS κυκλοφόρησε το Secret Manager που βοηθά τον χρήστη να προστατεύει τις μυστικές πληροφορίες των εφαρμογών του. Το AWS Secret Manager χρησιμοποιείται ευρέως για τη δημιουργία, εναποθήκευση , τροποποιώντας , αναπαράγοντας και περιστρεφόμενα διαπιστευτήρια βάσης δεδομένων, κλειδιά API, διακριτικά OAuth κ.λπ.

Γρήγορο περίγραμμα

Αυτό το άρθρο καλύπτει τις ακόλουθες πτυχές:

Τι είναι το AWS Lambda;

Το AWS Lambda είναι μια υπολογιστική υπηρεσία για την εκτέλεση κωδικών σε πολλαπλά περιβάλλοντα και γλώσσες χωρίς την παροχή και τη διαχείριση των διακομιστών. Επιπλέον, το AWS Lambda μπορεί να ενεργοποιηθεί από πολλές διαφορετικές υπηρεσίες του AWS, όπως S3 bucket, API Gateways κ.λπ. Αυτή η υπηρεσία κλιμακώνει αυτόματα την εφαρμογή και εκτελεί αποτελεσματικά τον κώδικα χωρίς να απαιτεί από τον χρήστη να εγκαταστήσει πρόσθετες εξαρτήσεις.







Για να μάθετε περισσότερα σχετικά με την υπηρεσία Lambda, ανατρέξτε σε αυτό το άρθρο εδώ: 'Ξεκινώντας με το AWS Lambda' .



Τι είναι το AWS Secret Manager;

Το AWS Secret Manager επιτρέπει στους χρήστες να ασφαλίζουν και να κρυπτογραφούν το εμπιστευτικές πληροφορίες εφαρμογών όπως διακριτικά OAuth, διαπιστευτήρια βάσης δεδομένων, API κ.λπ. Αυτές οι εμπιστευτικές πληροφορίες αναφέρονται ως 'μυστικό' . Αυτά τα μυστικά είναι προσβάσιμα μόνο από εξουσιοδοτημένους φορείς και μπορούν να εναλλάσσονται προκειμένου να ενισχυθεί η ασφάλεια.



Μάθετε περισσότερα σχετικά με την αποθήκευση διαπιστευτηρίων RDS στο Secret Manager, ανατρέχοντας σε αυτό το άρθρο: 'Πώς να αποθηκεύσετε τα διαπιστευτήρια Amazon RDS χρησιμοποιώντας το Secret Manager;'





Πώς να αποκτήσετε πρόσβαση στα μυστικά API στο AWS χρησιμοποιώντας το AWS Lambda;

Το Lambda παρέχει ενσωματωμένη υποστήριξη για πολλαπλές υπηρεσίες π.χ. S3 bucket, API Gateway και Secret Manager. Οι συναρτήσεις λάμδα μπορούν να χρησιμοποιηθούν για να λάβετε την τιμή των διαμορφωμένων μυστικών. Χρησιμοποιώντας τα μυστικά API στο AWS Lambda Functions, οι χρήστες μπορούν να αλληλεπιδράσουν με πολλές υπηρεσίες του AWS. Τέτοια μυστικά API είναι επίσης σημαντικά για την εξουσιοδότηση των λειτουργιών λάμδα.

Για να αποκτήσετε πρόσβαση στα κλειδιά API στο AWS Secret Manager με χρήση του AWS Lambda, ακολουθήστε τα παρακάτω βήματα:



  • Βήμα 1: Δημιουργήστε ένα μυστικό API
  • Βήμα 2: Δημιουργήστε μια πολιτική IAM
  • Βήμα 3: Δημιουργήστε έναν ρόλο IAM
  • Βήμα 4: Δημιουργήστε έναν ρόλο λάμδα

Βήμα 1: Δημιουργήστε ένα μυστικό API

Πριν αποκτήσουμε πρόσβαση σε ένα κλειδί API στο AWS Secret Manager, θα μάθουμε πρώτα δημιουργήστε ένα μυστικό API . Για το σκοπό αυτό, αποκτήστε πρόσβαση στο «Μυστικός Διευθυντής» υπηρεσία από το Κονσόλα διαχείρισης AWS:

Στο Κύρια κονσόλα του AWS Secret Manager, κάντε κλικ στο “Αποθηκεύστε ένα νέο μυστικό” κουμπί:

Στο «Μυστικός τύπος» μπλοκ, επιλέξτε το “Άλλο είδος μυστικού” επιλογή από τις διάφορες επιλογές που εμφανίζονται:

Κάντε κύλιση προς τα κάτω στο 'Ζεύγη κλειδιών/τιμών' τμήμα και παρέχει α μοναδικό ζεύγος κλειδιού-τιμής για το μυστικό API σας. Προς την Προσθήκη περισσότερο ζεύγη κλειδιού-τιμής , Κάνε κλικ στο 'Πρόσθεσε γραμμή' κουμπί:

Επόμενο είναι το 'Κλειδί κρυπτογράφησης' Ενότητα. Το AWS παρέχει α προεπιλεγμένο κλειδί κρυπτογράφησης για το μυστικό. Ωστόσο, ο χρήστης μπορεί επίσης να παρέχει ένα προσαρμοσμένο όνομα για το κλειδί. Διατηρώντας την προεπιλογή, κάντε κλικ στο ' Επόμενο Κουμπί ”:

Σε αυτή τη διεπαφή, ο χρήστης πρέπει να παρέχει ένα μοναδικό όνομα για το μυστικό τους και α περιγραφή που είναι προαιρετική πεδίο εδώ:

Διατηρώντας το ρυθμίσεις αμετάβλητες , προχωρήστε περαιτέρω κάνοντας κλικ στο « Επόμενο Κουμπί ”:

Ακολουθεί το Ενότητα αναθεώρησης. Για να επιβεβαιώσετε όλα τα πληροφορίες παρέχεται είναι σωστός , Κάνε κλικ στο ' Κατάστημα κουμπί ” που βρίσκεται στο κάτω μέρος της διεπαφής:

Το μυστικό ήταν δημιουργήθηκε με επιτυχία . Κάνε κλικ στο ' Γεμίζω πάλι κουμπί για να εμφανίσετε το όνομα του μυστικού στο Ταμπλό :

Βήμα 2: Δημιουργήστε μια πολιτική IAM

Προς την δημιουργήστε μια πολιτική IAM, πρόσβαση στο Υπηρεσία IAM από την Κονσόλα διαχείρισης AWS:

Από το πλαϊνή γραμμή του IAM υπηρεσία, κάντε κλικ στο ' πολιτικών ” επιλογή:

Στο Πολιτική κονσόλα , Κάνε κλικ στο «Δημιουργία πολιτικής» κουμπί:

Μάθετε περισσότερα σχετικά με την πολιτική AWS IAM ανατρέχοντας σε αυτό το άρθρο: 'Παραδείγματα πολιτικής AWS IAM'

Επόμενο είναι το 'Καθορισμός δικαιωμάτων' Ενότητα. Αναζητήστε και επιλέξτε το «Μυστικός Διευθυντής» υπηρεσία:

Κάντε κύλιση προς τα κάτω στο «Επιτρέπονται ενέργειες» ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Εδώ, από τα διαφορετικά επίπεδα πρόσβασης, πατήστε το ' Ανάγνωση ” επιλογή. Επίλεξε το 'Όλες οι ενέργειες ανάγνωσης' επιλογή να ενεργοποιήστε όλα τα Read υπηρεσίες για αυτήν την πολιτική:

Μετακινηθείτε προς τα κάτω στο ' Πόροι » και κάντε κλικ στο 'Προσθήκη ARN' επιλογή:

Πλοηγηθείτε πίσω στο Πίνακας ελέγχου AWS Secret Manager και κάντε κλικ στο όνομα του μυστικού. Αντιγράψτε το ' RNA 'του μυστικού κάτω από το ' Μυστικό ARN ετικέτα ' από την εμφανιζόμενη διεπαφή:

Στο Κονσόλα τώρα , επικολλήστε το αντιγραμμένο ARN στο ' RNA » πεδίο:

Πριν κάνετε κλικ στο 'Προσθήκη ARN' κουμπί, κάντε κλικ στο 'Αυτός ο λογαριασμός' κουμπί για να επιβεβαιώσετε ότι τα μυστικά υπάρχουν στον ίδιο λογαριασμό. Αφού διαμορφώσετε τις ρυθμίσεις, κάντε κλικ στο 'Προσθήκη ARN' κουμπί:

Μετά διαμόρφωση Ολα τα Ρυθμίσεις της πολιτικής, κάντε κλικ στο ' Επόμενο Κουμπί ”:

Στο Ενότητες λεπτομερειών πολιτικής , δώστε το όνομα για την πολιτική στο ' Όνομα πολιτικής ' πεδίο:

Κάνε κλικ στο ' Δημιουργία πολιτικής κουμπί ”:

ο πολιτική έχει δημιουργηθεί επιτυχώς :

Βήμα 3: Δημιουργήστε έναν ρόλο IAM

Σε αυτήν την ενότητα, δημιουργήστε έναν ρόλο IAM που περιέχει τα απαιτούμενα δικαιώματα για τις λειτουργίες Lambda για πρόσβαση στα μυστικά. Για το σκοπό αυτό, κάντε κλικ στο « Ρόλοι ” επιλογή από την πλαϊνή γραμμή του ρόλου IAM και, στη συνέχεια, πατήστε το «Δημιουργία ρόλου» κουμπί από τη διεπαφή:

Αφού κάνετε κλικ στο «Δημιουργία ρόλου» κουμπί, θα εμφανιστεί η ακόλουθη διεπαφή. Επίλεξε το “Υπηρεσία AWS” επιλογή από τις παρακάτω επιλογές καθώς θα το επισυνάψουμε ρόλος IAM με τη συνάρτηση λάμδα:

Στο “Περίπτωση χρήσης” ενότητα, αναζητήστε το Υπηρεσία λάμδα και επιλέξτε το. Χτύπα το ' Επόμενο κουμπί ” στο κάτω μέρος της διεπαφής για να προχωρήσετε περαιτέρω:

Στο επόμενη διεπαφή , αναζητήστε το όνομα του Όνομα πολιτικής που ρυθμίσαμε νωρίτερα. Από τα εμφανιζόμενα αποτελέσματα, επιλέξτε το όνομα πολιτικής:

Κάντε κλικ στο ' Επόμενο κουμπί ” στο κάτω μέρος του διεπαφή για να προχωρήσετε περαιτέρω:

Παρέχουν μια μοναδικό αναγνωριστικό για σας ρόλος IAM στο παρακάτω επισημασμένο πεδίο:

Διατηρώντας το υπόλοιπες ρυθμίσεις ως προεπιλογή , Κάνε κλικ στο «Δημιουργία ρόλου» κουμπί κάνοντας κύλιση προς τα κάτω στο κάτω μέρος της διεπαφής:

Ο ρόλος ήταν επιτυχώς δημιουργήθηκε:

Για να μάθετε περισσότερα σχετικά με τη δημιουργία ενός ρόλου IAM στο AWS, ανατρέξτε σε αυτό το άρθρο: 'Πώς να δημιουργήσετε ρόλους IAM στο AWS' .

Βήμα 4: Δημιουργήστε μια συνάρτηση λάμδα

Το επόμενο βήμα είναι να δημιουργήσετε τη συνάρτηση λάμδα. Αυτή η συνάρτηση λάμδα θα περιέχει τον ρόλο IAM και θα λάβει την τιμή των μυστικών όταν εκτελεστεί. Για πρόσβαση στην υπηρεσία Lambda, αναζητήστε το ' Λάμδα ” στη γραμμή αναζήτησης του Κονσόλα διαχείρισης AWS . Κάντε κλικ στο όνομα της υπηρεσίας από το αποτέλεσμα για να επισκεφτείτε την κονσόλα:

Στην αρχική διεπαφή της υπηρεσίας Lambda, κάντε κλικ στο 'Δημιουργία λειτουργίας' κουμπί:

Αυτό θα εμφανίσει το 'Δημιουργία λειτουργίας' διεπαφή. Επίλεξε το «Συγγραφέας από την αρχή» επιλογή και προχωρήστε περαιτέρω παρέχοντας το όνομα για το Λειτουργία λάμδα στο επισημασμένο πεδίο:

Στο Πεδίο χρόνου εκτέλεσης , επίλεξε το ' Python 3.9 ' περιβάλλον:

Κάτω από Ενότητα χρόνου εκτέλεσης , υπάρχει ένα 'Αλλαγή προεπιλεγμένου ρόλου εκτέλεσης' Ενότητα. Επίλεξε το 'Χρησιμοποιήστε έναν υπάρχοντα ρόλο' επιλογή και, στη συνέχεια, καθορίστε το ρόλο στο «Υπάρχοντας ρόλος» πεδίο:

Στην ίδια διεπαφή, πατήστε το 'Δημιουργία λειτουργίας' κουμπί στο κάτω μέρος της διεπαφής:

Για να μάθετε περισσότερα σχετικά με τη δημιουργία μιας συνάρτησης λάμδα, ανατρέξτε σε αυτό το άρθρο: 'Πώς να δημιουργήσετε μια συνάρτηση λάμδα με Pyhton Runtime' .

Η συνάρτηση Λάμδα έχει δημιουργηθεί. Το επόμενο βήμα είναι να δώσετε τον κωδικό στη συνάρτηση Lambda. Όταν εκτελεστεί αυτός ο κώδικας, θα εμφανίσει τις τιμές του Secret Manager:

εισαγωγή json
εισαγωγή boto3
εισαγωγή βάση64
από botocore. εξαιρέσεις εισαγωγή Σφάλμα πελάτη

def lambda_handler ( Εκδήλωση , συμφραζόμενα ) :
περιβάλλον = Εκδήλωση [ 'env' ]
μυστικό_όνομα = 'shmaster19/%s/key' % περιβάλλον
όνομα_περιοχής = 'ap-southeast-1'

συνεδρία = boto3. συνεδρία . Συνεδρία ( )
πελάτης = συνεδρία. πελάτης (
Όνομα Υπηρεσίας = 'διαχειριστής μυστικών' ,
όνομα_περιοχής = όνομα_περιοχής
)

δοκιμάστε :
Secret_value_response = πελάτης. get_secret_value (
SecretId = μυστικό_όνομα
)
εκτός από το ClientError ως σφάλμα :
Τυπώνω ( λάθος )
αλλού :
αν 'SecretString' σε Secret_value_response :
μυστικό = json. φορτία ( Secret_value_response [ 'SecretString' ] )
ΕΠΙΣΤΡΟΦΗ μυστικό
αλλού :
decoded_binary_secret = βάση64. b64αποκωδικοποίηση ( Secret_value_Response [ 'SecretBinary' ] )
ΕΠΙΣΤΡΟΦΗ decoded_binary_secret
  • εισαγωγή json: χρησιμοποιείται για την εκτέλεση λειτουργιών JSON.
  • εισαγωγή boto3: είναι το SDK για την επικοινωνία μεταξύ AWS και Python.
  • εισαγωγή βάσης64: Χρησιμοποιείται για την εκτέλεση λειτουργιών κωδικοποίησης και αποκωδικοποίησης σε δυαδικά δεδομένα ως Base64.
  • Εισαγωγή ClientError: Αυτό επιτρέπει στους χρήστες να χειρίζονται εξαιρέσεις στον γραπτό κώδικα.
  • secret_name: Σε αυτήν τη μεταβλητή, δώστε το όνομα του μυστικού σας. Σημειώστε ότι αυτό το μυστικό περιέχει '%μικρό' . Αυτό συμβαίνει όταν ένας χρήστης έχει πολλά κλειδιά παρόμοιας μορφής. Για παράδειγμα, εάν ένας χρήστης έχει δημιουργήσει δύο μυστικά π.χ. 'apikey/dev/key' και “apikey/prod/key” . Στη συνέχεια στο '%μικρό' , εάν ο χρήστης παρέχει ' dev ”, η συνάρτηση Λάμδα θα παρέχει το κλειδί ανάπτυξης (apikey/dev/key) και αντίστροφα.
  • boto. session.Session(): επιτρέπει στους χρήστες να δημιουργούν πελάτες υπηρεσιών και απαντήσεις.
  • περιοχή_όνομα: Δώστε το όνομα της περιοχής στην οποία έχει διαμορφωθεί το μυστικό AWS σας.
  • Secret_value_response: Σε αυτή τη μεταβλητή, χρησιμοποιούμε το ' client.get_secret_value Συνάρτηση ” η οποία θα επιστρέψει την τιμή του μυστικού.
  • Decoded_binary_secert: Μετά την απόκτηση της αξίας του μυστικού, θα αποκωδικοποιηθεί περαιτέρω μορφή βάσης 64 .

Αφού επικολλήσετε τον κώδικα στη συνάρτηση Lambda, κάντε κλικ στο ' Αναπτύσσω κουμπί ” για αποθήκευση και εφαρμογή αλλαγών:

Βήμα 5: Δοκιμή του Κώδικα

Σε αυτήν την ενότητα του ιστολογίου, θα επαληθεύσουμε εάν ο κώδικας λειτουργεί ή όχι. Για το σκοπό αυτό, κάντε κλικ στο « Δοκιμή κουμπί ” μετά την επιτυχή ανάπτυξη των αλλαγών στη λειτουργία Lambda:

Στην επόμενη διεπαφή, δώστε το όνομα για τη δοκιμή εκδήλωση στο “Όνομα εκδήλωσης” πεδίο:

Κάντε κύλιση προς τα κάτω στο Ενότητα συμβάντος JSON , καθορίστε το ' env πληκτρολογήστε και δώστε την τιμή σε μορφή JSON. Ο ' αξία ” του κλειδιού θα περάσει στο '%μικρό' . Καθώς τα μυστικά που έχουμε καθορίσει περιέχουν το ' dev 'αξία, η ' dev Η τιμή ' μεταβιβάζεται στο ' env ” μεταβλητή. Η συνάρτηση Lambda θα αναγνωρίσει το μυστικό όταν εκτελεστεί ο κώδικας καθώς το αναγνωριστικό του συγκεκριμένου μυστικού παρέχεται στον κώδικα. Αφού καθορίσετε τις λεπτομέρειες, κάντε κλικ στο ' Αποθηκεύσετε κουμπί ”:

Όταν η εκδήλωση δημιουργηθεί με επιτυχία, κάντε κλικ στο ' Δοκιμή κουμπί ”:

Εδώ, έχουμε αποκτήθηκε με επιτυχία η αξία του καθορισμένου μυστικού μας:

Αυτό είναι όλο από αυτόν τον οδηγό.

συμπέρασμα

Για να αποκτήσετε πρόσβαση στα κλειδιά API στο Secret Manager χρησιμοποιώντας το Lambda, δημιουργήστε πρώτα μια Συνάρτηση Secret API, Πολιτική IAM, Ρόλο και Lambda και εκτελέστε τον κώδικα της συνάρτησης. Οι συναρτήσεις λάμδα μπορούν να κληθούν για να ληφθούν οι τιμές του AWS Secret Manager καθορίζοντας το αναγνωριστικό του μυστικού κατά την εκτέλεση του κώδικα. Αυτό το άρθρο παρέχει οδηγίες βήμα προς βήμα για τον τρόπο πρόσβασης στα κλειδιά API στο AWS Secret Manager χρησιμοποιώντας το AWS Lambda.