Bagaimana Cara Mengakses Rahasia API Menggunakan AWS Lambda?

Bagaimana Cara Mengakses Rahasia Api Menggunakan Aws Lambda



Praktik terbaik Layanan AWS melibatkan dua tindakan yaitu Store-Retrieve, dan Audit-Rotate. Menggabungkan dua praktik ini menjadi satu, AWS telah meluncurkan Secret Manager yang membantu pengguna melindungi informasi rahasia aplikasi mereka. AWS Secret Manager banyak digunakan untuk membuat, menyimpan , memodifikasi , mereplikasi , dan merotasi kredensial basis data, Kunci API, token OAuth, dll.

Garis Besar Singkat

Artikel ini mencakup aspek-aspek berikut:

Apa itu AWS Lambda?

AWS Lambda adalah layanan komputasi untuk mengeksekusi kode di berbagai lingkungan dan bahasa tanpa menyediakan dan mengelola server. Selain itu, AWS Lambda dapat dipicu oleh beberapa layanan AWS yang berbeda seperti bucket S3, API Gateway, dll. Layanan ini secara otomatis menskalakan aplikasi dan mengeksekusi kode secara efisien tanpa mengharuskan pengguna menginstal dependensi tambahan apa pun.







Untuk mempelajari lebih lanjut tentang layanan Lambda, lihat artikel ini di sini: “Memulai Dengan AWS Lambda” .



Apa itu Manajer Rahasia AWS?

AWS Secret Manager memungkinkan pengguna untuk mengamankan dan mengenkripsi informasi rahasia aplikasi seperti token OAuth, kredensial basis data, API, dll. Informasi rahasia ini disebut sebagai a 'rahasia' . Rahasia ini hanya dapat diakses oleh badan yang berwenang dan dapat dirotasi untuk meningkatkan keamanan.



Pelajari selengkapnya tentang menyimpan kredensial RDS di Secret Manager dengan merujuk ke artikel ini: “Bagaimana Cara Menyimpan Kredensial Amazon RDS Menggunakan Secret Manager?”





Bagaimana Cara Mengakses Rahasia API di AWS Menggunakan AWS Lambda?

Lambda menyediakan dukungan bawaan untuk beberapa layanan, misalnya. Bucket S3, API Gateway, dan Manajer Rahasia. Fungsi Lambda dapat digunakan untuk mendapatkan nilai rahasia yang dikonfigurasi. Dengan menggunakan rahasia API di AWS Lambda Functions, pengguna dapat berinteraksi dengan beberapa layanan AWS. Rahasia API tersebut juga penting untuk mengotorisasi fungsi lambda.

Untuk mengakses Kunci API di AWS Secret Manager Menggunakan AWS Lambda, ikuti langkah-langkah yang disebutkan di bawah ini:



  • Langkah 1: Buat Rahasia API
  • Langkah 2: Buat Kebijakan IAM
  • Langkah 3: Buat Peran IAM
  • Langkah 4: Buat Peran Lambda

Langkah 1: Buat Rahasia API

Sebelum mengakses kunci API di AWS Secret Manager, kita akan mempelajarinya terlebih dahulu membuat rahasia API . Untuk tujuan ini, akses “Manajer Rahasia” layanan dari Konsol Manajemen AWS:

Di Konsol Utama dari AWS Secret Manager, klik pada “Simpan rahasia baru” tombol:

Dalam “Tipe rahasia” blok, pilih “Jenis rahasia lainnya” pilihan dari berbagai pilihan yang ditampilkan:

Gulir ke bawah ke “Pasangan kunci/nilai” bagian dan berikan a pasangan nilai kunci yang unik untuk rahasia API Anda. Ke menambahkan lagi pasangan nilai kunci , klik pada 'Menambahkan baris' tombol:

Berikutnya adalah 'Kunci enkripsi' bagian. AWS menyediakan a kunci enkripsi default untuk rahasianya. Namun, pengguna juga dapat memberikan nama khusus untuk kunci tersebut. Dengan mempertahankan default, klik pada “ Berikutnya ' tombol:

Pada antarmuka ini, pengguna harus menyediakan a nama yang unik untuk rahasia mereka dan a deskripsi yang merupakan opsional bidang di sini:

Dengan menjaga pengaturan tidak berubah , lanjutkan lebih jauh dengan mengklik “ Berikutnya ' tombol:

Berikutnya adalah Bagian ulasan. Untuk mengkonfirmasi semua informasi disediakan adalah benar , klik pada ' Toko tombol ” yang terletak di bagian bawah antarmuka:

Rahasianya telah terjadi berhasil dibuat . Klik pada ' Muat ulang tombol ” untuk menampilkan nama rahasia di Dasbor :

Langkah 2: Buat Kebijakan IAM

Ke membuat kebijakan IAM, mengakses layanan IAM dari AWS Management Console:

Dari bilah sisi IAM layanan, klik pada “ Kebijakan ' pilihan:

Di Konsol kebijakan , klik pada “Buat kebijakan” tombol:

Pelajari lebih lanjut tentang kebijakan AWS IAM dengan merujuk pada artikel ini: “Contoh Kebijakan AWS IAM”

Berikutnya adalah “Tentukan Izin” bagian. Cari dan pilih “Manajer Rahasia” melayani:

Gulir ke bawah ke “Tindakan Diizinkan” memblokir. Di sini, dari tingkat Akses yang berbeda, ketuk tombol “ Membaca ' pilihan. Pilih “Semua tindakan telah dibaca” pilihan untuk aktifkan semua Baca layanan untuk kebijakan ini:

Gulir ke bawah ke “ Sumber daya bagian ” dan klik pada “Tambahkan ARN” pilihan:

Arahkan kembali ke Dasbor AWS Secret Manager dan klik nama rahasianya. Salin “ RNA ” dari rahasia di bawah “ ARN Rahasia ” label dari antarmuka yang ditampilkan:

Di Konsol sekarang , tempelkan ARN yang disalin di “ RNA ' bidang:

Sebelum mengklik “Tambahkan ARN” tombol, klik pada 'Akun ini' tombol untuk mengonfirmasi rahasia yang ada di akun yang sama. Setelah mengonfigurasi pengaturan, klik “Tambahkan ARN” tombol:

Setelah mengkonfigurasi semua pengaturan kebijakan tersebut, klik pada “ Berikutnya ' tombol:

Dalam Bagian detail kebijakan , berikan nama kebijakan di kolom “ Nama kebijakan ' bidang:

Klik pada ' Buat kebijakan ' tombol:

Itu kebijakan telah dibuat berhasil :

Langkah 3: Buat Peran IAM

Di bagian ini, buat IAM role yang berisi izin yang diperlukan untuk fungsi Lambda untuk mengakses rahasia. Untuk tujuan ini, klik pada “ Peran ” dari sidebar IAM role lalu ketuk “Buat peran” tombol dari antarmuka:

Setelah mengklik “Buat peran” tombol, antarmuka berikut akan ditampilkan kepada Anda. Pilih “layanan AWS” opsi dari opsi berikut karena kami akan melampirkan ini peran IAM dengan fungsi lambda:

Dalam “Kasus penggunaan” bagian, cari Layanan Lambda dan pilih itu. Tekan tombol “ Berikutnya tombol ” di bagian bawah antarmuka untuk melangkah lebih jauh:

Di antarmuka berikutnya , cari nama tersebut Nama kebijakan yang telah kita konfigurasi sebelumnya. Dari hasil yang ditampilkan, pilih nama kebijakan:

Klik tombol “ Berikutnya tombol ” di bagian bawah antarmuka untuk melangkah lebih jauh:

Sediakan sebuah pengenal unik untuk Anda peran IAM di bidang yang disorot berikut ini:

Menjaga pengaturan lainnya sebagai default , klik pada “Buat peran” tombol dengan menggulir ke bawah ke bagian bawah antarmuka:

Perannya telah berhasil dibuat:

Untuk mempelajari lebih lanjut tentang Membuat IAM role di AWS, lihat artikel ini: “Cara Membuat Peran IAM di AWS” .

Langkah 4: Buat Fungsi Lambda

Langkah selanjutnya adalah Membuat Fungsi Lambda. Fungsi lambda ini akan berisi IAM role dan akan memperoleh nilai rahasia saat dijalankan. Untuk mengakses layanan Lambda, cari “ Lambda ” di bilah pencarian Konsol Manajemen AWS . Klik nama layanan dari hasil untuk mengunjungi konsol:

Pada antarmuka Awal Layanan Lambda, klik pada “Buat fungsi” tombol:

Ini akan menampilkan “Buat fungsi” antarmuka. Pilih “Penulis dari awal” pilihan dan lanjutkan lebih jauh dengan memberikan nama untuk Fungsi Lambda di bidang yang disorot:

Dalam Bidang waktu proses , pilih “ ular piton 3.9 ' lingkungan:

Dibawah Bagian Waktu Proses , ada sebuah “Ubah peran eksekusi default” bagian. Pilih “Gunakan peran yang ada” pilihan dan kemudian tentukan peran dalam “Peran yang ada” bidang:

Pada antarmuka yang sama, ketuk “Buat fungsi” tombol di bagian bawah antarmuka:

Untuk mempelajari selengkapnya tentang membuat Fungsi Lambda, lihat artikel ini: “Cara Membuat Fungsi Lambda Dengan Pyhton Runtime” .

Fungsi Lambda telah dibuat. Langkah selanjutnya adalah memberikan kode ke fungsi Lambda. Ketika kode ini dijalankan, ia akan menampilkan nilai-nilainya Manajer Rahasia:

impor json
impor boto3
impor base64
dari botocore. pengecualian impor Kesalahan Klien

def lambda_handler ( peristiwa , konteks ) :
lingkungan = peristiwa [ 'env' ]
nama_rahasia = 'shmaster19/%s/kunci' % lingkungan
nama_wilayah = 'ap-tenggara-1'

sidang = boto3. sidang . Sidang ( )
klien = sidang. klien (
Nama layanan = 'manajer rahasia' ,
nama_wilayah = nama_wilayah
)

mencoba :
respons_nilai_rahasia = klien. dapatkan_nilai_rahasia (
RahasiaId = nama_rahasia
)
kecuali ClientError sebagai kesalahan :
mencetak ( kesalahan )
kalau tidak :
jika 'String Rahasia' di dalam respons_nilai_rahasia :
rahasia = json. banyak ( respons_nilai_rahasia [ 'String Rahasia' ] )
kembali rahasia
kalau tidak :
decode_binary_secret = base64. b64decode ( rahasia_nilai_Respon [ 'Biner Rahasia' ] )
kembali decode_binary_secret
  • impor json: digunakan untuk melakukan operasi JSON.
  • impor boto3: adalah SDK untuk komunikasi antara AWS dan Python.
  • impor base64: Digunakan untuk melakukan fungsi pengkodean dan decoding pada data biner sebagai Base64.
  • impor Kesalahan Klien: Hal ini memungkinkan pengguna untuk menangani pengecualian dalam kode tertulis.
  • nama_rahasia: Dalam variabel ini, berikan nama rahasia Anda. Perhatikan bahwa rahasia ini berisi '%S' . Ini adalah saat pengguna memiliki beberapa kunci dengan format serupa. Misalnya, jika pengguna telah membuat dua rahasia, misalnya, “apikey/dev/kunci” Dan “apikey/prod/kunci” . Kemudian di '%S' , jika pengguna menyediakan “ dev ”, fungsi Lambda akan menyediakan kunci pengembangan (apikey/dev/key) dan sebaliknya.
  • boto. sesi.Sesi(): memungkinkan pengguna untuk membuat klien layanan dan tanggapan.
  • nama_wilayah: Berikan nama wilayah tempat rahasia AWS Anda dikonfigurasi.
  • Respons_nilai_rahasia: Dalam variabel ini, kami menggunakan “ klien.get_secret_value ” fungsi yang akan mengembalikan nilai rahasia.
  • Dekode_biner_secert: Setelah memperoleh nilai rahasianya, selanjutnya akan diuraikan menjadi format dasar 64 .

Setelah menempelkan kode di Fungsi Lambda, klik tombol “ Menyebarkan tombol ” untuk menyimpan dan menerapkan perubahan:

Langkah 5: Menguji Kode

Di bagian blog ini, kami akan memverifikasi apakah kode tersebut berfungsi atau tidak. Untuk tujuan ini, klik pada “ Tes ” setelah berhasil menerapkan perubahan pada Fungsi Lambda:

Pada antarmuka berikutnya, sediakan nama untuk pengujian acara di “Nama acara” bidang:

Gulir ke bawah ke Bagian JSON acara , tentukan “ env ” kuncinya, dan berikan nilai dalam format JSON. “ nilai ” dari kunci tersebut akan diteruskan ke '%S' . Sebagaimana rahasia-rahasia yang telah kami tentukan mengandung “ dev ” nilai, “ dev ” nilai diteruskan ke “ env ' variabel. Fungsi Lambda akan mengidentifikasi rahasia ketika kode dijalankan karena pengidentifikasi rahasia spesifik disediakan dalam kode. Setelah menentukan detailnya, klik tombol “ Menyimpan ' tombol:

Ketika acara berhasil dibuat, klik tombol “ Tes ' tombol:

Di sini, kita punya berhasil diperoleh nilai rahasia yang kami tentukan:

Sekian dari panduan ini.

Kesimpulan

Untuk mengakses kunci API di Secret Manager menggunakan Lambda, pertama-tama buat Rahasia API, Kebijakan IAM, Peran, dan Fungsi Lambda, lalu jalankan kode fungsi tersebut. Fungsi Lambda dapat dipanggil untuk mendapatkan nilai AWS Secret Manager dengan menentukan pengidentifikasi rahasia saat menjalankan kode. Artikel ini memberikan panduan langkah demi langkah tentang cara mengakses Kunci API di AWS Secret Manager menggunakan AWS Lambda.