

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

# Kontrol akses ke REST API dengan izin IAM
<a name="permissions"></a>

 Anda mengontrol akses ke Amazon API Gateway API dengan [izin IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html) dengan mengontrol akses ke dua proses komponen API Gateway berikut: 
+  Untuk membuat, menerapkan, dan mengelola API di API Gateway, Anda harus memberikan izin pengembang API untuk melakukan tindakan yang diperlukan yang didukung oleh komponen manajemen API API Gateway. 
+  Untuk memanggil API yang diterapkan atau menyegarkan cache API, Anda harus memberikan izin pemanggil API untuk melakukan tindakan IAM yang diperlukan yang didukung oleh komponen eksekusi API API Gateway. 

 Kontrol akses untuk dua proses melibatkan model izin yang berbeda, dijelaskan selanjutnya.

## Model izin API Gateway untuk membuat dan mengelola API
<a name="api-gateway-control-access-iam-permissions-model-for-managing-api"></a>

 [Untuk mengizinkan pengembang API membuat dan mengelola API di API Gateway, Anda harus [membuat kebijakan izin IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) yang memungkinkan pengembang API tertentu untuk membuat, memperbarui, menerapkan, melihat, atau menghapus entitas API yang diperlukan.](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html) Anda melampirkan kebijakan izin ke pengguna, peran, atau grup. 

Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:
+ Pengguna dan grup di AWS IAM Identity Center:

  Buat rangkaian izin. Ikuti instruksi di [Buat rangkaian izin](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) dalam *Panduan Pengguna AWS IAM Identity Center *.
+ Pengguna yang dikelola di IAM melalui penyedia identitas:

  Buat peran untuk federasi identitas. Ikuti instruksi dalam [Buat peran untuk penyedia identitas pihak ketiga (federasi)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dalam *Panduan Pengguna IAM*.
+ Pengguna IAM:
  + Buat peran yang dapat diambil pengguna Anda. Ikuti instruksi dalam [Buat peran untuk pengguna IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dalam *Panduan Pengguna IAM*.
  + (Tidak disarankan) Lampirkan kebijakan langsung ke pengguna atau tambahkan pengguna ke grup pengguna. Ikuti petunjuk dalam [Menambahkan izin ke pengguna (konsol)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) dalam *Panduan Pengguna IAM*.

Untuk informasi selengkapnya tentang cara menggunakan model izin ini, lihat[Kebijakan berbasis identitas API Gateway](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies). 

## Model izin API Gateway untuk menjalankan API
<a name="api-gateway-control-access-iam-permissions-model-for-calling-api"></a>

Untuk mengizinkan pemanggil API menjalankan API atau menyegarkan caching, Anda harus membuat kebijakan IAM yang mengizinkan pemanggil API tertentu untuk menjalankan metode API yang memungkinkan otentikasi pengguna diaktifkan. Pengembang API menetapkan `authorizationType` properti metode `AWS_IAM` agar pemanggil mengirimkan kredensi pengguna untuk diautentikasi. API Gateway mendukung Signature Version 4a (Sigv4a) dan Signature Version 4 (SigV4) untuk mengautentikasi kredensi pengguna. Untuk informasi selengkapnya, lihat [Versi AWS Tanda Tangan 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html). Kemudian, Anda melampirkan kebijakan ke pengguna, peran, atau grup. 

[Dalam pernyataan kebijakan izin IAM ini, `Resource` elemen IAM berisi daftar metode API yang diterapkan yang diidentifikasi oleh kata kerja HTTP dan jalur sumber daya API Gateway yang diberikan.](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html) `Action`Elemen IAM berisi tindakan eksekusi API Gateway API yang diperlukan. Tindakan ini mencakup `execute-api:Invoke` atau`execute-api:InvalidateCache`, di mana `execute-api` menunjuk komponen eksekusi API yang mendasari API Gateway. 

Untuk informasi selengkapnya tentang cara menggunakan model izin ini, lihat[Kontrol akses untuk menjalankan API](api-gateway-control-access-using-iam-policies-to-invoke-api.md). 

 Ketika API terintegrasi dengan AWS layanan (misalnya, AWS Lambda) di bagian belakang, API Gateway juga harus memiliki izin untuk mengakses AWS sumber daya terintegrasi (misalnya, menjalankan fungsi Lambda) atas nama pemanggil API. Untuk memberikan izin ini, buat peran IAM dari **AWS layanan untuk jenis API Gateway**. Saat Anda membuat peran ini di konsol Manajemen IAM, peran yang dihasilkan ini berisi kebijakan kepercayaan IAM berikut yang mendeklarasikan API Gateway sebagai entitas tepercaya yang diizinkan untuk mengambil peran: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Jika Anda membuat peran IAM dengan memanggil [perintah create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) CLI atau metode SDK yang sesuai, Anda harus memberikan kebijakan kepercayaan di atas sebagai parameter input. `assume-role-policy-document` Jangan mencoba membuat kebijakan semacam itu secara langsung di konsol Manajemen IAM atau memanggil perintah AWS CLI [create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) atau metode SDK yang sesuai.

Agar API Gateway memanggil AWS layanan terintegrasi, Anda juga harus melampirkan kebijakan izin IAM yang sesuai peran ini untuk memanggil layanan terintegrasi AWS . Misalnya, untuk memanggil fungsi Lambda, Anda harus menyertakan kebijakan izin IAM berikut dalam peran IAM: 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "*"
        }
    ]
}
```

------

Perhatikan bahwa Lambda mendukung kebijakan akses berbasis sumber daya, yang menggabungkan kebijakan kepercayaan dan izin. Saat mengintegrasikan API dengan fungsi Lambda menggunakan konsol API Gateway, Anda tidak diminta untuk menyetel peran IAM ini secara eksplisit, karena konsol menetapkan izin berbasis sumber daya pada fungsi Lambda untuk Anda, dengan persetujuan Anda. 

**catatan**  
 Untuk memberlakukan kontrol akses ke AWS layanan, Anda dapat menggunakan model izin berbasis pemanggil, di mana kebijakan izin langsung dilampirkan ke pengguna atau grup pemanggil, atau model izin berbasis peran, di mana kebijakan izin dilampirkan ke peran IAM yang dapat diasumsikan oleh API Gateway. Kebijakan izin mungkin berbeda dalam kedua model. Misalnya, kebijakan berbasis pemanggil memblokir akses sementara kebijakan berbasis peran mengizinkannya. Anda dapat memanfaatkan ini untuk mengharuskan pengguna mengakses AWS layanan hanya melalui API Gateway API. 

# Kontrol akses untuk menjalankan API
<a name="api-gateway-control-access-using-iam-policies-to-invoke-api"></a>

Di bagian ini, Anda mempelajari tentang model izin untuk mengontrol akses ke API Anda menggunakan izin IAM. Ketika otorisasi IAM diaktifkan, klien harus menggunakan Signature Version 4a (Sigv4a) dan Sigv4a Versi Tanda Tangan 4 (SigV4) untuk menandatangani permintaan mereka dengan kredensi. AWS Untuk informasi selengkapnya, lihat [Versi AWS Tanda Tangan 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html).

Pada bagian ini, kami menampilkan templat pernyataan kebijakan IAM dan referensi pernyataan kebijakan. Referensi pernyataan kebijakan mencakup format `Action` dan `Resource` bidang yang terkait dengan layanan eksekusi API. Gunakan referensi ini untuk membuat pernyataan kebijakan IAM Anda. Saat membuat pernyataan kebijakan IAM, Anda mungkin perlu mempertimbangkan bagaimana kebijakan sumber daya API Gateway memengaruhi alur kerja otorisasi. Untuk informasi selengkapnya, lihat [Bagaimana kebijakan sumber daya API Gateway memengaruhi alur kerja otorisasi](apigateway-authorization-flow.md).

Untuk pribadi APIs, Anda harus menggunakan kombinasi kebijakan sumber daya API Gateway dan kebijakan titik akhir VPC. Untuk informasi selengkapnya, lihat topik berikut:
+ [Kontrol akses ke REST API dengan kebijakan sumber daya API Gateway](apigateway-resource-policies.md)
+ [Menggunakan kebijakan titik akhir VPC secara pribadi APIs di API Gateway](apigateway-vpc-endpoint-policies.md)

## Kontrol siapa yang dapat memanggil metode API Gateway API dengan kebijakan IAM
<a name="api-gateway-who-can-invoke-an-api-method-using-iam-policies"></a>

 Untuk mengontrol siapa yang dapat atau tidak dapat memanggil API yang diterapkan dengan izin IAM, buat dokumen kebijakan IAM dengan izin yang diperlukan. Template untuk dokumen kebijakan semacam itu ditampilkan sebagai berikut. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Permission",
      "Action": [
        "execute-api:Execution-operation"           
      ],
      "Resource": [
        "arn:aws:execute-api:region:123456789012:api-id/stage/METHOD_HTTP_VERB/Resource-path"
      ]
    }
  ]
}
```

------

 Di sini, `Permission` akan diganti oleh `Allow` atau `Deny` tergantung pada apakah Anda ingin memberikan atau mencabut izin yang disertakan. `Execution-operation`akan digantikan oleh operasi yang didukung oleh layanan eksekusi API. `METHOD_HTTP_VERB`singkatan dari kata kerja HTTP yang didukung oleh sumber daya yang ditentukan. `Resource-path`adalah placeholder untuk jalur URL dari `[Resource](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html)` instance API yang diterapkan yang mendukung hal tersebut. `METHOD_HTTP_VERB` Untuk informasi selengkapnya, lihat [Referensi pernyataan kebijakan IAM untuk menjalankan API di API Gateway](#api-gateway-calling-api-permissions). 

**catatan**  
Agar kebijakan IAM efektif, Anda harus mengaktifkan autentikasi IAM pada metode API dengan menyetel properti `AWS_IAM` metode. `[authorizationType](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html#authorizationType)` Gagal melakukannya akan membuat metode API ini dapat diakses publik.

 Misalnya, untuk memberikan izin kepada pengguna untuk melihat daftar hewan peliharaan yang diekspos oleh API tertentu, tetapi untuk menolak izin pengguna untuk menambahkan hewan peliharaan ke daftar, Anda dapat menyertakan pernyataan berikut dalam kebijakan IAM: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"           
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:111111111111:api-id/*/GET/pets"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "execute-api:Invoke"           
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:111111111111:api-id/*/POST/pets"
      ]
    }
  ]
}
```

------

Untuk memberikan izin kepada pengguna untuk melihat hewan peliharaan tertentu yang diekspos oleh API yang dikonfigurasi sebagai`GET /pets/{petId}`, Anda dapat menyertakan pernyataan berikut dalam kebijakan IAM:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:us-east-1:111122223333:api-id/*/GET/pets/a1b2"
            ]
        }
    ]
}
```

------

## Referensi pernyataan kebijakan IAM untuk menjalankan API di API Gateway
<a name="api-gateway-calling-api-permissions"></a>

Informasi berikut menjelaskan format Action and Resource dari pernyataan kebijakan IAM tentang izin akses untuk menjalankan API.

### Format tindakan izin untuk menjalankan API di API Gateway
<a name="api-gateway-iam-policy-action-format-for-executing-api"></a>

`Action`Ekspresi pelaksana API memiliki format umum berikut:

```
execute-api:action
```

di *action* mana tindakan pelaksana API yang tersedia:
+ **\$1**, yang mewakili semua tindakan berikut.
+ **Invoke**, digunakan untuk memanggil API atas permintaan klien.
+ **InvalidateCache**, digunakan untuk membatalkan cache API atas permintaan klien.

### Format sumber daya izin untuk menjalankan API di API Gateway
<a name="api-gateway-iam-policy-resource-format-for-executing-api"></a>

`Resource`Ekspresi pelaksana API memiliki format umum berikut:

```
arn:aws:execute-api:region:account-id:api-id/stage-name/HTTP-VERB/resource-path-specifier
```

di mana:
+ *region*adalah AWS wilayah (seperti **us-east-1** atau **\$1** untuk semua AWS wilayah) yang sesuai dengan API yang diterapkan untuk metode tersebut.
+ *account-id*adalah Id AWS akun 12 digit dari pemilik REST API. 
+ *api-id*adalah pengidentifikasi API Gateway yang telah ditetapkan ke API untuk metode tersebut.
+ *stage-name*adalah nama tahap yang terkait dengan metode.
+ *HTTP-VERB*adalah kata kerja HTTP untuk metode ini. Ini bisa menjadi salah satu dari yang berikut: GET, POST, PUT, DELETE, PATCH.
+ *resource-path-specifier*adalah jalan menuju metode yang diinginkan.

**catatan**  
Jika Anda menentukan wildcard (`*`), `Resource` ekspresi akan menerapkan wildcard ke ekspresi lainnya.

Beberapa contoh ekspresi sumber daya meliputi:
+ **arn:aws:execute-api:\$1:\$1:\$1**untuk jalur sumber daya apa pun di tahap apa pun, untuk API apa pun di AWS wilayah mana pun.
+ **arn:aws:execute-api:us-east-1:\$1:\$1**untuk jalur sumber daya apa pun di tahap apa pun, untuk API apa pun di AWS wilayah`us-east-1`.
+ **arn:aws:execute-api:us-east-1:\$1:*api-id*/\$1**untuk jalur sumber daya apa pun di tahap apa pun, untuk API dengan pengenal *api-id* di AWS wilayah us-east-1.
+ **arn:aws:execute-api:us-east-1:\$1:*api-id*/`test`/\$1**untuk jalur sumber daya apa pun pada tahap`test`, untuk API dengan pengenal *api-id* di AWS wilayah us-east-1.

Untuk mempelajari selengkapnya, lihat [Referensi API Gateway Amazon Resource Name (ARN)](arn-format-reference.md).

# Contoh kebijakan IAM untuk izin eksekusi API
<a name="api-gateway-iam-policy-examples-for-api-execution"></a>

Untuk model izin dan informasi latar belakang lainnya, lihat[Kontrol akses untuk menjalankan API](api-gateway-control-access-using-iam-policies-to-invoke-api.md).

Pernyataan kebijakan berikut memberikan izin kepada pengguna untuk memanggil metode POST apa pun di sepanjang jalur`mydemoresource`, pada tahap`test`, untuk API dengan pengenal`a123456789`, dengan asumsi API yang sesuai telah diterapkan ke wilayah AWS us-east-1:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:*:a123456789/test/POST/my-demo-resource-path/*"
      ]
    }
  ]
}
```

------

Contoh pernyataan kebijakan berikut memberikan izin kepada pengguna untuk memanggil metode apa pun di jalur sumber daya`petstorewalkthrough/pets`, dalam tahap apa pun, untuk API dengan pengenal`a123456789`, di AWS wilayah mana pun di mana API terkait telah digunakan:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"
      ],
      "Resource": [
        "arn:aws:execute-api:*:*:a123456789/*/*/petstorewalkthrough/pets"
      ]
    }
  ]
}
```

------