Hogyan lehet elérni az API titkait az AWS Lambda használatával?

Hogyan Lehet Elerni Az Api Titkait Az Aws Lambda Hasznalataval



Az AWS-szolgáltatások bevált gyakorlatai két műveletet foglalnak magukban, azaz a tárolás-visszakeresés és az ellenőrzés-forgatás. Ezt a két gyakorlatot egyben egyesítve az AWS elindította a Secret Managert, amely segít a felhasználóknak megvédeni alkalmazásaik titkos információit. Az AWS Secret Managert széles körben használják tárolása , módosító , replikálása , és forgó adatbázis hitelesítő adatok, API-kulcsok, OAuth-tokenek stb.

Gyors vázlat

Ez a cikk a következő szempontokat tárgyalja:

Mi az AWS Lambda?

Az AWS Lambda egy számítási szolgáltatás kódok végrehajtására több környezetben és nyelven a szerverek biztosítása és kezelése nélkül. Ezenkívül az AWS Lambdát az AWS több különböző szolgáltatása is elindíthatja, mint például az S3 bucket, API-átjárók stb. Ez a szolgáltatás automatikusan méretezi az alkalmazást, és hatékonyan hajtja végre a kódot anélkül, hogy a felhasználónak további függőséget kellene telepítenie.







Ha többet szeretne megtudni a Lambda szolgáltatásról, olvassa el ezt a cikket itt: „Kezdő lépések az AWS Lambdával” .



Mi az AWS Secret Manager?

Az AWS Secret Manager lehetővé teszi a felhasználók számára, hogy biztonságossá és titkosítsák a bizalmas információ alkalmazások, például OAuth tokenek, adatbázis hitelesítő adatok, API-k stb. Ezek a bizalmas információk 'titok' . Ezekhez a titkokhoz csak arra felhatalmazott szervek férhetnek hozzá, és a biztonság fokozása érdekében forgathatók.



További információ az RDS-hitelesítő adatok Secret Managerben való tárolásáról ebben a cikkben: „Hogyan tárolhatjuk az Amazon RDS hitelesítő adatait a Secret Manager segítségével?”





Hogyan lehet elérni az API titkait az AWS-ben az AWS Lambda használatával?

A Lambda beépített támogatást nyújt több szolgáltatáshoz, pl. S3 bucket, API Gateway és Secret Manager. A lambda függvények segítségével lekérhető a beállított titkok értéke. Az AWS Lambda Functions API-titkainak használatával a felhasználók az AWS több szolgáltatásával is kapcsolatba léphetnek. Az ilyen API-titkok a lambda-funkciók engedélyezése szempontjából is fontosak.

Az API kulcsok eléréséhez az AWS Secret Managerben az AWS Lambda használatával, kövesse az alábbi lépéseket:



  • 1. lépés: Hozzon létre egy API-titkot
  • 2. lépés: Hozzon létre egy IAM-házirendet
  • 3. lépés: Hozzon létre egy IAM-szerepet
  • 4. lépés: Lambda szerepkör létrehozása

1. lépés: Hozzon létre egy API-titkot

Mielőtt hozzáférne egy API-kulcshoz az AWS Secret Managerben, először megtanuljuk hozzon létre egy API-titkot . Ebből a célból nyissa meg a 'Titkos menedzser' szolgáltatást a AWS felügyeleti konzol:

A Fő konzol az AWS titkos kezelőjében kattintson a gombra „Tárolj el egy új titkot” gomb:

Ban,-ben 'Titkos típus' blokk, válassza ki a „Más típusú titok” opció a különböző megjelenített lehetőségek közül:

Görgessen le a „Kulcs/érték párok” szakaszt, és biztosítsa a egyedi kulcs-érték pár az API-titokért. Nak nek add hozzá több kulcs-érték párok , kattintson a 'Sor hozzáadása' gomb:

Következő a 'Titkosítási kulcs' szakasz. Az AWS biztosít a alapértelmezett titkosítási kulcs a titokért. A felhasználó azonban egyéni nevet is megadhat a kulcsnak. Az alapértelmezett beállítás megtartásával kattintson a „ Következő ” gomb:

Ezen a felületen a felhasználónak meg kell adnia a egyedi név titkukért és a leírás, amely nem kötelező mező itt:

Azáltal, hogy megtartja a beállítások változatlanok , lépjen tovább a „ Következő ” gomb:

Következik a Áttekintés szakasz. Az összes megerősítéséhez információ feltéve van helyes , kattintson a ' Bolt ” gomb a felület alján található:

A titok az volt sikeresen létrehozva . Kattintson a ' Újratöltés ” gombot a titok nevének megjelenítéséhez Irányítópult :

2. lépés: Hozzon létre egy IAM-házirendet

Nak nek IAM szabályzat létrehozása, elérheti a IAM szolgáltatás az AWS Management Console-ból:

Tól az IAM oldalsávja szolgáltatás, kattintson a „ Irányelvek ' választási lehetőség:

A Házirend-konzol , kattintson a „Szabályzat létrehozása” gomb:

További információ az AWS IAM-szabályzatáról ebben a cikkben: „AWS IAM szabályzat példák”

Következő a „Engedélyek megadása” szakasz. Keressen és válassza ki a 'Titkos menedzser' szolgáltatás:

Görgessen le a „Műveletek engedélyezettek” Blokk. Itt a különböző hozzáférési szintek közül érintse meg a „ Olvas ' választási lehetőség. Válaszd ki a „Minden olvasási művelet” opciót engedélyezze az összes olvasást szolgáltatások ehhez a szabályzathoz:

Görgessen le hoz ' Erőforrások ” részt, és kattintson a „ARN hozzáadása” választási lehetőség:

Navigáljon vissza a AWS Secret Manager irányítópult és kattintson a titok nevére. Másolja ki a ' RNS alatti titokról Titkos ARN ” címke a megjelenített felületről:

A Konzol most , illessze be a másolt ARN-t a „ RNS ' terület:

Mielőtt rákattint a „ARN hozzáadása” gombra, kattintson a 'Ez a fiók' gombot, hogy megerősítse, hogy a titkok ugyanabban a fiókban léteznek. A beállítások konfigurálása után kattintson a gombra „ARN hozzáadása” gomb:

Után konfigurálása mind a beállítások a szabályzatban kattintson a „ Következő ” gomb:

Ban,-ben A szabályzat részleteit tartalmazó szakaszok , adja meg a szabályzat nevét a ' Szabályzat neve ' terület:

Kattintson a ' Házirend létrehozása ” gomb:

A irányelv létrejött sikeresen :

3. lépés: Hozzon létre egy IAM-szerepet

Ebben a szakaszban hozzon létre egy IAM-szerepkört, amely tartalmazza a Lambda-függvények számára a titkok eléréséhez szükséges engedélyeket. Ehhez kattintson a „ Szerepek ” opciót az IAM szerepkör oldalsávjáról, majd érintse meg a „Szerep létrehozása” gomb a felületről:

Miután rákattintott a „Szerep létrehozása” gombot, a következő felület jelenik meg. Válaszd ki a “AWS szolgáltatás” opciót a következő lehetőségek közül, mivel ezt csatolni fogjuk IAM szerepkör lambda funkcióval:

Ban,-ben „Használati eset” részben keresse meg a Lambda szerviz és válassza ki. Üsd a ' Következő ” gombot a kezelőfelület alján a továbblépéshez:

A következő felület , keresse meg a nevét Az irányelv neve amit korábban konfiguráltunk. A megjelenített eredmények közül válassza ki a szabályzat neve:

Kattints a ' Következő ” gomb alján felület a továbblépéshez:

Adja meg a egyedi azonosító neked IAM szerepkör az alábbi kiemelt mezőben:

Tartva a a többi beállítás alapértelmezett , kattintson a „Szerep létrehozása” gombot a felület aljára görgetve:

A szerep az volt sikeresen létrehozva:

Ha többet szeretne megtudni az IAM-szerepkör létrehozásáról az AWS-ben, olvassa el ezt a cikket: „Hogyan hozzunk létre IAM-szerepeket az AWS-ben” .

4. lépés: Hozzon létre egy lambda-függvényt

A következő lépés a lambda-függvény létrehozása. Ez a lambda függvény tartalmazza az IAM szerepkört, és végrehajtáskor megkapja a titkok értékét. A Lambda szolgáltatás eléréséhez keressen a „ Lambda ” a keresősávban AWS felügyeleti konzol . Az eredményben kattintson a szolgáltatás nevére a konzol megnyitásához:

A Lambda szolgáltatás kezdeti felületén kattintson a gombra „Funkció létrehozása” gomb:

Ez megjeleníti a „Funkció létrehozása” felület. Válaszd ki a “Szerző a semmiből” opciót, és folytassa a nevének megadásával Lambda funkció a kiemelt mezőben:

Ban,-ben Futásidejű mező , válaszd ki a ' Python 3.9 ” környezet:

Valami alatt Futásidejű szakasz , van egy „Alapértelmezett végrehajtási szerep módosítása” szakasz. Válaszd ki a „Meglévő szerepkör használata” opciót, majd adja meg a szerepet a „Meglévő szerepkör” terület:

Ugyanazon a felületen érintse meg a „Funkció létrehozása” gomb a felület alján:

Ha többet szeretne megtudni a lambda-függvény létrehozásáról, olvassa el ezt a cikket: „Hogyan hozzunk létre lambda-függvényt a Pyhton Runtime segítségével” .

A Lambda funkció létrejött. A következő lépés a kód megadása a Lambda funkcióhoz. Amikor ez a kód lefut, megjeleníti az értékeit Titkos menedzser:

import json
import boto3
import alap64
a botocore-ból. kivételek import ClientError

def lambda_handler ( esemény , kontextus ) :
környezet = esemény [ 'env' ]
titkos_név = 'shmaster19/%s/key' % környezet
régió_neve = 'ap-délkelet-1'

ülés = boto3. ülés . Ülés ( )
ügyfél = ülés. ügyfél (
szolgáltatás neve = 'titkosmenedzser' ,
régió_neve = régió_neve
)

próbáld ki :
titkos_érték_válasz = ügyfél. get_secret_value (
SecretId = titkos_név
)
kivéve a ClientError-t mint hibát :
nyomtatás ( hiba )
más :
ha 'SecretString' ban ben titkos_érték_válasz :
titok = json. terhelések ( titkos_érték_válasz [ 'SecretString' ] )
Visszatérés titok
más :
dekódolt_bináris_titkos = alap64. b64 dekódolni ( titkos_érték_válasz [ 'SecretBinary' ] )
Visszatérés dekódolt_bináris_titkos
  • json importálása: JSON-műveletek végrehajtására szolgál.
  • boto3 importálása: az SDK az AWS és a Python közötti kommunikációhoz.
  • import base64: Kódolási és dekódolási funkciók végrehajtására szolgál bináris adatokon Base64-ként.
  • ClientError importálása: Ez lehetővé teszi a felhasználók számára, hogy kezeljék a kivételeket az írott kódban.
  • titkos_név: Ebben a változóban adja meg a titok nevét. Vegye figyelembe, hogy ez a titok tartalmaz „%s” . Ilyenkor egy felhasználónak több hasonló formátumú kulcsa van. Például, ha egy felhasználó két titkot hozott létre, pl. „apikey/dev/key” és „apikey/prod/key” . Aztán a „%s” , ha a felhasználó megadja a „ dev ”, a Lambda funkció biztosítja a fejlesztési kulcs (apikey/dev/key) és fordítva.
  • boto. session.Session(): lehetővé teszi a felhasználók számára, hogy szolgáltatási ügyfeleket és válaszokat hozzanak létre.
  • régió_neve: Adja meg annak a régiónak a nevét, amelyben az AWS-titka be van állítva.
  • Secret_value_response: Ebben a változóban a ' client.get_secret_value ” függvény, amely visszaadja a titok értékét.
  • Decoded_binary_secert: A titok értékének megszerzése után az tovább lesz dekódolva alap 64 formátum .

Miután beillesztette a kódot a lambda függvénybe, kattintson a „ Telepítés ” gombot a változtatások mentéséhez és alkalmazásához:

5. lépés: A kód tesztelése

A blog ezen részében ellenőrizni fogjuk, hogy a kód működik-e vagy sem. Ehhez kattintson a „ Teszt ” gombot, miután sikeresen telepítette a lambda funkció módosításait:

A következő felületen adja meg a név a teszteléshez esemény a 'Esemény neve' terület:

Görgessen le a Esemény JSON szakasz , adja meg a „ env ” kulcsot, és adja meg az értéket JSON formátumban. A ' érték ” címre kerül átadásra „%s” . Mivel az általunk meghatározott titkok tartalmazzák a „ dev ' érték, a ' dev ' érték átadásra kerül a ' env ” változó. A Lambda funkció azonosítja a titkot, amikor a kód végrehajtásra kerül, mivel az adott titok azonosítója szerepel a kódban. A részletek megadása után kattintson a „ Megment ” gomb:

Ha az esemény sikeresen létrejött, kattintson a „ Teszt ” gomb:

Itt van sikeresen megszerezték a megadott titkunk értéke:

Ebből az útmutatóból ennyi.

Következtetés

Az API-kulcsok eléréséhez a Secret Managerben a Lambda használatával először hozzon létre egy titkos API-t, IAM-házirendet, szerepkört és Lambda-függvényt, és futtassa a funkció kódját. A lambda függvények meghívhatók az AWS Secret Manager értékeinek lekérésére, ha a kód végrehajtása során megadjuk a titok azonosítóját. Ez a cikk lépésről lépésre ismerteti az API-kulcsok elérését az AWS Secret Managerben az AWS Lambda használatával.