View a markdown version of this page

Bekerja dengan kebijakan berbasis sumber daya di Lambda - AWS Lambda

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

Bekerja dengan kebijakan berbasis sumber daya di Lambda

Dengan kebijakan izin berbasis sumber daya, Anda dapat memberikan orang lain Akun AWS, pengguna, organisasi, dan Layanan AWS akses ke fungsi Lambda Anda. Kebijakan berbasis sumber daya adalah dokumen JSON yang berisi satu atau lebih pernyataan. Setiap pernyataan mendefinisikan sebagai berikut:

  • Principal: Entitas yang ingin Anda berikan izin kepada (yang lain Layanan AWS, peran atau pengguna IAM, atau lainnya Akun AWS)

  • Action: Daftar tindakan API yang ingin Anda izinkan atau tolak untuk prinsip yang ditentukan

  • Effect: Apakah Anda ingin mengizinkan atau menolak prinsipal kemampuan untuk menggunakan tindakan API yang dipilih

  • Resource: Fungsi, versi, atau alias Lambda yang ingin Anda terapkan pernyataan tersebut (Anda juga dapat menggunakan karakter wildcard untuk menentukan semua versi dan alias fungsi Anda)

Anda juga dapat menggunakan elemen opsional seperti Sid (pengidentifikasi pernyataan) dan Condition (kondisi logis untuk kontrol akses halus). Untuk daftar lengkap elemen kebijakan yang didukung, lihat referensi elemen kebijakan JSON IAM di Panduan AWS Identity and Access Management Pengguna.

Menambahkan izin berbasis sumber daya ke fungsi Lambda

Anda dapat menambahkan izin berbasis sumber daya ke fungsi Lambda menggunakan dua metode:

  • Kebijakan JSON lengkap — Gunakan konsol Lambda AWS CLI,, atau tindakan PutResourcePolicy API untuk menambahkan dokumen kebijakan JSON lengkap. Dengan kebijakan JSON lengkap, Anda dapat menggunakan rangkaian lengkap kunci kondisi global IAM, menambahkan beberapa pernyataan dengan beberapa prinsip, dan membuat pernyataan eksplisitDeny. Ukuran maksimum untuk kebijakan berbasis sumber daya JSON adalah 20 KB.

  • Izin individu — Gunakan tindakan konsol atau AddPermission API untuk menambahkan Allow pernyataan tunggal. Izin individu hanya mendukung kumpulan kunci kondisi terbatas (aws:SourceArn,aws:SourceAccount, danaws:PrincipalOrgID).

Sebaiknya tentukan kebijakan JSON lengkap untuk menambahkan izin berbasis sumber daya ke fungsi Anda. Membuat kebijakan JSON lengkap memberi Anda lebih banyak fleksibilitas dan kontrol halus atas izin Anda.

penting

Menggunakan put-resource-policy menggantikan kebijakan berbasis sumber daya yang ada pada sumber daya. Jika sumber daya sudah memiliki izin yang ditentukan denganadd-permission, tul put-resource-policy islah. Gunakan get-resource-policy untuk mengambil kebijakan yang ada sebelum membuat perubahan.

Izin yang diperlukan

Untuk menggunakan tindakanPutResourcePolicy,GetResourcePolicy, dan DeleteResourcePolicy API, Anda memerlukan izin IAM berikut:

Tindakan API Izin yang diperlukan
PutResourcePolicy lambda:PutResourcePolicy, lambda:AddPermission, dan lambda:RemovePermission
GetResourcePolicy lambda:GetResourcePolicy dan lambda:GetPolicy
DeleteResourcePolicy lambda:DeleteResourcePolicy dan lambda:RemovePermission
Console
Untuk membuat kebijakan berbasis sumber daya JSON lengkap
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang ingin Anda berikan akses dan kemudian pilih tab Konfigurasi.

  3. Pilih Izin.

  4. Di panel pernyataan Resource-based kebijakan, pilih Edit. Tindakan ini membuka editor kebijakan JSON.

  5. Tambahkan pernyataan ke kebijakan fungsi Anda. Anda dapat memilih tindakan API, menambahkan prinsipal dari berbagai jenis (layanan, akun, peran IAM), dan menambahkan kunci kondisi untuk mengontrol akses.

  6. Pilih Simpan.

Anda juga dapat mengedit kebijakan berbasis sumber daya fungsi secara langsung di panel Kebijakan.

AWS CLI
Untuk menambahkan kebijakan berbasis sumber daya JSON lengkap

Untuk menambahkan kebijakan JSON lengkap ke fungsi Anda, gunakan put-resource-policy AWS CLI perintah.

Perintah contoh berikut menambahkan kebijakan berbasis sumber daya ke fungsi Anda menggunakan kebijakan yang ditentukan dalam file bernama policy.json pada mesin lokal Anda. Jalankan perintah dari direktori yang berisi file. resource-arnDapat menentukan versi fungsi atau alias, atau Anda dapat menggunakan fungsi ARN yang tidak memenuhi syarat untuk menerapkan kebijakan ke seluruh fungsi.

aws lambda put-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json
Lambda APIs

Untuk menambahkan kebijakan izin JSON lengkap ke fungsi Anda, gunakan tindakan PutResourcePolicy API. Anda juga dapat menghapus kebijakan fungsi menggunakan DeleteResourcePolicy tindakan tersebut, atau mengambil kebijakan yang saat ini dilampirkan ke fungsi menggunakan GetResourcePolicy tindakan tersebut.

Untuk menambahkan izin individual ke kebijakan fungsi, gunakan tindakan AddPermission API.

Melihat kebijakan berbasis sumber daya fungsi

Console
Untuk menampilkan kebijakan fungsi berbasis sumber daya
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi.

  3. Pilih Konfigurasi, lalu pilih Izin.

  4. Gulir ke bawah ke pernyataan Resource-based kebijakan untuk melihat kebijakan.

AWS CLI

Untuk melihat kebijakan berbasis sumber daya dari fungsi, gunakan perintah get-resource-policy. Anda dapat menggunakan ARN fungsi yang tidak memenuhi syarat, atau menentukan versi atau alias.

aws lambda get-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function

Anda juga dapat menggunakan get-policy perintah:

aws lambda get-policy \ --function-name my-function \ --output text
Lambda APIs

Untuk mengambil kebijakan berbasis sumber daya fungsi, gunakan tindakan GetResourcePolicy API. Anda dapat menggunakan ARN fungsi yang tidak memenuhi syarat, atau menentukan versi atau alias ARN.

Anda juga dapat menggunakan tindakan GetPolicy API.

Menghapus kebijakan berbasis sumber daya fungsi

Console
Untuk menghapus kebijakan berbasis sumber daya fungsi
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang ingin Anda hapus kebijakan izin.

  3. Pilih tab Konfigurasi, lalu Izin.

  4. Di panel pernyataan Resource-based kebijakan, pilih H apus.

AWS CLI

Untuk menghapus kebijakan fungsi Anda, gunakan delete-resource-policy perintah dan tentukan ARN fungsi, versi, atau alias yang ingin Anda hapus kebijakan tersebut.

aws lambda delete-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function

Untuk menghapus pernyataan individu, gunakanremove-permission.

aws lambda remove-permission \ --function-name example \ --statement-id sns
Lambda APIs

Untuk menghapus kebijakan berbasis sumber daya yang dilampirkan ke fungsi, versi fungsi, atau alias fungsi, gunakan tindakan DeleteResourcePolicy API.

Untuk menghapus pernyataan individual dari kebijakan, gunakan tindakan RemovePermission API.

Memperbarui kebijakan yang ada

Saat Anda memperbarui izin berbasis sumber daya fungsi yang ada, perilaku tergantung pada metode yang Anda gunakan:

  • put-resource-policy/PutResourcePolicy- Mengganti seluruh kebijakan yang ada. Izin individu yang ditambahkan sebelumnya akan diganti.

  • add-permission/AddPermission— Menambahkan pernyataan ke kebijakan yang ada tanpa mengganti. Jika Anda memang add-permission gil set put-resource-policy elahnya, pernyataan baru ditambahkan ke kebijakan JSON yang ada.

Untuk menghindari penulisan izin yang ada secara tidak sengaja saat menggunakanput-resource-policy, ambil kebijakan fungsi yang ada terlebih dahulu. get-resource-policyOutputnya termasuk RevisionId bidang.

aws lambda get-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function

Saat Anda melampirkan kebijakan baru, berikan RevisionId nilai dengan --revision-id parameter untuk memastikan bahwa Anda memperbarui versi terbaru. Jika Anda memberikan ID revisi yang lebih lama, Lambda tidak memperbarui kebijakan fungsi Anda.

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json \ --revision-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
catatan

Kebijakan berbasis sumber daya yang ada yang dibuat dengan AddPermission terus bekerja tanpa modifikasi. Tidak ada perubahan pada kode fungsi Anda yang diperlukan untuk menggunakan PutResourcePolicy API baru.

Praktik terbaik keamanan

Dengan kebijakan berbasis sumber daya JSON, Anda dapat mengikuti pola akses hak istimewa terkecil. Anda juga dapat memenuhi persyaratan peraturan untuk penolakan eksplisit. Dengan kebijakan JSON lengkap, Anda dapat:

  • Buat Deny pernyataan eksplisit untuk memblokir prinsip-prinsip atau kondisi tertentu.

  • Gunakan kondisi organisasi (aws:PrincipalOrgID,aws:PrincipalOrgPaths) untuk membatasi akses ke Organisasi Anda tanpa menyebutkan akun individual.

  • Izin cakupan ke akun sumber tertentu atau ARN menggunakan berbagai kunci kondisi global IAM.

Contoh kebijakan berbasis sumber daya

contoh Memberikan izin ke Amazon S3 dengan pernyataan menolak

Kebijakan berikut memberikan izin kepada semua bucket Amazon S3 dalam akun untuk memanggil fungsi, kecuali untuk satu bucket yang ditolak secara eksplisit.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-s3", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } }, { "Sid": "deny-s3-bucket", "Effect": "Deny", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:111122223333:function:my-function", "arn:aws:lambda:us-east-2:111122223333:function:my-function:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } } } ] }
contoh Memberikan izin ke akun dalam organisasi

Hibah kebijakan berikut memanggil akses ke semua Akun AWS dalam suatu organisasi.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "org-access", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5f" } } } ] }
contoh Memberikan izin ke beberapa peran IAM dengan kondisi

Kebijakan berikut memberikan izin kepada dua peran IAM untuk menggunakan CreateAlias tindakan dari alamat IP tertentu.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-roles", "Effect": "Allow", "Action": "lambda:CreateAlias", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/role-name", "arn:aws:iam::444455556666:role/role-name2" ] }, "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "IpAddress": { "aws:SourceIp": "192.0.2.0" } } } ] }
contoh Menolak akses kecuali penelepon adalah bagian dari organisasi tertentu
{ "Version": "2012-10-17", "Statement": [ { "Sid": "deny-access", "Effect": "Deny", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "ForAllValues:StringNotLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*" ] } } }, { "Sid": "allow-access", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*" ] } } } ] }

Tindakan API yang didukung

Tindakan API Lambda berikut mendukung kebijakan berbasis sumber daya: