Skip to content

Lambda környezeti változók használata

A változók deklarálása a forráskódban akkor ideális, ha az adott forrásfájlon belül szeretnénk használni őket. Tegyük fel, hogy több olyan fájlunk van, amelyben ugyanazt a változót szeretnénk használni, vagy esetleg titkosítani szeretnénk a változó értékét. Ilyenkor jönnek segítségünkre a Lambda környezeti változók.

A lambda környezeti változók olyan karakterláncok kulcspárjai, amelyek a függvény verzió-specifikus konfigurációjában tárolódnak. Ez utóbbi akkor fontos, ha verziókezelést használunk a Lambdában. Egyelőre a kulcspáros részre koncentrálunk, a Lambda verziókról később beszélünk.

Környezeti változók definiálása

A környezeti változókat a Configuration (konfiguráció) fül, Environment variables (környezeti változók) szakaszában adhatjuk meg.

Az Edit (szerkesztés) gombra kattintva beállíthatjuk a környezeti változó kulcsát és értékét. Ehhez a bemutatóhoz hozzunk létre két változót: egyet a felhasználónév, egyet pedig a jelszó tárolására.

A Mentés gombra kattintás után a környezeti változók létrejönnek és elérhetővé válnak a Lambda futtatási időn keresztül. A folyamat környezetével érhetjük el őket, így:

const username = process.env.username;
const password = process.env.password;

Kulcs létrehozása titkosításhoz

A jelszavunk egy nagyon érzékeny információ, és szeretnénk úgy módosítani a kódunkat, hogy csak a Lambda kódunk tudja visszafejteni. A környezeti változók támogatják a titkosítást az AWS Key Management Service (KMS) segítségével.

Menjünk a KMS konzolra, és hozzunk létre egy új kulcsot. A Customer managed keys (ügyfél által kezelt kulcsok) alatt kattintsunk a Create key (kulcs létrehozása) gombra.

Ezután a kulcs típusát szimmetrikusra állítjuk be, és a kulcsunkat „simple-api-key”-nek nevezzük el az Alias alatt. Az alias bármikor megváltoztatható. Oktatási célokból egyelőre ne határozzuk meg a kulcs adminisztrációs és kulcshasználati jogosultságait.

Lambda környezeti változók titkosítása KMS segítségével

Most, amikor visszamegyünk a Lambdába, jelöljük be a Enable helpers for encryption in transit opciót. Minden változó mellett megjelenik egy új Encrypt (titkosítás) gomb. Az Encrypt gombra kattintva most már kiválaszthatjuk az újonnan létrehozott kulcsunkat.

A változó dekódolása

Ha megnézzük a változót, vagy kiíratjuk az értékét a Lambdából, akkor valami ilyesmit látunk:
AQICAHhc385PwJyf/tV5ZOhskZFcr5b6NMe/u3YFxJEWOhlnxQG776g/ozncvTV1p5KoSQucAAAAZzBlBgkqhkiG9w0BBwagWDBWAgEAMFEGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMGdpuISr9cRZoNj8TAgEQgCTHd1A1f6zmXa7cCbt8Q9UJqSetCvZ6m/I8VZuLC54k/0934ZE=

A dekódoláshoz két dologra van szükségünk:

  1. a változó visszafejtése a KMS Decrypt művelettel 🔓
  2. engedélyezzük a függvényünknek a KMS Decrypt művelet meghívását. 🔑

Először is módosítsuk a kódunkat a változó dekódolásához. Íme egy mintakód:

const plainUsername = process.env.username;
const encryptedPassword = process.env.password;
let decryptedPassword;

if (!decryptedPassword) {
    const kms = new AWS.KMS();
    try {
        const req = {
            CiphertextBlob: Buffer.from(encryptedPassword, 'base64'),
            EncryptionContext: {
                LambdaFunctionName: process.env.AWS_LAMBDA_FUNCTION_NAME
            },
        };
        const data = await kms.decrypt(req).promise();
        decryptedPassword = data.Plaintext.toString('ascii');
    } catch (err) {
        console.log('Decrypt error:', err);
        throw err;
    }
}

A kód végrehajtásakor hibát kapunk a CloudWatch-ban:

„errorType”:”AccessDeniedException”,”errorMessage”:”The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.”

A környezeti változó visszafejtéséhez a függvényünknek hozzáférésre van szüksége a titkosításhoz használt kulcshoz. Menjünk vissza még egyszer a KMS konzolhoz, és módosítsuk a Kulcsfelhasználókat. Most hozzáadjuk a Lambda végrehajtó szerepkörünket a kulcsfelhasználókhoz. A mi esetünkben a simple-api-role-t.

És kész! Sikeresen létrehoztuk a Lambda környezeti változókat, amelyeket most már több forrásfájlban is használhatunk, és biztosítottuk a jelszavunkat a KMS-szel! 🌩️⚡

Published inOktatóanyag
0 0 votes
Article Rating
Subscribe
Visszajelzés
guest

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments