View a markdown version of this page

Amankan fungsi Anda dengan tag - AWS Lambda

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

Amankan fungsi Anda dengan tag

Langkah-langkah berikut menunjukkan satu cara untuk mengatur izin untuk fungsi menggunakan ABAC. Dalam skenario contoh ini, Anda akan membuat empat kebijakan izin IAM. Kemudian, Anda akan melampirkan kebijakan ini ke peran IAM baru. Terakhir, Anda akan membuat pengguna IAM dan memberikan izin pengguna tersebut untuk mengambil peran baru.

Prasyarat

Pastikan Anda memiliki peran eksekusi Lambda. Anda akan menggunakan peran ini saat Anda memberikan izin IAM dan saat Anda membuat fungsi Lambda.

Langkah 1: Memerlukan tag pada fungsi baru

Saat menggunakan ABAC dengan Lambda, ini adalah praktik terbaik untuk mengharuskan semua fungsi memiliki tag. Ini membantu memastikan bahwa kebijakan izin ABAC Anda berfungsi seperti yang diharapkan.

Buat kebijakan IAM yang mirip dengan contoh berikut. Kebijakan ini menggunakan kunci TagKeys kondisi aws: RequestTag/tag-key, aws: ResourceTag/tag-key, dan aws: untuk mengharuskan fungsi baru dan prinsipal IAM yang membuat fungsi keduanya memiliki project tag. Peng ForAllValues ubah memastikan bahwa itu project adalah satu-satunya tag yang diizinkan. Jika Anda tidak menyertakan ForAllValues pengubah, pengguna dapat menambahkan tag lain ke fungsi selama mereka juga lulusproject.

contoh— Memerlukan tag pada fungsi baru
JSON
{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:TagResource" ], "Resource": "arn:aws:lambda:*:*:function:*", "Condition": { "StringEquals": { "aws:RequestTag/project": "${aws:PrincipalTag/project}", "aws:ResourceTag/project": "${aws:PrincipalTag/project}" }, "ForAllValues:StringEquals": { "aws:TagKeys": "project" } } } }

Langkah 2: Izinkan tindakan berdasarkan tag yang dilampirkan ke fungsi Lambda dan prinsip IAM

Buat kebijakan IAM kedua menggunakan kunci ResourceTag/tag-key kondisi aws: untuk mewajibkan tag kepala sekolah agar cocok dengan tag yang dilampirkan ke fungsi. Kebijakan contoh berikut memungkinkan prinsipal dengan project tag untuk memanggil fungsi dengan tag. project Jika fungsi memiliki tag lain, tindakan ditolak.

contoh— Memerlukan tag yang cocok pada fungsi dan prinsip IAM
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:*:function:*", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" } } } ] }

Langkah 3: Berikan izin daftar

Buat kebijakan yang memungkinkan prinsipal untuk mencantumkan fungsi Lambda dan peran IAM. Hal ini memungkinkan prinsipal untuk melihat semua fungsi Lambda dan peran IAM di konsol dan saat memanggil tindakan API.

contoh— Berikan izin daftar Lambda dan IAM
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllResourcesLambdaNoTags", "Effect": "Allow", "Action": [ "lambda:GetAccountSettings", "lambda:ListFunctions", "iam:ListRoles" ], "Resource": "*" } ] }

Langkah 4: Berikan izin IAM

Buat kebijakan yang memungkinkan iam: PassRole. Izin ini diperlukan saat Anda menetapkan peran eksekusi ke fungsi. Dalam contoh kebijakan berikut, ganti contoh ARN dengan ARN peran eksekusi Lambda Anda.

catatan

Jangan menggunakan kunci ketentuan ResourceTag dalam sebuah kebijakan dengan tindakan iam:PassRole. Anda tidak dapat menggunakan tag pada peran IAM untuk mengontrol akses ke siapa yang dapat memberikan peran tersebut. Untuk informasi selengkapnya tentang izin yang diperlukan untuk meneruskan peran ke layanan, lihat Memberikan izin pengguna untuk meneruskan peran ke AWS layanan.

contoh— Berikan izin untuk melewati peran eksekusi
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::111122223333:role/lambda-ex" } ] }

Langkah 5: Buat peran IAM

Ini adalah praktik terbaik untuk menggunakan peran untuk mendelegasikan izin. Buat peran IAM yang disebut: abac-project-role

  • Pada Langkah 1: Pilih entitas tepercaya: Pilih AWS akun dan kemudian pilih Akun ini.

  • Pada Langkah 2: Tambahkan izin: Lampirkan empat kebijakan IAM yang Anda buat pada langkah sebelumnya.

  • Pada Langkah 3: Nama, tinjau, dan buat: Pilih Tam bah tag. Untuk Kunci, masukkan project. Jangan masukkan Nilai.

Langkah 6: Buat pengguna IAM

Buat pengguna IAM yang dipang gilabac-test-user. Di bagian Tetapkan izin, pilih Lamp irkan kebijakan yang ada secara langsung, lalu pilih Buat kebijakan. Masukkan definisi kebijakan berikut. Ganti 111122223333 dengan ID AWS akun Anda. Kebijakan ini memungkinkan abac-test-user untuk berasumsiabac-project-role.

contoh— Izinkan pengguna IAM untuk mengambil peran ABAC
JSON
{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/abac-project-role" } }

Langkah 7: Uji izin

  1. Masuk ke AWS konsol sebagaiabac-test-user. Untuk informasi selengkapnya, lihat Masuk sebagai pengguna IAM.

  2. Beralih ke peran abac-project-role. Untuk informasi selengkapnya, lihat Ber alih ke peran (konsol).

  3. Buat fungsi Lambda:

    • Di bawah Iz in, pilih U bah peran eksekusi default, lalu untuk Peran eksekusi, pilih Gunakan peran yang ada. Pilih peran eksekusi yang sama dengan yang Anda gunakanLangkah 4: Berikan izin IAM.

    • Di bawah Pengaturan lanj utan, pilih Aktif kan tag, lalu pilih Tambahkan tag baru. Untuk Kunci, masukkan project. Jangan masukkan Nilai.

  4. Uji fungsinya.

  5. Buat fungsi Lambda kedua dan tambahkan tag yang berbeda, sepertienvironment. Operasi ini seharusnya gagal karena kebijakan ABAC yang Anda buat Langkah 1: Memerlukan tag pada fungsi baru hanya mengizinkan prinsipal untuk membuat fungsi dengan project tag.

  6. Buat fungsi ketiga tanpa tag. Operasi ini seharusnya gagal karena kebijakan ABAC yang Anda buat Langkah 1: Memerlukan tag pada fungsi baru tidak mengizinkan prinsipal untuk membuat fungsi tanpa tag.

Dengan strategi otorisasi ini, Anda dapat mengontrol akses tanpa membuat kebijakan baru untuk setiap pengguna baru. Untuk memberikan akses ke pengguna baru, cukup beri mereka izin untuk mengambil peran yang sesuai dengan proyek yang ditugaskan.

Langkah 8: Bersihkan sumber daya Anda

Untuk menghapus peran IAM
  1. Buka halaman Peran dari konsol IAM.

  2. Pilih peran yang Anda buat di langkah 5.

  3. Pilih Hapus.

  4. Untuk mengonfirmasi penghapusan, masukkan nama peran di bidang input teks.

  5. Pilih Hapus.

Untuk menghapus pengguna IAM
  1. Buka halaman https://console.aws.amazon.com/iam/home#/users Pengguna konsol IAM.

  2. Pilih pengguna IAM yang Anda buat pada langkah 6.

  3. Pilih Hapus.

  4. Untuk mengonfirmasi penghapusan, masukkan nama pengguna di bidang input teks.

  5. Pilih Hapus pengguna.

Untuk menghapus fungsi Lambda
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang Anda buat.

  3. Pilih Tindakan, Hapus.

  4. Ketik confirm di bidang input teks dan pilih H apus.