Kontrol akses ke fungsi Lambda URLs - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kontrol akses ke fungsi Lambda URLs

Anda dapat mengontrol akses ke fungsi Lambda URLs menggunakan AuthType parameter yang dikombinasikan dengan kebijakan berbasis sumber daya yang dilampirkan ke fungsi spesifik Anda. Konfigurasi kedua komponen ini menentukan siapa yang dapat memanggil atau melakukan tindakan administratif lainnya pada URL fungsi Anda.

AuthTypeParameter menentukan cara Lambda mengautentikasi atau mengotorisasi permintaan ke URL fungsi Anda. Saat Anda mengonfigurasi URL fungsi Anda, Anda harus menentukan salah satu AuthType opsi berikut:

  • AWS_IAM— Lambda menggunakan AWS Identity and Access Management (IAM) untuk mengautentikasi dan mengotorisasi permintaan berdasarkan kebijakan identitas kepala sekolah IAM dan kebijakan berbasis sumber daya fungsi. Pilih opsi ini jika Anda hanya ingin pengguna dan peran yang diautentikasi untuk memanggil fungsi Anda melalui URL fungsi.

  • NONE— Lambda tidak melakukan otentikasi apa pun sebelum menjalankan 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.

Selain ituAuthType, Anda juga dapat menggunakan kebijakan berbasis sumber daya untuk memberikan izin kepada orang lain Akun AWS untuk menjalankan fungsi Anda. Untuk informasi selengkapnya, lihat Melihat kebijakan IAM berbasis sumber daya di Lambda.

Untuk wawasan tambahan tentang keamanan, Anda dapat menggunakan AWS Identity and Access Management Access Analyzer untuk mendapatkan analisis komprehensif tentang 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. IAM Access Analyzer gratis digunakan untuk pelanggan mana pun AWS . 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 juga cara membuat kebijakan ini menggunakan AddPermissionoperasi API atau konsol Lambda. Untuk informasi tentang cara memanggil URL fungsi setelah menyiapkan izin, lihat. Memanggil fungsi Lambda URLs

Menggunakan tipe AWS_IAM autentikasi

Jika Anda memilih jenis AWS_IAM autentikasi, pengguna yang perlu memanggil URL fungsi Lambda Anda harus memiliki izin. lambda:InvokeFunctionUrl Bergantung pada siapa yang membuat permintaan pemanggilan, Anda mungkin harus memberikan izin ini menggunakan kebijakan berbasis sumber daya.

Jika prinsipal yang membuat permintaan Akun AWS sama dengan URL fungsi, maka prinsipal harus memiliki lambda:InvokeFunctionUrl 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 izin dalam kebijakan berbasis identitas mereka. Evaluasi kebijakan mengikuti aturan yang diuraikan dalam Menentukan apakah permintaan diizinkan atau ditolak dalam akun.

Jika prinsipal yang membuat permintaan berada di akun yang berbeda, maka prinsipal harus memiliki kebijakan berbasis identitas yang memberi mereka lambda:InvokeFunctionUrl izin dan izin yang diberikan kepada mereka dalam kebijakan berbasis sumber daya pada fungsi yang mereka coba panggil. Dalam kasus lintas akun ini, evaluasi kebijakan mengikuti aturan yang diuraikan dalam Menentukan apakah permintaan lintas akun diperbolehkan.

Sebagai contoh interaksi lintas akun, kebijakan berbasis sumber daya berikut memungkinkan example peran Akun AWS 444455556666 untuk memanggil URL fungsi yang terkait dengan fungsi: my-function

contoh fungsi URL kebijakan pemanggilan lintas akun
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

Anda dapat membuat pernyataan kebijakan ini melalui konsol dengan mengikuti langkah-langkah berikut:

Untuk memberikan izin pemanggilan URL ke akun lain (konsol)
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih nama fungsi yang ingin Anda berikan izin pemanggilan URL.

  3. Pilih tab Konfigurasi, lalu pilih Izin.

  4. Di bawah Kebijakan berbasis sumber daya, pilih Tambahkan izin.

  5. Pilih URL Fungsi.

  6. Untuk jenis Auth, pilih AWS_IAM.

  7. (Opsional) Untuk ID Pernyataan, masukkan ID pernyataan untuk pernyataan kebijakan Anda.

  8. Untuk Principal, masukkan ID akun atau Nama Sumber Daya Amazon (ARN) pengguna atau peran yang ingin Anda berikan izin. Sebagai contoh: 444455556666.

  9. Pilih Simpan.

Atau, Anda dapat membuat pernyataan kebijakan ini menggunakan perintah add-permission AWS Command Line Interface (AWS CLI) berikut:

aws lambda add-permission --function-name my-function \ --statement-id example0-cross-account-statement \ --action lambda:InvokeFunctionUrl \ --principal 444455556666 \ --function-url-auth-type AWS_IAM

Pada contoh sebelumnya, nilai kunci lambda:FunctionUrlAuthType kondisi adalahAWS_IAM. Kebijakan ini hanya mengizinkan akses jika jenis autentikasi URL fungsi Anda jugaAWS_IAM.

Menggunakan tipe NONE autentikasi

penting

Ketika jenis autentikasi URL fungsi Anda 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 NONE autentikasi, Lambda tidak menggunakan IAM untuk mengautentikasi permintaan ke URL fungsi Anda. Namun, pengguna masih harus memiliki lambda:InvokeFunctionUrl izin agar berhasil memanggil URL fungsi Anda. Anda dapat memberikan lambda:InvokeFunctionUrl izin menggunakan kebijakan berbasis sumber daya berikut:

contoh kebijakan pemanggilan URL fungsi untuk semua prinsip yang tidak diautentikasi
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } } ] }
catatan

Saat Anda membuat URL fungsi dengan jenis autentikasi NONE melalui konsol atau AWS Serverless Application Model (AWS SAM), Lambda secara otomatis membuat pernyataan kebijakan berbasis sumber daya sebelumnya untuk Anda. Jika kebijakan sudah ada, atau pengguna atau peran yang membuat aplikasi tidak memiliki izin yang sesuai, Lambda tidak akan membuatnya untuk Anda. Jika Anda menggunakan AWS CLI, AWS CloudFormation, atau Lambda API secara langsung, Anda harus menambahkan lambda:InvokeFunctionUrl izin sendiri. Ini membuat fungsi Anda publik.

Selain itu, jika Anda menghapus URL fungsi dengan jenis autentikasiNONE, Lambda tidak secara otomatis menghapus kebijakan berbasis sumber daya terkait. Jika Anda ingin menghapus kebijakan ini, Anda harus melakukannya secara manual.

Dalam pernyataan ini, nilai kunci lambda:FunctionUrlAuthType kondisi adalahNONE. Pernyataan kebijakan ini mengizinkan akses hanya jika jenis autentikasi URL fungsi Anda jugaNONE.

Jika kebijakan berbasis sumber daya fungsi tidak memberikan lambda:invokeFunctionUrl izin, pengguna akan mendapatkan kode kesalahan 403 Forbidden saat mereka mencoba memanggil URL fungsi Anda, meskipun URL fungsi menggunakan jenis autentikasi. NONE

Tata kelola dan kontrol akses

Selain izin pemanggilan URL fungsi, Anda juga dapat mengontrol akses pada tindakan yang digunakan untuk mengonfigurasi fungsi. URLs Lambda mendukung tindakan kebijakan IAM berikut untuk fungsi: URLs

  • lambda:InvokeFunctionUrl— Memanggil fungsi Lambda menggunakan URL fungsi.

  • lambda:CreateFunctionUrlConfig— Buat URL fungsi dan aturAuthType.

  • lambda:UpdateFunctionUrlConfig— Perbarui konfigurasi URL fungsi dan nyaAuthType.

  • lambda:GetFunctionUrlConfig— Lihat detail URL fungsi.

  • lambda:ListFunctionUrlConfigs— Daftar konfigurasi URL fungsi.

  • lambda:DeleteFunctionUrlConfig— Hapus URL fungsi.

catatan

Konsol Lambda mendukung penambahan izin hanya untuk. lambda:InvokeFunctionUrl Untuk semua tindakan lainnya, Anda harus menambahkan izin menggunakan Lambda API atau. AWS CLI

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 akun. 123456789012

contoh kebijakan URL fungsi lintas akun
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action": "lambda:UpdateFunctionUrlConfig", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }

Kunci syarat

Untuk kontrol akses berbutir halus atas fungsi Anda URLs, gunakan tombol kondisi. Lambda mendukung satu tombol kondisi tambahan untuk fungsi URLs:. FunctionUrlAuthType FunctionUrlAuthTypeKunci mendefinisikan nilai enum yang menjelaskan jenis autentikasi yang digunakan URL fungsi Anda. Nilai dapat berupa AWS_IAM atau NONE, salah satu.

Anda dapat menggunakan kunci kondisi ini dalam kebijakan yang terkait dengan fungsi Anda. Misalnya, Anda mungkin ingin membatasi siapa yang dapat membuat perubahan konfigurasi pada fungsi URLs Anda. Untuk menolak semua UpdateFunctionUrlConfig permintaan ke fungsi apa pun dengan jenis autentikasi URLNONE, Anda dapat menentukan kebijakan berikut:

contoh kebijakan URL fungsi dengan penolakan eksplisit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action":[ "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "NONE" } } } ] }

Untuk memberikan example peran dalam Akun AWS 444455556666 izin untuk membuat CreateFunctionUrlConfig dan UpdateFunctionUrlConfig permintaan pada fungsi dengan jenis autentikasi URLAWS_IAM, Anda dapat menentukan kebijakan berikut:

contoh kebijakan URL fungsi dengan izin eksplisit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/example" }, "Action":[ "lambda:CreateFunctionUrlConfig", "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:*", "Condition": { "StringEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }

Anda juga dapat menggunakan kunci kondisi ini dalam kebijakan kontrol layanan (SCP). Gunakan SCPs untuk mengelola izin di seluruh organisasi di AWS Organizations. Misalnya, untuk menolak pengguna membuat atau memperbarui fungsi URLs yang menggunakan apa pun selain jenis AWS_IAM autentikasi, gunakan kebijakan kontrol layanan berikut:

contoh fungsi URL SCP dengan penolakan eksplisit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action":[ "lambda:CreateFunctionUrlConfig", "lambda:UpdateFunctionUrlConfig" ], "Resource": "arn:aws:lambda:*:123456789012:function:*", "Condition": { "StringNotEquals": { "lambda:FunctionUrlAuthType": "AWS_IAM" } } } ] }