

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
<a name="attribute-based-access-control-example"></a>

Langkah-langkah berikut menunjukkan salah 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 kepada pengguna tersebut untuk mengambil peran baru.

**Topics**
+ [

## Prasyarat
](#abac-prerequisites)
+ [

## Langkah 1: Memerlukan tag pada fungsi baru
](#require-tag-on-create)
+ [

## Langkah 2: Izinkan tindakan berdasarkan tag yang dilampirkan ke fungsi Lambda dan prinsip IAM
](#restrict-actions-function-tags)
+ [

## Langkah 3: Berikan izin daftar
](#abac-list-permissions)
+ [

## Langkah 4: Berikan izin IAM
](#abac-iam-permissions)
+ [

## Langkah 5: Buat peran IAM
](#abac-create-role)
+ [

## Langkah 6: Buat pengguna IAM
](#abac-create-user)
+ [

## Langkah 7: Uji izin
](#abac-test)
+ [

## Langkah 8: Bersihkan sumber daya Anda
](#abac-clean-up)

## Prasyarat
<a name="abac-prerequisites"></a>

Pastikan Anda memiliki peran [eksekusi Lambda](lambda-intro-execution-role.md). Anda akan menggunakan peran ini saat memberikan izin IAM dan saat membuat fungsi Lambda.

## Langkah 1: Memerlukan tag pada fungsi baru
<a name="require-tag-on-create"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) yang mirip dengan contoh berikut. Kebijakan ini menggunakan kunci TagKeys kondisi [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag), dan [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) untuk mengharuskan fungsi baru dan prinsipal IAM yang membuat fungsi keduanya memiliki tag. `project` `ForAllValues`Pengubah 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 lulus`project`.

**Example — Memerlukan tag pada fungsi baru**    
****  

```
{
    "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
<a name="restrict-actions-function-tags"></a>

Buat kebijakan IAM kedua menggunakan [ResourceTagkunci kondisi aws: /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) untuk meminta tag prinsipal agar sesuai dengan tag yang dilampirkan ke fungsi. Contoh kebijakan berikut memungkinkan prinsipal dengan `project` tag untuk memanggil fungsi dengan tag. `project` Jika suatu fungsi memiliki tag lain, tindakan ditolak.

**Example — Memerlukan tag yang cocok pada fungsi dan prinsip IAM**    
****  

```
{
    "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
<a name="abac-list-permissions"></a>

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.

**Example — Berikan izin daftar Lambda dan IAM**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "AllResourcesLambdaNoTags",
        "Effect": "Allow",
        "Action": [
          "lambda:GetAccountSettings",
          "lambda:ListFunctions",
          "iam:ListRoles"
        ],
        "Resource": "*"
      }
    ]
  }
```

## Langkah 4: Berikan izin IAM
<a name="abac-iam-permissions"></a>

Buat kebijakan yang memungkinkan **iam: PassRole**. Izin ini diperlukan saat Anda menetapkan peran eksekusi ke suatu 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) layanan. AWS 

**Example — Berikan izin untuk lulus peran eksekusi**    
****  

```
{
    "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
<a name="abac-create-role"></a>

Ini adalah praktik terbaik untuk [menggunakan peran untuk mendelegasikan izin](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#delegate-using-roles). [Buat peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) 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 di langkah sebelumnya.
+ Pada **Langkah 3: Nama, tinjau, dan buat**: Pilih **Tambahkan tag**. Untuk **Kunci**, masukkan `project`. Jangan masukkan **Nilai**.

## Langkah 6: Buat pengguna IAM
<a name="abac-create-user"></a>

[Buat pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) yang dipanggil`abac-test-user`. Di bagian **Setel izin**, pilih **Lampirkan kebijakan yang ada secara langsung**, lalu pilih **Buat kebijakan**. Masukkan definisi kebijakan berikut. Ganti *111122223333* dengan [ID AWS akun](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingYourAccountIdentifiers) Anda. Kebijakan ini memungkinkan `abac-test-user` untuk berasumsi`abac-project-role`.

**Example — 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
<a name="abac-test"></a>

1. Masuk ke AWS konsol sebagai`abac-test-user`. Untuk informasi selengkapnya, lihat [Masuk sebagai pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/console.html#user-sign-in-page).

1. Beralih ke peran `abac-project-role`. Untuk informasi selengkapnya, lihat [Beralih ke peran (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html).

1. [Buat fungsi Lambda](configuration-tags.md#using-tags-with-the-console):
   + Di bawah **Izin**, pilih **Ubah peran eksekusi default**, lalu untuk **peran Eksekusi**, pilih **Gunakan peran yang ada**. Pilih peran eksekusi yang sama dengan yang Anda gunakan[Langkah 4: Berikan izin IAM](#abac-iam-permissions).
   + Di bawah **Pengaturan lanjutan**, pilih **Aktifkan tag** dan kemudian pilih **Tambahkan tag baru**. Untuk **Kunci**, masukkan `project`. Jangan masukkan **Nilai**.

1. [Uji fungsinya](testing-functions.md).

1. Buat fungsi Lambda kedua dan tambahkan tag yang berbeda, seperti. `environment` Operasi ini akan gagal karena kebijakan ABAC yang Anda buat [Langkah 1: Memerlukan tag pada fungsi baru](#require-tag-on-create) hanya memungkinkan prinsipal untuk membuat fungsi dengan `project` tag.

1. Buat fungsi ketiga tanpa tag. Operasi ini akan gagal karena kebijakan ABAC yang Anda buat [Langkah 1: Memerlukan tag pada fungsi baru](#require-tag-on-create) tidak mengizinkan prinsipal untuk membuat fungsi tanpa tag.

Strategi otorisasi ini memungkinkan Anda untuk 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
<a name="abac-clean-up"></a>

**Untuk menghapus peran IAM**

1. Buka [halaman Peran](https://console.aws.amazon.com/iam/home#/roles) dari konsol IAM.

1. Pilih peran yang Anda buat di [langkah 5](#abac-create-role).

1. Pilih **Hapus**.

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

1. Pilih **Hapus**.

**Untuk menghapus pengguna IAM**

1. Buka [halaman Pengguna](https://console.aws.amazon.com/iam/home#/users) konsol IAM.

1. Pilih pengguna IAM yang Anda buat di [langkah 6](#abac-create-user).

1. Pilih **Hapus**.

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

1. Pilih **Hapus pengguna**.

**Untuk menghapus fungsi Lambda**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi yang Anda buat.

1. Pilih **Tindakan**, **Hapus**.

1. Ketik **confirm** kolom input teks dan pilih **Hapus**.