AWS Lambda'yı Kullanarak API Sırlarına Nasıl Erişilir?

Aws Lambda Yi Kullanarak Api Sirlarina Nasil Erisilir



AWS Hizmetlerinin en iyi uygulamaları iki eylemi içerir; yani Sakla-Al ve Denetle-Rotale. Bu iki uygulamayı tek bir uygulamada birleştiren AWS, kullanıcının uygulamalarının gizli bilgilerini korumasına yardımcı olan Secret Manager'ı başlattı. AWS Secret Manager, aşağıdakileri oluşturmak için yaygın olarak kullanılır: depolama , değişiklik yapmak , kopyalama ve dönüşümlü veritabanı kimlik bilgileri, API Anahtarları, OAuth belirteçleri vb.

Hızlı Taslak

Bu makale aşağıdaki hususları kapsamaktadır:

AWS Lambda nedir?

AWS Lambda, sunucuları sağlamaya ve yönetmeye gerek kalmadan birden çok ortamda ve dilde kod yürütmeye yönelik bir bilgi işlem hizmetidir. Ayrıca AWS Lambda, S3 klasörü, API Ağ Geçitleri vb. gibi birden fazla farklı AWS hizmeti tarafından tetiklenebilir. Bu hizmet, uygulamayı otomatik olarak ölçeklendirir ve kullanıcının herhangi bir ek bağımlılık yüklemesine gerek kalmadan kodu verimli bir şekilde çalıştırır.







Lambda hizmeti hakkında daha fazla bilgi edinmek için buradaki makaleye bakın: “AWS Lambda'ya Başlarken” .



AWS Gizli Yöneticisi nedir?

AWS Secret Manager, kullanıcıların güvenlik altına almasına ve şifrelemesine olanak tanır. kesin bilgi OAuth belirteçleri, veritabanı kimlik bilgileri, API'ler vb. uygulamalardan oluşur. Bu gizli bilgilere, 'gizli' . Bu sırlara yalnızca yetkili makamlar tarafından erişilebilir ve güvenliği artırmak amacıyla değiştirilebilmektedir.



Bu makaleye başvurarak RDS kimlik bilgilerinin Gizli Yönetici'de saklanması hakkında daha fazla bilgi edinin: “Amazon RDS Kimlik Bilgileri Secret Manager Kullanılarak Nasıl Saklanır?”





AWS Lambda'yı Kullanarak AWS'de API Sırlarına Nasıl Erişilir?

Lambda, birden fazla hizmet için yerleşik destek sağlar; S3 paketi, API Ağ Geçidi ve Gizli Yönetici. Lambda işlevleri, yapılandırılmış gizli dizilerin değerini elde etmek için kullanılabilir. Kullanıcılar, AWS Lambda Functions'taki API sırlarını kullanarak birden fazla AWS hizmetiyle etkileşimde bulunabilir. Bu tür API sırları lambda işlevlerinin yetkilendirilmesi açısından da önemlidir.

AWS Secret Manager'da AWS Lambda'yı kullanarak API Anahtarlarına erişmek için aşağıdaki adımları izleyin:



  • 1. Adım: API Sırrı Oluşturun
  • 2. Adım: Bir IAM Politikası oluşturun
  • 3. Adım: Bir IAM Rolü Oluşturun
  • 4. Adım: Lambda Rolü Oluşturun

1. Adım: API Sırrı Oluşturun

AWS Secret Manager'da bir API anahtarına erişmeden önce ilk olarak şunları öğreneceğiz: API sırrı oluştur . Bu amaçla şuraya erişin: “Gizli Yönetici” servisinden AWS Yönetim Konsolu:

Üzerinde Ana Konsol AWS Secret Manager'da, “Yeni bir sır sakla” düğme:

İçinde “Gizli tip” engelle, seç “Başka tür bir sır” Görüntülenen çeşitli seçenekler arasından seçim yapın:

Aşağıya doğru kaydırın “Anahtar/değer çiftleri” bölüm sağlayın ve benzersiz anahtar/değer çifti API sırrınız için. İle eklemek Daha anahtar/değer çiftleri , tıkla 'Satır ekle' düğme:

Sonraki 'Şifreleme anahtarı' bölüm. AWS şunları sağlar: varsayılan şifreleme anahtarı sır için. Ancak kullanıcı anahtar için özel bir ad da sağlayabilir. Varsayılanı koruyarak “ Sonraki ' düğme:

Bu arayüzde kullanıcının bir bilgi sağlaması gerekir. benzersiz ad onların sırrı ve bir isteğe bağlı olan açıklama buradaki alan:

tutarak ayarlar değişmedi , “ üzerine tıklayarak devam edin Sonraki ' düğme:

Sonra geliyor İnceleme bölümü. Tümünü onaylamak için bilgi sağlanan doğru , tıkla ' Mağaza Arayüzün alt kısmında bulunan 'düğmesi:

İşin sırrı başarıyla oluşturuldu . Tıkla ' Tekrar yükle Sırrın adını ekranda görüntülemek için 'düğmesi Gösterge Paneli :

2. Adım: Bir IAM Politikası oluşturun

İle bir IAM politikası oluşturun, Erişmek IAM hizmeti AWS Yönetim Konsolu'ndan:

itibaren IAM'in kenar çubuğu hizmeti için “ Politikalar ' seçenek:

Üzerinde Politika konsolu , tıkla “Politika oluştur” düğme:

Bu makaleye başvurarak AWS IAM politikası hakkında daha fazla bilgi edinin: “AWS IAM Politikası Örnekleri”

Sonraki “İzinleri Belirtin” bölüm. Arayın ve seçin “Gizli Yönetici” hizmet:

Aşağıya doğru kaydırın “İzin verilen eylemler” engellemek. Burada, farklı Erişim düzeylerinden “ Okumak ' seçenek. Şunu seçin: “Tüm okuma eylemleri” seçeneği tüm Okumayı etkinleştir Bu politikaya ilişkin hizmetler:

Aşağı kaydır Kaynaklar ” bölümüne tıklayın ve “ARN'yi ekle” seçenek:

Şuraya geri gidin: AWS Gizli Yönetici Kontrol Paneli ve sırrın adına tıklayın. Kopyala ' RNA ' altındaki sırrın ' Gizli ARN Görüntülenen arayüzdeki ” etiketi:

Üzerinde Şimdi konsol , kopyalanan ARN'yi “ RNA ' alan:

Tıklamadan önce “ARN'leri ekle” düğmesine tıklayın 'Bu hesap' sırların aynı hesapta mevcut olduğunu onaylamak için düğme. Ayarları yapılandırdıktan sonra, “ARN'leri ekle” düğme:

Sonrasında yapılandırma hepsi ayarlar Politikanın “ Sonraki ' düğme:

İçinde Politika ayrıntıları bölümleri , politikanın adını ' Poliçe ismi ' alan:

Tıkla ' Politika oluştur ' düğme:

politika yaratıldı başarıyla :

3. Adım: Bir IAM Rolü Oluşturun

Bu bölümde Lambda işlevlerinin gizli dizilere erişmesi için gerekli izinleri içeren bir IAM rolü oluşturun. Bu amaçla “ Roller IAM rolünün kenar çubuğundan ” seçeneğine ve ardından “Rol oluştur” arayüzdeki düğme:

Üzerine tıkladıktan sonra “Rol oluştur” butonuna bastığınızda aşağıdaki arayüz karşınıza çıkacaktır. Şunu seçin: “AWS hizmeti” bunu ekleyeceğimiz için aşağıdaki seçeneklerden birini seçin IAM rolü lambda fonksiyonuyla:

İçinde “Kullanım örneği” bölümünde arama yapın Lambda servisi ve onu seçin. I vur ' Sonraki Daha ileri gitmek için arayüzün alt kısmındaki 'düğmesi:

Üzerinde sonraki arayüz , adını arayın Politikanın adı daha önce yapılandırdığımız. Görüntülenen sonuçlardan, Poliçe ismi:

Tıkla ' Sonraki alt kısmındaki ”düğmesine daha ileri gitmek için arayüz:

Bir sağlayın benzersiz tanımlayıcı senin için IAM rolü aşağıdaki vurgulanan alanda:

tutmak ayarların geri kalanı varsayılan olarak , tıkla “Rol oluştur” Arayüzün altına doğru kaydırarak düğmesine basın:

Rol şuydu: başarıyla oluşturuldu:

AWS'de IAM rolü oluşturma hakkında daha fazla bilgi edinmek için şu makaleye bakın: “AWS'de IAM Rolleri Nasıl Oluşturulur” .

Adım 4: Lambda İşlevi Oluşturun

Bir sonraki adım Lambda Fonksiyonunu oluşturmaktır. Bu lambda işlevi IAM rolünü içerecek ve yürütüldüğünde gizli dizilerin değerini elde edecektir. Lambda hizmetine erişmek için “ Lambda ' arama çubuğunda AWS Yönetim konsolu . Konsolu ziyaret etmek için sonuçtan hizmetin adına tıklayın:

Lambda Hizmetinin Başlangıç ​​arayüzünde, “İşlev oluştur” düğme:

Bu, aşağıdakileri gösterecektir: “İşlev oluştur” arayüz. Şunu seçin: “Sıfırdan yazar” seçeneğini belirleyin ve öğenin adını girerek devam edin. Lambda Fonksiyonu vurgulanan alanda:

İçinde Çalışma zamanı alanı , “ Python 3.9 ' çevre:

Aşağıda Çalışma Zamanı Bölümü , var “Varsayılan yürütme rolünü değiştir” bölüm. Şunu seçin: “Mevcut bir rolü kullan” seçeneğini seçin ve ardından rolü belirtin. “Mevcut rol” alan:

Aynı arayüzde, “İşlev oluştur” arayüzün altındaki düğme:

Lambda İşlevi oluşturma hakkında daha fazla bilgi edinmek için şu makaleye bakın: “Pyhton Runtime ile Lambda Fonksiyonu Nasıl Oluşturulur” .

Lambda işlevi oluşturuldu. Bir sonraki adım, kodu Lambda işlevine sağlamaktır. Bu kod çalıştırıldığında, değerleri gösterecektir. Gizli Yönetici:

içe aktarmak json
içe aktarmak boto3
içe aktarmak temel64
botocore'dan. istisnalar içe aktarmak İstemci Hatası

def lambda_handler ( etkinlik , bağlam ) :
çevre = etkinlik [ 'çevre' ]
gizli_adı = 'shmaster19/%s/anahtar' % çevre
bölge_adı = 'ap-güneydoğu-1'

oturum = boto3. oturum . Oturum ( )
müşteri = oturum. müşteri (
hizmet adı = 'sır yöneticisi' ,
bölge_adı = bölge_adı
)

denemek :
secret_value_response = müşteri. get_secret_value (
Gizli Kimlik = gizli_adı
)
hata olarak ClientError hariç :
Yazdır ( hata )
başka :
eğer 'Gizli Dize' içinde secret_value_response :
gizli = json.json. yükler ( secret_value_response [ 'Gizli Dize' ] )
geri dönmek gizli
başka :
decoded_binary_secret = base64. b64decode ( secret_value_Response [ 'Gizli İkili' ] )
geri dönmek decoded_binary_secret
  • json'u içe aktar: JSON işlemlerini gerçekleştirmek için kullanılır.
  • boto3'ü içe aktar: AWS ve Python arasındaki iletişim için SDK'dır.
  • base64'ü içe aktar: Base64 olarak ikili veriler üzerinde kodlama ve kod çözme işlevlerini gerçekleştirmek için kullanılır.
  • ClientError'ı içe aktar: Bu, kullanıcıların yazılı koddaki istisnaları ele almasını sağlar.
  • gizli_adı: Bu değişkende sırrınızın adını girin. Bu sırrın şunları içerdiğini unutmayın '%S' . Bu, bir kullanıcının benzer formatta birden fazla anahtara sahip olduğu zamandır. Örneğin, bir kullanıcı iki sır oluşturduysa; “apikey/dev/anahtar” Ve “apikey/ürün/anahtar” . Daha sonra '%S' , eğer kullanıcı şunu sağlarsa: ' geliştirici ”, Lambda işlevi şunları sağlayacaktır: geliştirme anahtarı (apikey/dev/key) ve bunun tersi de geçerlidir.
  • boto. oturum.Session(): kullanıcıların hizmet istemcileri ve yanıtları oluşturmasına olanak tanır.
  • bölge_adı: AWS sırrınızın yapılandırıldığı bölgenin adını sağlayın.
  • Secret_value_response: Bu değişkende “ client.get_secret_value Sırrın değerini döndürecek ” işlevi.
  • Decoded_binary_secert: Sırrın değeri elde edildikten sonra kodu çözülecektir. temel 64 biçimi .

Kodu Lambda Fonksiyonuna yapıştırdıktan sonra “ Dağıtmak Değişiklikleri kaydetmek ve uygulamak için ”düğmesi:

Adım 5: Kodu Test Etme

Blogun bu bölümünde kodun çalışıp çalışmadığını doğrulayacağız. Bu amaçla “ Ölçek Değişiklikleri Lambda İşlevine başarıyla dağıttıktan sonra 'düğmesine basın:

Bir sonraki arayüzde şunları sağlayın: testin adı olaydaki 'Etkinlik adı' alan:

Aşağıya doğru kaydırın Etkinlik JSON bölümü , “ çevre ” tuşuna basın ve değeri JSON formatında sağlayın. “ değer 'anahtarın kendisine iletileceği '%S' . Belirttiğimiz sırlar şunları içerdiğinden “ geliştirici ” değeri, “ geliştirici ” değeri “'ye iletilir çevre ”değişken. Lambda işlevi, kod yürütüldüğünde, belirli sırrın tanımlayıcısı kodda sağlandığı için sırrı tanımlayacaktır. Detayları belirledikten sonra “ Kaydetmek ' düğme:

Etkinlik başarıyla oluşturulduğunda “ Ölçek ' düğme:

Burada, elimizde başarıyla elde edildi belirttiğimiz sırrımızın değeri:

Bu rehberden hepsi bu.

Çözüm

Lambda'yı kullanarak Secret Manager'daki API anahtarlarına erişmek için öncelikle bir API Secret, IAM Politikası, Rol ve Lambda İşlevi oluşturun ve işlevin kodunu yürütün. Lambda işlevleri, kod yürütülürken sırrın tanımlayıcısı belirtilerek AWS Secret Manager'ın değerlerini elde etmek için çağrılabilir. Bu makalede, AWS Lambda kullanılarak AWS Secret Manager'daki API Anahtarlarına nasıl erişileceğine ilişkin adım adım yönergeler sağlanmaktadır.