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.
AuthType
Parameter 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
Topik
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)
-
Buka halaman Fungsi
di konsol Lambda. -
Pilih nama fungsi yang ingin Anda berikan izin pemanggilan URL.
-
Pilih tab Konfigurasi, lalu pilih Izin.
-
Di bawah Kebijakan berbasis sumber daya, pilih Tambahkan izin.
-
Pilih URL Fungsi.
-
Untuk jenis Auth, pilih AWS_IAM.
-
(Opsional) Untuk ID Pernyataan, masukkan ID pernyataan untuk pernyataan kebijakan Anda.
-
Untuk Principal, masukkan ID akun atau Nama Sumber Daya Amazon (ARN) pengguna atau peran yang ingin Anda berikan izin. Sebagai contoh:
444455556666
. -
Pilih Simpan.
Atau, Anda dapat membuat pernyataan kebijakan ini menggunakan perintah add-permission
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
FunctionUrlAuthType
Kunci 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" } } } ] }