Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kontrol akses ke URL fungsi Lambda
catatan
Mulai Oktober 2025, URL fungsi baru akan memerlukan keduanya lambda:InvokeFunctionUrl dan lambda:InvokeFunction izin.
Anda dapat mengontrol akses ke URL fungsi Lambda menggunakan AuthType parameter yang dikombinasikan dengan kebijakan berbasis sumber daya yang dilamp irkan ke fungsi spesifik Anda. Konfigurasi kedua komponen ini menentukan siapa yang dapat memanggil atau melakukan tindakan administratif lainnya pada URL fungsi Anda.
AuthTypeParameter menentukan bagaimana Lambda mengotentikasi atau mengotorisasi permintaan ke URL fungsi Anda. Saat Anda mengonfigurasi URL fungsi Anda, Anda harus menentukan salah satu AuthType opsi berikut:
-
AWS_IAMLambda menggunakan AWS Identity and Access Management (IAM) untuk mengotentikasi dan mengotorisasi permintaan berdasarkan kebijakan identitas kepala sekolah IAM dan kebijakan berbasis sumber daya fungsi. Pilih opsi ini jika Anda ingin hanya pengguna dan peran yang diautentikasi untuk memanggil fungsi Anda menggunakan URL fungsi.
-
NONE- Lambda tidak melakukan otentikasi apa pun sebelum memanggil fungsi Anda. Namun, kebijakan berbasis sumber daya fungsi Anda selalu berlaku dan harus memberikan akses publik sebelum URL fungsi Anda dapat menerima permintaan. Pilih opsi ini untuk mengizinkan akses publik yang tidak diautentikasi ke URL fungsi Anda.
Untuk wawasan tambahan tentang keamanan, Anda dapat menggunakan AWS Identity and Access Management Access Analyzer untuk mendapatkan analisis komprehensif akses eksternal ke URL fungsi Anda. IAM Access Analyzer juga memantau izin baru atau yang diperbarui pada fungsi Lambda Anda untuk membantu Anda mengidentifikasi izin yang memberikan akses publik dan lintas akun. Anda dapat menggunakan IAM Access Analyzer tanpa biaya. Untuk memulai dengan IAM Access Analyzer, lihat Menggunakan AWS IAM Access Analyzer.
Halaman ini berisi contoh kebijakan berbasis sumber daya untuk kedua jenis autentikasi, dan cara membuat kebijakan ini menggunakan operasi AddPermission API atau konsol Lambda. Untuk informasi tentang cara memanggil URL fungsi Anda setelah Anda mengatur izin, lihatMemanggil URL fungsi Lambda.
Topik
Menggunakan tipe autentikasi AWS_IAM
Jika Anda memilih jenis AWS_IAM autentikasi, pengguna yang perlu memanggil URL fungsi Lambda Anda harus memiliki izin dan. lambda:InvokeFunctionUrl lambda:InvokeFunction Bergantung pada siapa yang membuat permintaan pemanggilan, Anda mungkin harus memberikan izin ini menggunakan kebijakan berbasis sumber daya.
Jika kepala sekolah yang membuat permintaan Akun AWS sama dengan URL fungsi, maka prinsipal harus memiliki lambda:InvokeFunctionUrl dan lambda:InvokeFunction izin dalam kebijakan berbasis identitas mereka, atau memiliki izin yang diberikan kepada mereka dalam kebijakan berbasis sumber daya fungsi. Dengan kata lain, kebijakan berbasis sumber daya bersifat opsional jika pengguna sudah memiliki lambda:InvokeFunctionUrl dan lambda:InvokeFunction izin dalam kebijakan berbasis identitas mereka. Evaluasi kebijakan mengikuti aturan yang diuraikan dalam logika evaluasi kebijakan.
Jika kepala sekolah yang membuat permintaan berada di akun yang berbeda, maka kepala sekolah harus memiliki kebijakan berbasis identitas yang memberikannya lambda:InvokeFunctionUrl dan lambda:InvokeFunction izin serta izin yang diberikan kepada mereka dalam kebijakan berbasis sumber daya pada fungsi yang mereka coba panggil. Evaluasi kebijakan mengikuti aturan yang diuraikan dalam Men entukan apakah permintaan lintas akun diperbolehkan.
Kebijakan berbasis sumber daya berikut memungkinkan example peran dalam Akun AWS 444455556666 untuk memanggil URL fungsi yang terkait dengan fungsi. my-function Tombol InvokedViaFunctionUrl konteks lambda: membatasi lambda:InvokeFunction tindakan untuk panggilan URL fungsi. Ini berarti bahwa prinsipal harus menggunakan URL fungsi untuk memanggil fungsi. Jika Anda tidak menyertakanlambda:InvokedViaFunctionUrl, kepala sekolah dapat memanggil fungsi Anda melalui metode pemanggilan lain, selain URL fungsi.
contoh— kebijakan Cross-account berbasis sumber daya
Anda dapat membuat kebijakan berbasis sumber daya ini melalui konsol menggunakan langkah-langkah berikut:
Untuk memberikan izin pemanggilan URL ke akun lain (konsol)
-
Buka halaman Fungsi
di konsol Lambda. -
Pilih nama fungsi yang ingin Anda berikan izin pemanggilan URL.
-
Pilih tab Konfigurasi, lalu pilih Izin.
-
Di bawah Resource-based kebijakan, pilih Tambah izin.
-
Pilih URL Fungsi.
-
Untuk jenis Auth, pilih AW S_IAM.
-
Masukkan ID Pernyataan untuk pernyataan kebijakan Anda.
-
Untuk Principal, masukkan ID akun atau Nama Sumber Daya Amazon (ARN) dari pengguna atau peran yang ingin Anda berikan izin. Sebagai contoh:
444455556666. -
Pilih Simpan.
Atau, Anda dapat membuat kebijakan ini menggunakan perintah add-permissions lambda:InvokeFunction pernyataan lambda:InvokeFunctionUrl dan secara terpisah. Contoh:
aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeURL \ --actionlambda:InvokeFunctionUrl\ --principal 444455556666 \ --function-url-auth-type AWS_IAM
aws lambda add-permission --function-name my-function \ --statement-id UrlPolicyInvokeFunction \ --actionlambda:InvokeFunction\ --principal 444455556666 \ --invoked-via-function-url
Menggunakan tipe autenti kasi NONE
penting
Jika jenis autentikasi URL fungsi Anda adalah NONE dan Anda memiliki kebijakan berbasis sumber daya yang memberikan akses publik, setiap pengguna yang tidak diautentikasi dengan URL fungsi Anda dapat memanggil fungsi Anda.
Dalam beberapa kasus, Anda mungkin ingin URL fungsi Anda menjadi publik. Misalnya, Anda mungkin ingin menyajikan permintaan yang dibuat langsung dari browser web. Untuk mengizinkan akses publik ke URL fungsi Anda, pilih jenis NONE autentikasi.
Jika Anda memilih jenis autentikasi, Lambda tidak menggunakan IAM untuk mengotentikasi permintaan ke URL fungsi Anda. NONE Namun, fungsi Anda harus memiliki kebijakan berbasis sumber daya yang memungkinkan lambda:InvokeFunctionUrl dan. lambda:InvokeFunction Saat Anda membuat URL fungsi dengan jenis autentikasi NONE menggunakan konsol atau AWS Serverless Application Model (AWS SAM), Lambda secara otomatis membuat kebijakan berbasis sumber daya untuk Anda. Jika Anda menggunakan AWS CLI, AWS CloudFormation, atau Lambda API secara langsung, Anda harus menambahkan kebijakan sendiri.
Sebaiknya sertakan kunci InvokedViaFunctionUrl konteks lambda: dalam kebijakan berbasis sumber daya saat menggunakan jenis autentikasi. NONE Kunci konteks ini memastikan bahwa fungsi hanya dapat dipanggil melalui URL fungsi dan tidak melalui metode pemanggilan lainnya.
Perhatikan hal-hal berikut tentang kebijakan ini:
-
Semua entitas dapat menelep
lambda:InvokeFunctionUrlon danlambda:InvokeFunction. Ini berarti bahwa siapa pun yang memiliki URL fungsi Anda dapat memanggil fungsi Anda. -
Nilai kunci
lambda:FunctionUrlAuthTypekondisi adalahNONE. Ini berarti pernyataan kebijakan mengizinkan akses hanya jika jenis autentikasi URL fungsi Anda jugaNONEdemikian. -
lambda:InvokedViaFunctionUrlKondisi memastikan bahwa fungsi hanya dapat dipanggil melalui URL fungsi dan tidak melalui metode pemanggilan lainnya.
contoh— Kebijakan berbasis sumber daya default untuk tipe autentikasi NONE
Buat kebijakan berbasis sumber daya menggunakan AWS CLI
Kecuali Anda menggunakan konsol atau AWS SAM untuk membuat URL fungsi dengan jenis autentikasiNONE, Anda harus menambahkan sendiri kebijakan berbasis sumber daya. Gunakan perintah berikut untuk membuat pernyataan untuk lambda:InvokeFunctionUrl dan lambda:InvokeFunction izin. Setiap pernyataan harus ditambahkan dalam perintah terpisah.
aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeURL \ --actionlambda:InvokeFunctionUrl\ --principal * \ --function-url-auth-type NONE
aws lambda add-permission \ --function-name UrlTestFunction \ --statement-id UrlPolicyInvokeFunction \ --actionlambda:InvokeFunction\ --principal * \ --invoked-via-function-url
catatan
Jika Anda menghapus URL fungsi dengan jenis autentikasiNONE, Lambda tidak akan menghapus kebijakan berbasis sumber daya terkait secara otomatis. Jika ingin menghapus kebijakan ini, Anda harus melakukannya secara manual.
Jika kebijakan berbasis sumber daya fungsi tidak memberikan lambda:InvokeFunction izin, pengguna mendapatkan kode kesalahan 403 Terlarang saat mereka mencoba memanggil URL fungsi Anda. lambda:invokeFunctionUrl Ini terjadi bahkan jika URL fungsi menggunakan jenis NONE autentikasi.
Tata kelola dan kontrol akses
Selain izin pemanggilan URL fungsi, Anda juga dapat mengontrol akses pada tindakan yang digunakan untuk mengonfigurasi URL fungsi. Lambda mendukung tindakan kebijakan IAM berikut untuk URL fungsi:
-
lambda:InvokeFunctionUrl— Memanggil fungsi Lambda menggunakan fungsi URL. -
lambda:CreateFunctionUrlConfig— Buat URL fungsi dan aturAuthType. -
lambda:UpdateFunctionUrlConfig— Perbarui konfigurasi URL fungsi dan ituAuthType. -
lambda:GetFunctionUrlConfig— Lihat detail URL fungsi. -
lambda:ListFunctionUrlConfigs— Daftar fungsi konfigurasi URL. -
lambda:DeleteFunctionUrlConfig— Hapus URL fungsi.
Untuk mengizinkan atau menolak akses URL fungsi ke AWS entitas lain, sertakan tindakan ini dalam kebijakan IAM. Misalnya, kebijakan berikut memberikan example peran dalam Akun AWS
444455556666 izin untuk memperbarui URL fungsi untuk fungsi my-function di akun123456789012.
contoh kebijakan URL fungsi lintas akun
Kunci syarat
Untuk kontrol akses yang halus atas URL fungsi Anda, gunakan kunci konteks kondisi. Lambda mendukung kunci konteks berikut untuk URL fungsi:
-
lambda:FunctionUrlAuthType— Mendefinisikan nilai enum yang menjelaskan jenis autentikasi yang digunakan URL fungsi Anda. Nilai dapat berupaAWS_IAMatauNONE, salah satu. -
lambda:InvokedViaFunctionUrl— Membatasilambda:InvokeFunctiontindakan untuk panggilan yang dilakukan melalui URL fungsi. Ini memastikan bahwa fungsi hanya dapat dipanggil menggunakan URL fungsi dan tidak melalui metode pemanggilan lainnya. Untuk contoh kebijakan berbasis sumber daya yang menggunakan kuncilambda:InvokedViaFunctionUrlkonteks, lihat contoh di Menggunakan tipe autentikasi AWS_IAM dan. Menggunakan tipe autenti kasi NONE
Anda dapat menggunakan kunci konteks ini dalam kebijakan yang terkait dengan fungsi Anda. Misalnya, Anda mungkin ingin membatasi siapa yang dapat membuat perubahan konfigurasi pada URL fungsi Anda. Untuk menolak semua UpdateFunctionUrlConfig permintaan ke fungsi apa pun dengan jenis autentikasi URLNONE, Anda dapat menentukan kebijakan berikut:
contoh fungsi kebijakan URL dengan penolakan eksplisit
Untuk memberikan example peran dalam Akun AWS 444455556666 izin untuk membuat CreateFunctionUrlConfig dan UpdateFunctionUrlConfig meminta pada fungsi dengan jenis autentikasi URLAWS_IAM, Anda dapat menentukan kebijakan berikut:
contoh fungsi kebijakan URL dengan izin eksplisit
Anda juga dapat menggunakan kunci kondisi ini dalam kebijakan kontrol layanan (SCP). Gunakan SCP untuk mengelola izin di seluruh organisasi di AWS Organizations. Misalnya, untuk menolak pengguna membuat atau memperbarui URL fungsi yang menggunakan apa pun selain jenis AWS_IAM autentikasi, gunakan kebijakan kontrol layanan berikut: